我有一个.tgz
用制成的文件tar cvzf tartest.tgz tester/*
,如果我用该tar --list -f tartest.tgz
文件列出tar ,则我具有以下结构
tester/2017-08-02_131404.png
tester/cfg.pdf
tester/tests/
tester/tests/1.png
tester/tests/2.png
tester/tests/3.png
tester/tests/4.png
tester/tests/5.png
如果我使用来比较tar和原始文件夹tar -df tartest.tgz tester/*
,一切正常,没有问题,没有错误
如果我在tester文件夹中添加文件20171006_183137.png并重试,则会出现错误,如预期的那样:
tar: tester/20171006_183137.png: Not found in archive
tar: Exiting with failure status due to previous errors
如果我在tester / tests文件夹中添加文件20171006_183137.png并重试,则不会出现错误并显示空白。
如果我在上一次测试期间添加了-v选项,那么我只会得到tar中的文件列表。
有没有一种方法可以将tar与原始文件夹和子文件夹进行递归比较?
根据此站点,tar
表现正常。
您应该再次注意,尽管
--compare
(-d
)确实会导致tar报告档案文件中不存在的档案中的文件,但tar会忽略活动文件系统中档案中不存在的文件。
您要获取tar -df tartest.tgz tester/*
的错误确实是错误(!),而不是» 存档和目录不同 «之类的消息。tar
不知道如何处理不在存档中的文件。
如果您还想比较另一种方法,则可以使用此答案中描述的方法(装入或解压缩归档文件并diff -r
针对原始目录使用)。
如果您只对文件的存在而不是内容,访问日期等感兴趣,则可以列出存档和原始目录中的文件名,并将它们与diff
:
diff <(tar -tf tartest.tgz | sort) <(find tester/ | sort)
仅当其中没有带有换行符的文件名时,该命令才有效。
使用diff -y
或comm
命令获得更易读的输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句