小编mar*_*nuy的帖子

如何检查目录是否包含与 TAR 存档相同的文件?

假设我有一个文件夹Documents和一个 TAR 文件Documents.tar,如何检查 tar 文件是否包含目录中存在的相同文件?

对我来说更明显的解决方案是:

$ tar xvf Documents.tar -C untarDocs
$ diff -r Documents untarDocs
Run Code Online (Sandbox Code Playgroud)

不幸的是,这对于大型 TAR 文件来说非常慢,还有其他选择吗?

使用tar -dvf Documents.tar(或 --diff、--compare)不起作用,因为它不会检测文件系统中存在但 TAR 文件中不存在的文件,它只检测 TAR 文件中存在但不存在于 TAR 文件中的文件。文件系统例如:

$ mkdir new
$ touch new/foo{1..4}
$ tar cvf new.tar new/
$ touch new/bar
$ tar --diff --verbose --file=new.tar       #### doesn't detect new/bar #########
$ rm new/foo1
$ tar --diff --verbose --file=new.tar
Run Code Online (Sandbox Code Playgroud)

输出

new/
new/foo2
new/foo3
new/foo4
new/foo1
tar: new/foo1: Warning: Cannot stat: No …
Run Code Online (Sandbox Code Playgroud)

command-line tar diff

5
推荐指数
1
解决办法
3789
查看次数

标签 统计

command-line ×1

diff ×1

tar ×1