我仔细研究了 rsync 联机帮助页以及 serverfault 上的几个相关问题。我尝试过 -R 和 -L 和 -l 选项,但没有运气。
问题是:当从本地发送目录到远程时,是否有一个选项(或选项组合)可以相对于本地目录重新定位符号链接,以便它们相对于远程计算机上的目标目录?
这是我要发送的内容的最小示例:
本地目录: /home/bob/foo
/home/bob/foo/a --> /home/bob/foo/bar
/home/bob/foo/bar
这就是我希望它如何在
远程目录: /u/apps/foo
/u/apps/foo/a --> /u/apps/foo/bar
/u/apps/foo/bar
例如,rsync -az /home/bob/foo/ remote:/u/apps/foo/
不完全做到;我们最终得到:
/u/apps/foo/a --> /home/bob/foo/bar
/u/apps/foo/bar
远程机器上是否/home/bob/foo/bar
存在无关紧要;无论哪种情况,结果都绝对不是我需要的。
答案1
如果链接指向绝对路径,则没有办法绕过它。您可以通过使符号链接相对来绕过它:
/home/bob/foo/a --> ./bar /home/鲍勃/foo/酒吧
但这可能会很困难,具体取决于您生成这些链接的方式以及链接的数量。