![两个 tar 命令 -cf 和 -Jchf 之间的区别](https://linux22.com/image/201974/%E4%B8%A4%E4%B8%AA%20tar%20%E5%91%BD%E4%BB%A4%20-cf%20%E5%92%8C%20-Jchf%20%E4%B9%8B%E9%97%B4%E7%9A%84%E5%8C%BA%E5%88%AB.png)
我有一个在两个地方运行的 python 脚本,两个不同但相似的命令:
os.system("tar cf - -C %s . 2>/dev/null 3>/dev/null | 7za a -p%s -si %s 1>/dev/null 2>/dev/null 3>/dev/null" % (cf, self.config.get(jn, "archpass"), filename))
os.system("tar -Jchf - -C %s . 2>/dev/null 3>/dev/null | 7za a -p%s -si %s 1>/dev/null 2>/dev/null 3>/dev/null" % (cf, self.config.get(jn, "archpass"), filename))
此脚本用于备份 Ubuntu 服务器上的 websited。因此大多数文件都是 html/php/js/jpg。我需要更多地了解此命令,以便知道是否有需要改进的地方。
问题1)tar cf
和之间有什么区别tar -Jchf
?不幸的是tar --help
并没有帮助我理解附加-Jf
参数。
问题2)tar也归档吗?将所有内容发送至 的目的是什么7za
?是否进行双重归档?
答案1
命令中的实际区别在于开关Jh
,如下所述(来自man tar
):
-h, --dereference
Follow symlinks; archive and dump the files they point to.
-J, --xz
Filter the archive through xz(1).
因此,您强制使用符号链接来压缩存档xz
并遵循符号链接,而不是存档链接本身。