Сохранение меток времени при извлечении .tgz журналов

У меня есть несколько .tgz панических ядром журналов, которые я должен извлечь из одного файла. Метки времени для этих .tgz файлов важны. Каждый раз, когда я использую следующее: tar - zvxf paniclogs.tgz

-rwxrwxrwx 1 root root   22359 Feb 22 15:03 kernel-panic-20190213020406-3.tgz
-rwxrwxrwx 1 root root   22971 Feb 22 15:03 kernel-panic-20190213020844-2.tgz
-rwxrwxrwx 1 root root   28344 Feb 22 15:03 kernel-panic-20190213101549-1.tgz
-rwxrwxrwx 1 root root   30683 Feb 22 15:03 kernel-panic-20190213154050-0.tgz

Это извлекает журналы, но изменяет метки времени на дату и время, когда я извлек их. Дело обстоит не так, когда я использую Cygwin. Я знаю, что должен быть способ извлечь эти журналы и сохранить метки времени. Можно ли помочь?Спасибо.

1
задан 23 February 2019 в 01:06

1 ответ

Это не может быть сделано с tar GNU. Однако существует менее известная утилита star, разработанный Jörg Schilling, который выполнит точно, что Вы после. Я продемонстрирую, как это работает.

Сначала мы можем исследовать единственный файл в тесте tgz, архивируют и демонстрируют его метку времени, которую я выделил ниже, чтобы заставить терминал произвести совершенно ясный:

andrew@ilium$ tar -tv --full-time -f test.tgz mp3enc31/readme.txt
-rw-r--r-- sir/inel        937 1998-11-06 00:28:41 mp3enc31/readme.txt
                               ^^^^^^^^^^

Поскольку Вы нашли при извлечении этого файла обычным способом с tar время доступа (и время изменения) изменено. Снова я изменил терминальный вывод для легкого показа этого:

andrew@ilium~$ tar -xf test.tgz mp3enc31/readme.txt
andrew@ilium~$ stat mp3enc31/readme.txt 
  File: readme.txt
  Size: 937         Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 56885505    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  andrew)   Gid: (  100/   users)
Access: 2019-02-23 17:13:55.385500219 +1100     <--------------------
Modify: 1998-11-06 00:28:41.000000000 +1100
Change: 2019-02-23 17:13:55.385500219 +1100     <--------------------
 Birth: -
andrew@ilium~$ 

Однако, если мы используем star утилита как sudo, (обратите внимание, что sudo требуется для ctime модификации), Вы будете видеть, что все времена доступа сохраняются:

andrew@ilium~$ sudo star -xza -ctime < test.tgz mp3enc31/readme.txt
star: 62 blocks + 0 bytes (total of 634880 bytes = 620.00k).
andrew@ilium~$ stat mp3enc31/readme.txt 
  File: readme.txt
  Size: 937         Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 59377688    Links: 1
Access: (0644/-rw-r--r--)  Uid: (30076/ UNKNOWN)   Gid: (30000/ UNKNOWN)
Access: 1998-11-06 00:28:41.000000000 +1100     <--------------------
Modify: 1998-11-06 00:28:41.000000000 +1100
Change: 1998-11-06 00:28:41.000000000 +1100     <--------------------
 Birth: -
andrew@ilium~$

star страницы справочника советуют некоторой осторожности с -ctime опция, поскольку это может перепутать крон, систему новостей и даже замедлить системные часы. Поэтому просто будьте немного осторожны!

Ссылки:

0
ответ дан 7 December 2019 в 21:14

Другие вопросы по тегам:

Похожие вопросы: