Jak to je ctime, mtime, atime v UNIXu

Začnu tím nejjednodušším: atime (access time) – čas posledního přístupu k souboru. Dost administrátorů však z důvodů výkonu filesystému modifikaci tohoto atributu vypíná, takže se na děj nedá moc spolehnout. Potom existuje mtime (modification time), což je datum poslední modifikace obsahu souboru. No a aby to nebylo jednoduché, přichází na scénu ctime (change time) – čas poslední modifikace informací v inodu (práva, vlastník, název, cesta a jiné).

Kdykoli se změní obsah souboru (mtime), je na stejný čas změněn i čas změny informací o souboru (ctime). Kdykoli změníte například práva, pak je zvýšen jen atribut ctime. Je to jednoduché, ale názvy atributů jsou trošku zavádějící. Všimněte si, že žádný atribut nevypovídá o tom, kdy byl soubor vytvořen. Dost často lidí má zafixováno, že ctime = creation time, dokonce to bylo v některých manuálových stránkách v Linuxu špatně.

Pokud například chcete zazálohovat přírůstkovou zálohou, musíte porovnávat ctime, protože pokud by někdo změnil práva souboru, musíte provést nové zálohování souboru samotného (obsah se sice nezměnil, ale práva ano). Příklad:

find /home -not -iregex '.*\.\(avi\|mpg\|mpeg\|wmv\|jpg\|jpeg\|bmp\|tif\|tiff\)' \
-cnewer /tmp/last_backup.timestamp | afio -o -Z -P lzop -Q -9 /var/backup.cpio


Pomocí nástroje touch můžete měnit atime a mtime, nikoli však ctime. V zásadě žádným unixovým příkazem nemůžete měnit ctime.


Tento zápisek vznikl převodem z mého starého blogu. Ne všechny texty byly takto převedeny, kompletní archiv již není k dispozici.
23 April 2010 | oldblog
twitter.com linkedin.com
google.com/+ facebook.com
flickr.com youtube.com