Как отредактировать файл без изменения его временных меток в Linux
Как вы, возможно, знаете, временные метки «время доступа» и «время изменения» файла будут изменены на текущее время после редактирования или изменения файла. Иногда по какой-либо причине вам может потребоваться сохранить старые временные метки даже после редактирования или изменения файлов. В этом кратком руководстве объясняется, как отредактировать файл без изменения его временных меток в Linux.
Если вы мало что знаете о временных метках файлов Linux, обратитесь к следующему руководству.
- Временные метки файлов Linux с примерами
Редактируйте файл без изменения его временных меток в Linux
Временные метки файла можно обновить с помощью команды touch
. Временные метки также обновляются, когда мы вручную добавляем содержимое в файл или удаляем из него данные. Если вы хотите изменить содержимое файлов, не меняя их временные метки, прямого способа сделать это нет. Но это возможно!
Мы можем использовать одну из опций команды touch
-r
(ссылка), чтобы сохранить временные метки файла после его редактирования или изменения. Опция -r
используется для установки временных меток одного файла в соответствии со значениями временных меток другого.
У меня есть текстовый файл с именем ostechnix.txt
. Давайте посмотрим на временные метки этого файла с помощью команды stat
:
stat ostechnix.txt
File: ostechnix.txt
Size: 38 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 4351679 Links: 1
Access: (0775/-rwxrwxr-x) Uid: ( 1000/ sk) Gid: ( 1000/ sk)
Access: 2020-11-12 19:47:55.992788870 +0530
Modify: 2020-11-12 19:47:55.992788870 +0530
Change: 2020-11-12 19:47:55.992788870 +0530
Birth: -
Как уже говорилось, если мы изменим содержимое или метаданные этого файла, временные метки также изменятся.
Теперь создайте новый пустой файл, например ostechnix.timestamp
, с теми же метками времени, что и у файла ostechnix.txt
, с помощью команды touch
:
touch -r ostechnix.txt ostechnix.timestamp
Проверьте временные метки нового файла:
stat ostechnix.timestamp
File: ostechnix.timestamp
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 801h/2049d Inode: 4328645 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ sk) Gid: ( 1000/ sk)
Access: 2020-11-12 19:47:55.992788870 +0530
Modify: 2020-11-12 19:47:55.992788870 +0530
Change: 2020-11-12 19:48:48.934235300 +0530
Birth: -
Редактируйте файл, не меняя его временную метку в Linux
Видеть? Временные метки atime и mtime обоих файлов одинаковы!
Теперь внесите изменения в основной файл, то есть ostechnix.txt
. Как вы догадались, временные метки основного файла изменятся.
Наконец, скопируйте временные метки нового файла, то есть ostechnix.timestamp
, в основной файл:
touch -r ostechnix.timestamp ostechnix.txt
Теперь у основного файла есть старые временные метки до того, как он был отредактирован/модифицирован.
Обратите внимание, что мы не можем сохранить временные метки времени изменения (ctime). Он всегда будет обновляться до текущего времени.
TL;DR
Создайте новый файл с теми же временными метками, что и у основного файла, с помощью команды touch
, внесите изменения в основной файл и установите временные метки нового файла в основной файл с помощью опции -r
. .
Надеюсь это поможет.