提取 .tgz 日志时保留时间戳

提取 .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

无法做到使用 GNU tar。但是,有一个鲜为人知的实用程序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选项可能会使 cron、新闻系统混乱,甚至会降低系统时钟。所以要小心一点!

参考:

  • star 的手册页:上述使用的所有选项的文档以及许多其他可用选项的演示。

相关内容