我有以下结构:
/source/link1/->/dir1
/source/link2/->/dir2
/source/link1/file2
/source/link1/link11->/dir2/file21
link=symbolic link, file=real file.
在目标(远程)目录中,源文件夹“根”中的链接应复制为目录,以及 /source/link1
、/source/link2
下的链接> 不应复制文件夹,或者应仅将其复制为链接(以避免重复结构)。目标结构如下:
/target/link1 - directory
/target/link2 - directory
/target/link1/link11->/target/link2/file21
/target/link1/file2
如何使用 rsync 来维护它? 每日同步需要它 - 每日目标和源文件夹应同步,并且 rsync 应与 --delete 命令一起使用。
最佳答案
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 正在扫描的树之外) )。
关于backup - Rsync - 将符号链接(symbolic link)复制为目录,但如果它们指向文件则跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39610543/