我现在有这个命令:
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