在跟随符号链接时执行 rsync

ens*_*are 81 linux files rsync symbolic-link

我有一个目录,其中包含指向位于我系统上不同媒体上的其他目录的符号链接:

/opt/lun1/2011
/opt/lun1/2010
/opt/lun2/2009
/opt/lun2/2008
/opt/lun3/2007
Run Code Online (Sandbox Code Playgroud)

但符号链接显示为:

/files/2011
/files/2010
/files/2009
/files/2008
/files/2007
Run Code Online (Sandbox Code Playgroud)

如何执行rsync遵循符号链接的操作?

例如:

rsync -XXX /files/ user@server:/files/

Mad*_*ter 116

-Lrsync的标志将同步链接到的文件或目录的内容,而不是符号链接。

  • 澄清一下,如果你想跟随符号链接的文件和目录,`-LK` (7认同)
  • 嗨 - 这些是目录。我让它与 -K 标志一起工作。 (5认同)
  • 我敢肯定 SO 会让我变得更愚蠢.. (5认同)
  • 遵循此类建议时请务必小心。在进行产品运行之前进行测试、测试和测试!*`-L` 本身将删除接收方的所有符号链接!* (2认同)

小智 19

刚遇到这个问题。如果您希望 rsync 将符号链接目录视为目录,则需要该K选项

rsync -K /files/ user@server:/files/


Hon*_*Zhu 13

您需要两个 -L-K,如果你有两面符号链接,例如,你已经让你的第一个rsync的完成,想用rsync将更新备份。

    -L, --copy-links            transform symlink into referent file/dir
    -K, --keep-dirlinks         treat symlinked dir on receiver as dir
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果您只使用-L,接收方的符号链接将被清除并创建新的真实目录。