У Mac OS X, схоже, є чотири різні часові позначки, пов'язані з файлом. Ці мітки часу не завжди оновлюються незалежно один від одного, але один може мати деякий індивідуальний контроль з невеликою кількістю догляду та з використанням touch
, SetFile
і chown
(або chmod
). Щоб побачити це, давайте експериментуємо та створимо новий файл із командного рядка #
:
# touch a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt
Перша перерахована дата - це час останнього доступу ( atime
), друга - час останньої модифікації ( mtime
), третя - остання зміна статусу ( ctime
), четверта - час створення файлу (народження, Btime
), див man lstat
.
Щоб змінити час доступу ( atime
) до вказаного часу, використовуйте:
# touch -a -t201412312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "May 19 00:11:14 2015" "May 19 00:11:46 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt
Щоб змінити час модифікації ( mtime
) та час створення файлу ( Btime
) на вказаний час, використовуйте:
# touch -m -t201312312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 2013" 4096 0 0 a.txt
Мабуть, це також автоматично оновлює час останньої зміни статусу ( ctime
) до поточного системного часу!
Щоб змінити лише час створення / народження ( Btime
) до заданого часу, використовуйте (як запропоновано іншими вище):
# SetFile -d "12/31/1999 23:59:59" a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt
ctime
Наприклад, щоб змінити час останньої зміни статусу ( ) на поточний системний час, наприклад:
# chown username a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:13:45 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt
де username
власник файлу (як повідомляє stat
або ls -l
). Це не змінює право власності на файл, але отримує доступ до його inode і записує це як час останньої зміни статусу. На жаль, не вдається чітко вказати час тут, крім зміни часу комп'ютера ...
Підсумовуючи це, щоб мати можливість самостійно змінювати чотири часові позначки, ви можете використовувати (у цьому порядку для останніх 3):
touch -a -tCCYYMMDDHH.SS <file>
touch -m -tCCYYMMDDHH.SS <file>
SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
- [встановити дату системи]
chown username <file>
[повернутися до звичайної системної дати]
(Зрозуміло, перезавантаження системної дати може не бути безризиковою операцією, вас попередили.)