有没有一种方法(如果需要,可以使用多个命令)来制作一个tar
遵循所有符号链接(如 with tar -h
)的存档,除了一个递归符号链接之外,该符号链接应该按原样保留?
我有一个这样的目录结构:
project1
code folder
dependencies folder
symlink to project1 folder (recursive!)
symlink to project2 folder
symlink to project3 folder
... more symlinks, folders, etc
project2
code folder
project3
code folder
... more projects
我想让tar
project1
它遵循所有符号链接来复制外部文件夹,例如project2
和project3
,但我不希望它遵循它本身所具有的递归符号链接,因为它不是必需的,并且会导致tar
永远运行。
从man
页面来看,我似乎可以执行此操作,tar -H
但我必须指定我想要遵循的每个符号链接。这是一个很长的列表,每次添加另一个符号链接依赖项时都需要更新,因此我正在寻找一种维护较少的解决方案。
这里的快速答案是“不要使用递归符号链接”,这就是我现在正在做的事情,但这是我希望为我的项目拥有的东西,如果没有找到解决方案,我就无法做到这一点问题。
答案1
制作存档,和 -h
, 但排除具体问题链接--exclude=path/to/naughty/symlink
.
然后,添加有问题的孩子tar --append
没有 -h
。
做不是使用压缩选项(例如tar j
或tar z
),因为压缩的 tarball 与“后处理”(例如--append
和 )不兼容--delete
。完成附加文件后,您就可以gzip tarball.tar
.