在源更新时使用 rsync 是否安全?

bri*_*rns 22 backup rsync concurrency

rsync假设源文件系统在 rsync 运行时很可能被修改,当源文件系统被挂载和可写时使用它是否安全?我认为在竞争条件下我可能不会得到最新的修改,但是否有任何损坏的风险?

Mar*_*rco 23

rsync在读写挂载的文件系统上使用是相当安全的。当rsync启动它建立一个文件列表,然后开始复制这些文件。此文件列表在运行期间不会更新。然后复制实际数据。

这意味着当文件 rsync构建文件列表发生更改时,它将复制内容。但是,在建立文件列表后添加rsync新文件时,不会复制该新文件。如果在构建文件列表后删除rsync文件,rsync 将警告它无法复制该文件。请记住,这rsync不是快照,这意味着很难判断在哪个时间点rsync复制了数据。

另一方面,文件系统或卷管理器快照(例如使用 ZFS 或 LVM)是即时创建的,并且是文件系统在明确定义的时间点的一致快照,然后可以将其复制到另一台主机。rsync不提供这种一致性。

编辑:正如其他人在评论中指出的那样,rsync实际上可能会损坏您的文件。当 rsync 开始读取文件并且应用程序同时写入该文件时,您最终可能会得到一个损坏的文件。

  • 添加了关于已删除文件的注释。如果我可以为卷管理器快照 + rsync 建议,我可能会再次投票。我觉得这个答案唯一缺少的是 rsync 在复制过程中更改源文件时的行为。不过,我怀疑它处理得很好。 (2认同)