Apa yang dianggap sebagai modifikasi atau perubahan file?

16

Apakah penggantian nama file memengaruhi modifikasi atau waktu akses? Apakah ada daftar di suatu tempat tentang perubahan apa pada waktu itu?

Gilles 'SO- berhenti menjadi jahat'
sumber

Jawaban:

9

Mengganti nama memang memperbarui waktu Ubah:

$ mkdir tmp
$ cd tmp

$ echo abc > a
$ stat a
  File: `a'
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 26h/38d Inode: 5038682     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000 /  zelda   Gid: ( 1000/   zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:06:58.981107444 +0100
 Birth: -

$ mv a b
$ stat b
  File: `b'
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 26h/38d Inode: 5038682     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  zelda)   Gid: ( 1000/   zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:07:14.893238472 +0100
 Birth: -

Waktu akses diperbarui saat membaca konten file. Ubah ketika Anda benar-benar memperbarui file (membuka untuk modifikasi tidak cukup untuk mengubah Ubah waktu).

Zelda
sumber
Apakah menyalin dan menempelkan file mengubah waktu "modifikasinya" pada file baru? Apakah menggunakan Ctrl + X dan menempel mengubah waktu "ubah"?
1
Salinan membuat file baru dengan Ubah, Akses dan Ubah dengan nilai baru (semua sama). Menempelkan sesuatu di editor (dan kemudian menyimpan) memperbarui ketiganya (Ubah dengan stempel waktu yang lebih baru dari dua lainnya, tentu saja hanya setelah Anda simpan)
Zelda
Maksud saya menggunakan CTRL + x pada file dan CTRL + v di tempat lain.
Ini menggunakan alat baris perintah cpdan mv, dan viuntuk mengedit. Editor lain, atau desktop Anda mungkin menangani tugas secara berbeda, dan memiliki lebih banyak cap waktu diperbarui.
Zelda
Misalnya Nautilus tidak memperbarui Access dan Modify menggunakan Ctrl + X lalu Ctrl + V, hanya Ubah yang berbeda, sepertimv
Zelda
9

Modifikasi yang mempengaruhi mtime file adalah perubahan data file: penulisan jumlah byte yang tidak nol, atau pemotongan yang akhirnya memodifikasi file. Membuat file juga dapat mengatur waktu ke tanggal saat ini. Hanya membuka file untuk menulis tidak mempengaruhi waktu, dengan asumsi file tidak dibuat atau terpotong.

Membaca dari file (jika jumlah byte yang tidak dibaca dibaca) atau menjalankan file akan menetapkan atime ke waktu saat ini. Hanya membuka file untuk dibaca tidak pernah memengaruhi atime. Di Linux, ini sekarang dinonaktifkan secara default di sebagian besar keadaan; yang atimeme-mount option mengembalikan atime update, sementara noatimegunung Menonaktifkan pilihan mereka sepenuhnya.

Program dapat mengubah waktu dan waktu file; perintah dasar untuk melakukan ini adalah touch. Beberapa program salin file mengatur salinan ke waktu yang sama seperti aslinya, misalnya cp -patau rsync -t.

Perubahan yang mempengaruhi waktu file adalah perubahan metadata file: izin, pemilik, waktu, jumlah tautan, dll. Mengganti nama file juga memperbarui waktu. Perubahan data file juga mempengaruhi waktu, tetapi membaca dari file tidak mengubah waktu bahkan jika itu mengubah atime. Mustahil untuk mengubah waktu dengan cara apa pun selain mengaturnya ke waktu saat ini (bahkan root dibatasi, tetapi root dapat secara tidak langsung mengatur waktu dengan terlebih dahulu mengubah waktu sistem atau dengan mengakses partisi yang berisi sistem file secara langsung).

Gilles 'SO- berhenti menjadi jahat'
sumber
1

Pengamatan empiris tambahan yang tidak disebutkan oleh jawaban lain:

Membuka file untuk ditulis dengan O_TRUNCmengubah mtime bahkan jika file tersebut awalnya kosong.

Ini tampaknya menjadi kasus setidaknya pada ext3 di Linux 3.10.

Arseniy Alekseyev
sumber