有没有办法使用 tar 来打包目录并在称重后检查源数据是否发生变化?
好吧,我想打包一个文件夹。但在打包过程中,文件夹的内容可能会发生变化。我需要一种方法让 tar 检查源文件在创建存档后是否发生了变化。如果是,打包的文件应该被新的源文件覆盖
答案1
如果您只想更新现有文件和较新文件的内容(但不从存档中删除不再位于当前目录中的文件,因为这会导致您在No such file or directory
尝试更新存档时出现错误),您可以使用diff
@Niels Tolstrup 提到的功能,然后使用--update
或简单地-u
更新存档内容:
tar -uf tarfile.tar `tar --diff --file tarfile.tar | awk ' { print $1 } ' | cut -d: -f1`
笔记 :Tarupdate
会在 tar 文件中产生许多重复的条目,您可以通过这些条目看到它们,tar --list --file tarfile.tar
但当您提取文件时这不是问题。
答案2
您可以将目录 rsync 到临时位置,然后继续使用 rsync 检查直到没有变化,最后制作 tar 文件。