Dosya değişikliği veya değişikliği olarak sayılan nedir?


Yanıtlar:


9

Yeniden adlandırma, Değiştirme zamanını güncellemez:

$ 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: -

Bir dosyanın içeriği okunurken Erişim süresi güncellenir. Dosyayı gerçekten güncellediğinizde değiştirin (değişiklik için açılma, Değiştirme zamanını değiştirmek için yeterli değildir).


Bir dosyanın kopyalanması ve yapıştırılması yeni dosyadaki "değiştirme" zamanını değiştirir mi? Ctrl + X ve yapıştırma kullanımı "değiştirme" süresini değiştirir mi?

1
Bir kopya, Değiştir, Erişim ve Değiştir ile yeni bir değerle (hepsi aynı) yeni bir dosya oluşturur. Bir düzenleyiciye yapıştırmak (ve sonra kaydetmek) üçünü de günceller (elbette yalnızca kaydettikten sonra diğer ikisinden daha geç bir zaman damgasıyla değiştirin)
Zelda

Dosyada CTRL + x ve başka bir yerde CTRL + v kullanmak istedim.

Bu, komut satırı araçlarını cpve mvve vidüzenlemek için kullanılır. Diğer düzenleyiciler veya masaüstünüz görevi farklı işleyebilir ve daha fazla zaman damgası güncellenebilir.
Zelda

Örneğin Nautilus, Ctrl + X sonra Ctrl + V kullanarak Access ve Modify'ı güncellemez, sadece Değişiklik farklıdır, örneğinmv
Zelda

9

Dosyanın çalışma süresini etkileyen bir değişiklik dosyanın verilerinin değiştirilmesidir: sıfır olmayan bir miktarda baytın yazılması veya dosyayı değiştiren bir kesme. Bir dosya oluşturmak, zamanını geçerli tarihe ayarlar. Yalnızca bir dosyayı yazmak için açmak, dosyanın oluşturulmadığını veya kesilmediğini varsayarak mtime'ı etkilemez.

Bir dosyadan okuma (sıfır olmayan sayıda bayt okunduysa) veya bir dosyayı yürütmek, zamanını geçerli saate ayarlar. Yalnızca bir dosyayı okumak üzere açmak, atime hiçbir zaman etki etmez. Linux'ta, bu artık çoğu durumda varsayılan olarak devre dışıdır; atimeise opsiyon geri yükleme, güncelleme atime monte noatimetamamen seçenek devre dışı bırakır onları monte edin.

Programlar bir dosyanın zamanını ve zamanını değiştirebilir; Bunu yapmak için temel komut touch. Bazı dosya kopyalama programları, kopyayı orijinaliyle aynı mtime değerine ayarlar, örneğin cp -pveya rsync -t.

Dosyanın saatini etkileyen bir değişiklik dosyanın meta verilerinin değişikliğidir: izinler, sahip, saatler, bağlantı sayısı, vb. Bir dosyanın yeniden adlandırılması ctime değerini de günceller. Dosya verilerindeki değişiklikler ctime'ı da etkiler, ancak dosyadan okumak, zaman değiştirse bile ctime'ı değiştirmez. Ctime değerini şimdiki zamana ayarlamak dışında herhangi bir şekilde değiştirmek imkansızdır (root bile sınırlıdır, ancak root ilk olarak sistem saatini değiştirerek veya dosya sistemini içeren bölüme doğrudan erişerek ctime değerini dolaylı olarak ayarlayabilir).


1

Diğer cevaplar tarafından belirtilmeyen ek bir ampirik gözlem:

Dosyayı yazmak O_TRUNCiçin açmak, dosya başlangıçta boş olsa bile mtime değerini değiştirir.

Bu en azından Linux 3.10'daki ext3 için geçerli.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.