Поиск по сайту:

Как отредактировать файл без изменения его временных меток в 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. .

Надеюсь это поможет.

Статьи по данной тематике