我有以下结构:
/source/link1/->/dir1
/source/link2/->/dir2
/source/link1/file2
/source/link1/link11->/dir2/file21
link=symbolic link, file=real file.
在" root"中的目标(远程)目录链接应将源文件夹复制为目录,并且不应复制/source/link1
,/source/link2
文件夹下的链接,或者仅将它们复制为链接(以避免重复结构)。目标结构如下:
/target/link1 - directory
/target/link2 - directory
/target/link1/link11->/target/link2/file21
/target/link1/file2
如何使用rsync维护它? 每日同步需要它 - 每天应该同步目标和源文件夹,并且rsync应该与--delete命令一起使用。
答案 0 :(得分:6)
Rsync有一系列处理链接的选项(来自手册页):
-l, --links copy symlinks as symlinks -L, --copy-links transform symlink into referent file/dir --copy-unsafe-links only "unsafe" symlinks are transformed --safe-links ignore symlinks that point outside the tree --munge-links munge symlinks to make them safer -k, --copy-dirlinks transform symlink to dir into referent dir -K, --keep-dirlinks treat symlinked dir on receiver as dir
如果顶级链接发生“不安全”且其他链接都“安全”,那么--copy-unsafe-links
将为您工作。
否则,我建议你使用一个循环来同步一个顶级目录:
rsync -a --delete /source/link1/ /target/link1/
请注意,-a
暗示--links
,因此目录中的所有链接都将作为链接逐字复制。顶级link1
将被视为目录,如果您使用尾随/
取消引用它(即它位于树rsync扫描之外)。