如果磁盘发生故障,rsync --delete 是否安全

如果磁盘发生故障,rsync --delete 是否安全

我的 Linux 服务器上有两个数据硬盘,我使用第二个硬盘作为第一个硬盘的备份。
我使用同步为此目的。例如:

rsync -r -v --delete /media/disk1/ /media/disk2/

它的作用是复制每个文件/目录/媒体/磁盘1//媒体/磁盘2/还会删除任何差异。例如,假设文件 A 和 B 位于磁盘1等等磁盘2没有 A 和 B 文件,但有 C。结果将是执行 on 命令后磁盘2我有文件 A 和 B,但文件 C 将被删除,就像磁盘1现在

,一个相当灾难性的场景浮现在我的脑海中;如果 disk1 坏了,系统会继续工作,因为系统文件在我的系统磁盘上,但是当 rsync 尝试备份我的数据时磁盘2从破碎磁盘1,它会删除所有文件磁盘2因为它无法读取磁盘1

这种情况可能发生吗?或者是否有内置保护措施同步

答案1

实际上,在这种情况下,内核会崩溃,在 rsync 删除任何内容之前,您会收到一堆磁盘 I/O 错误。但是,如果您重新启动,/media/disk1 可能会是空的并且未安装...所以...

在您的 rsync 脚本中,请确保如果 /media/disk1 中没有任何文件,则不要运行 rsync。一个简单的方法是:

ls /media/disk1/SomeFileYouKnowExists || exit
rsync ....

这将导致在目标文件不存在的情况下脚本在运行 rsync 之前退出。

答案2

来自 rsync 手册:

如果发送方检测到任何 I/O 错误,则将自动禁用目标上的任何文件删除功能。这是为了防止发送方的临时文件系统故障(例如 NFS 错误)导致目标上大量文件删除。您可以使用 --ignore-errors 选项覆盖此设置。

相关内容