backup - Rsync - 将符号链接(symbolic link)复制为目录,但如果它们指向文件则跳过

标签 backup rsync

我有以下结构:

/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/

相关文章:

bash - 从 Windows cmd 在 bash 中调用 rsync

linux - rsync 不同步 .htaccess 文件

ssh - 通过 SSH 将远程文件同步到我的本地机器,在本地使用 sudo 权限和我的个人 SSH key

linux - Cron 作业未执行预期任务

backup - 口是心非地只恢复更改过的文件

sql-server - 使用SMO .net通过DeviceType.Pipe进行备份和恢复

php - 通过 php/linux 在服务器之间同步资源的安全方法

shell - shell 中的 rsync for 循环

svn - 如何备份和恢复svn中的所有源代码?

mongodb - 具有不同文件夹名称的 mongodump