rsync 显然打破了硬链接

Fra*_*ens 2 rsync hardlink

在源服务器 (A) 上,我得到了一个文件 /opt/resources/xxx 和一个指向该文件的硬链接 /etc/apache2/sites-available/xxx。

在另一台服务器(B)上,我得到了相同的结构 /etc/apache2/sites-available/xxx 硬链接到 /opt/resources/xxx

我将服务器 (A) 上的 rsync 同步到服务器 (B) /opt 下的所有更改

当我更改服务器 A 上的文件 xxx,然后将 rsync rsync 到服务器 B 时,这些更改会反映出来。服务器 B 上的 /opt/resources/xxx 包含我对服务器 A 上的同一文件所做的更改。

我唯一不明白的是文件 /etc/apache2/sites-available/xxx 不包含更改。

看起来好像 rsync 断开了硬链接,但可能我缺少一些配置选项。

哪一个 ?

弗朗西斯

Ign*_*ams 7

-H是保留硬链接的选项;它不包括在-a.

  • 你的答案不正确。选项 -H 与提出的问题无关。选项 -H 用于在源上的两个或多个文件被硬链接时保留目标上的 harlink,因此同步到目标的文件也将被硬链接。如果没有他的选项,目标上的文件将被复制(这会消耗更多的磁盘空间)。要解决提出的问题,必须使用 --inplace 选项,因为默认情况下 rsync 似乎会上传具有临时名称的更改文件,删除旧文件并将临时名称重命名为原始名称。删除会导致问题=破坏目标上现有的硬链接。 (2认同)

Der*_*rfK 6

rsync硬链接的处理取决于您在一次传输中发送所有链接文件(同时将/etc/apache2/sites-available/和同步/opt/resources/到服务器 B):

请注意,rsync 只能检测传输集中文件之间的硬链接。如果 rsync 更新的文件与传输之外的文件有额外的硬链接连接,则该链接将被破坏。

这是因为默认情况下,rsync 会将文件写入新位置,然后将其移动到前一个文件的顶部,本质上是擦除原始硬链接并用新文件替换它。它建议使用该--inplace选项来更改此默认值,但警告说这样做存在风险,最值得注意的是:

(2) 文件数据在传输过程中将处于不一致状态,(3) 如果传输中断或更新失败,文件数据在传输后可能会处于不一致状态