rsync:复制符号链接实际路径与重新创建符号链接

rsync:复制符号链接实际路径与重新创建符号链接

我现在有这个命令:

rsync --copy-links -r src dest

这将复制 src 中任何符号链接的目标文件,并在 dest 中写出这些文件的副本。

我的问题是 - 有没有办法只用一个新目标(dest)重新创建符号链接?

我试过

rsync --links -r src dest

但这似乎没有任何作用。

假设我的 src 目录如下所示:

src/
  foo/
  bar/  # symlinked dir
  baz/

答案1

--links是正确的。但如果您以前使用过--copy-links,那么它将在目标中创建真实的目录(包含内容)。稍后运行--links将无法删除这些目录以用链接替换它们。

$ rsync -r --copy-links src/ dest/ # creates a real directory in /dest
$ ls -l dest
drwxr-xr-x 2 user staff 4096 Dec 18 00:47 bar

现在尝试复制链接...

$ rsync -r --links src/ dest/
cannot delete non-empty directory: bar
could not make way for new symlink: bar
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]

哎呀,还没有。需要先删除目标目录。

$ rm -rf dest/bar
$ rsync -r --links src/ dest/
$ ls -l dest
lrwxrwxrwx 1 user staff 6 Dec 18 00:52 bar -> ../bar

相关内容