如何让 tar 遵循除一个递归符号链接之外的所有符号链接

如何让 tar 遵循除一个递归符号链接之外的所有符号链接

有没有一种方法(如果需要,可以使用多个命令)来制作一个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它遵循所有符号链接来复制外部文件夹,例如project2project3,但我不希望它遵循它本身所具有的递归符号链接,因为它不是必需的,并且会导致tar永远运行。

man页面来看,我似乎可以执行此操作,tar -H但我必须指定我想要遵循的每个符号链接。这是一个很长的列表,每次添加另一个符号链接依赖项时都需要更新,因此我正在寻找一种维护较少的解决方案。

这里的快速答案是“不要使用递归符号链接”,这就是我现在正在做的事情,但这是我希望为我的项目拥有的东西,如果没有找到解决方案,我就无法做到这一点问题。

答案1

制作存档, -h, 但排除具体问题链接--exclude=path/to/naughty/symlink.

然后,添加有问题的孩子tar --append 没有 -h

不是使用压缩选项(例如tar jtar z),因为压缩的 tarball 与“后处理”(例如--append和 )不兼容--delete。完成附加文件后,您就可以gzip tarball.tar.

相关内容