如何验证已经写入的 tar 存档?

ces*_*oza 15 tar

我知道您可以在创建存档时执行 -W,但是您如何验证和已创建的存档?tvWf 说它不是有效的 tar 存档?

$ mkdir tmp
$ echo asdkfjh > tmp/a
$ echo qweroiu > tmp/b
$ ls
tmp
$ tar cvf archive.tar tmp
tmp/
tmp/a
tmp/b
$ tar tvWf archive.tar
tar: This does not look like a tar archive
tar: Skipping to next header
tar: VERIFY FAILURE: 1 invalid header detected
tar: Error exit delayed from previous errors
Run Code Online (Sandbox Code Playgroud)

同样的事情发生在 tar 1.15(这是 centos 5 的系统默认值)和 1.26(这是 gnu 的最新版本)。

小智 14

GNUtar有一个--compare选择。有关详细信息,请参阅文档的比较存档成员与文件系统部分。

  • 例如,`tar -df /path/to/archive.tar.bz2` 将显示存档和文件系统中的文件之间的差异,根据当前工作目录解析存档中的相对路径。 (5认同)

Eig*_*ony 8

你不能使用Wwith t

mkdir tmp
echo bdb > tmp/a
echo bdb > tmp/b

tar cvf archive.tar tmp
tmp/
tmp/a
tmp/b

ls -l archive.tar
-rw-r--r-- 1 tony tony 10240 Jun 23 05:57 archive.tar

tar tvf archive.tar
drwxr-sr-x tony/tony         0 2011-06-23 05:57 tmp/
-rw-r--r-- tony/tony         4 2011-06-23 05:57 tmp/a
-rw-r--r-- tony/tony         4 2011-06-23 05:57 tmp/b

tar tvWf archive.tar
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors
Run Code Online (Sandbox Code Playgroud)

我相信t仅凭这一点就足以测试存档。

  • W 仅在“写入”存档时才执行此操作。如果你想确保内容是逐字节匹配的,你必须将其提取到某个地方并对文件进行比较/求和。 (2认同)