您如何验证已经写入的tar归档文件?


15

我知道您可以在创建档案时执行-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

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

Answers:


8

您不能W与一起使用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

我相信t光是测试存档就足够了。


t仅列出档案的内容。我想验证tar中的文件具有与原始文件相同的内容(仍在文件系统上),我认为这W应该是正确的(对吗?)。
cespinoza 2011年

1
W仅在写入归档文件时这样做。如果要确保内容是逐字节匹配的,则必须将其提取到某个位置,然后对文件进行差异/求和。
八比特托尼2011年

不适合我:tar tvWf t.tar tar: --verify cannot be used with -ttar (GNU tar) 1.27.1
汤姆·黑尔

14

GNU tar有一个--compare选项。有关详细信息,请参阅文档中的将存档成员与文件系统进行比较


5
例如,tar -df /path/to/archive.tar.bz2将显示归档文件和文件系统中文件之间的差异,并针对当前工作目录解析归档文件中的相对路径。
Walf

3

Joerg Schillings star使用diff选项,该选项可以将tar存档中的文件与原始文件进行比较。您可以声明应被视为差异的内容。

0 1 newt pts/1 ~ 17> :> tmp/testfile
0 1 newt pts/1 ~ 19> star -cz tmp > tmp.tar
0 1 newt pts/1 ~ 19> echo bla > tmp/testfile
0 1 newt pts/1 ~ 20> star -z -diff diffopts=not,times < tmp.tar
diffopts=perm,symperm,type,nlink,uid,gid,uname,gname,size,data,rdev,hardlink,symlink,sympath,sparse,dir,acl,xattr,fflags
tmp/testfile: different size,data
star: 115 blocks + 0 bytes (total of 1177600 bytes = 1150.00k).

请注意,它被提及testfile为具有不同的大小和数据。如果我没有排除时间(包括访问时间!),它也会说明访问时间,并列出所有时间已更改的文件,只需查看即可。

由于BerliOS的灭亡,star可以在sourceforge上找到。它具有高度的可移植性,并且可以在大多数unixoid系统和unixoid外观上轻松编译。


最新资源在schilytools源代码包中。
schily
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.