我正在尝试编写一个使 tar 与文件夹保持同步的脚本。我正在处理很多文件,不想每次运行脚本时都重新制作 tar。我希望它只从 tar 添加/删除自上次脚本运行以来已从文件夹中添加/删除的文件。这是我的。
# Create tar if it doesn't exist but don't over write if it does exist
touch -a /home/MyName/data.tar
cd /home/MyName
# Make the tar
tar -uv --exclude='dirToTar/FileIWantToExclude' -f $tarFile dirToTar
这非常适合添加文件。但是,如果从 dirToTar
中删除文件,它不会从 data.tar
中删除。
不幸的是,tar 不支持这个。作为替代方案,您可以使用 zip,如下所示:
zip -r -FS myArchiveFile.zip dirToZip
不像您所要求的那样使用“tar”,但它似乎工作得很好。另一种选择是使用 7z(7-zip 归档程序),它可以为您提供更好的压缩效果。这个的命令行选项是模糊的,但这有效:
7z u -up1q0r2x2y2z1w2 myArchiveFile.7z dirToZip
(我在这里找到了这些 7z 命令行选项的文档:https://www.scottklement.com/p7zip/MANUAL/switches/update.htm。我不知道为什么很难找到这个文档...)。
如果出于某种原因,您不想使用 zip 或 7z 提供的压缩功能,也可以通过多种方式禁用它,因此 zip 或 7z 只需创建一个类似于 tar 的文件容器即可。
不过,最后,我认为您应该每次都重新创建存档。我怀疑执行您要求的那种同步所节省的时间可能很少。