【问题标题】:Rsync - copy symlinks as directories, but skip if they point to fileRsync - 将符号链接复制为目录,但如果它们指向文件则跳过
【发布时间】:2016-09-26 20:08:25
【问题描述】:

我的结构如下:

/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 命令一起使用。

【问题讨论】:

    标签: backup rsync


    【解决方案1】:

    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,因此目录中的任何链接都将被逐字复制as 链接。顶级link1 将被视为一个目录如果您使用尾随/ 取消引用它(即它在rsync 正在扫描的树之外)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2020-11-10
      相关资源
      最近更新 更多