如果磁盘出现故障,rsync --delete 是否安全

ene*_*ene 5 linux backup rsync

我的 Linux 服务器上有两个数据硬盘驱动器,我使用第二个作为第一个驱动器的备份。
我为此目的使用rsync。一个例子是:

rsync -r -v --delete /media/disk1/ /media/disk2/
Run Code Online (Sandbox Code Playgroud)

它的作用是将每个文件/目录从/media/disk1/复制到/media/disk2/但同时删除任何差异。例如,假设文件 A 和 B 但不是文件 C 在disk1 上,而在disk2上没有 A 和 B 文件,但有 C。结果将是在disk2上的命令之后我有文件 A和 B,但文件 C 将被删除,就像在disk1 上一样

现在,一个相当灾难性的场景出现在我的脑海中。如果 disk1 死机,系统会继续工作,因为系统文件在我的系统磁盘上,但是当 rsync 尝试从损坏的disk1备份我在disk2 上的数据时,它会删除所有文件disk2因为它无法读取disk1 上的任何内容。

这是一种可能的情况,还是在rsync 中对其进行了保护?

Fli*_*mzy 4

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

在 rsync 脚本中,只需确保在 /media/disk1 中没有任何文件时不运行 rsync。一个简单的方法是:

ls /media/disk1/SomeFileYouKnowExists || exit
rsync ....
Run Code Online (Sandbox Code Playgroud)

如果目标文件不存在,这将导致脚本在运行 rsync 之前退出。