如何比较tarball的内容与文件夹

Ste*_*eve 21 diff compare tar

如何tar将原始文件夹的文件(已压缩)与原始文件夹进行比较?

首先,我使用了创建存档文件

tar -kzcvf directory_name.zip directory_name
Run Code Online (Sandbox Code Playgroud)

然后我尝试比较使用

tar -diff -vf directory_name.zip directory_name
Run Code Online (Sandbox Code Playgroud)

但它没有用.

zze*_*roo 35

--compare (-d) 对此更方便.

tar --compare --file=archive-file.tar
Run Code Online (Sandbox Code Playgroud)

如果archive-file.tar位于创建目录中,则可以正常工作.要将archive-file.tar与远程目标进行比较(例如,如果已将archive-file.tar移动到/ some/where /),请使用以下-C参数:

tar --compare --file=archive-file.tar -C /some/where/
Run Code Online (Sandbox Code Playgroud)

如果你想看到焦油工作,使用-v-v只是错误(缺少文件/文件夹)的报告.

Tipp:这也适用于压缩的tar.bz/ tar.gz档案.

  • 顺便问一下,你知道如何摆脱GID和UID的比较吗? (5认同)
  • 无论我尝试哪种方式,我都会收到“警告:无法统计:没有这样的文件或目录”。 (3认同)

miq*_*uel 8

应该是--diff

试试这个(没有最后一个目录名称):

tar --diff -vf directory_name.zip
Run Code Online (Sandbox Code Playgroud)

问题是 --diff 命令只查找 tar 文件和文件夹之间现有文件的差异。因此,如果将新文件添加到文件夹中,则 diff 命令不会报告此情况。


Lel*_*and 6

要忽略部分或全部元数据(用户、时间、权限)的差异,您可以将结果通过管道传输到awk

tar --compare --file=archive-file.tar -C /some/where/ | awk '!/Mode/ && !/Uid/ && !/Gid/ && !/time/'
Run Code Online (Sandbox Code Playgroud)

这应该只输出 tar 和目录之间的真正差异/some/where/