我的 rsync 备份方法安全吗?

我的 rsync 备份方法安全吗?

我制作了一个非常简单的备份脚本,用于rsync将一些文件夹备份到 USB 记忆棒。这只是为了快速进行每日备份。

命令是

rsync -av --delete

其次是--exclude选项和路径。

但现在我意识到这可能不安全:
如果我的硬盘损坏,某些文件无法读取,会发生什么?rsync如果无法读取源文件,会删除 USB 上的文件
吗?或者更一般地说:除了“我删除硬盘上的文件”之外,还有其他情况会导致 USB 上的文件被删除吗?

答案1

首先,--delete如果您不了解背景,该选项可能会导致一些不必要的破坏性结果。例如,如果源变为空,则目标中的所有现有文件都将被删除,或者如果从源中删除了某些文件,则这些文件也将从目标中删除。

如果我的硬盘损坏了,某些文件无法再读取,会发生什么?

如果rsync无法读取源,它会显示权限被拒绝的消息,并且不会执行任何进一步的操作。因此,目标位置的现有文件将是安全的。

除了“我删除硬盘上的文件”之外,还有其他情况会导致 USB 驱动器上的文件被删除吗?

除非您的 USB 本身损坏,否则不会出现这样的情况(您不会从源、硬盘中删除文件)USB 上的现有文件会被rsync选项删除--delete

测试:

% ls -1 source dest
dest:

source:
foo

% rsync -av --delete source/ dest
sending incremental file list
./
foo

sent 143 bytes  received 38 bytes  362.00 bytes/sec
total size is 16  speedup is 0.09

% ls -1 source dest              
dest:
foo

source:
foo

% chmod 000 source 

% rsync -av --delete source/ dest
sending incremental file list
rsync: change_dir "/source" failed: Permission denied (13)

sent 20 bytes  received 12 bytes  64.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]

% ls -1 source dest              
dest:
foo
ls: cannot open directory source: Permission denied

答案2

解决损坏和删除问题的一个简单方法是采用适当的备份程序。轮换一系列三个(或更多)USB 拇指驱动器,每周运行一次此命令时使用最老的“备份”作为插入的驱动器。这样,如果您在轮换 USB 驱动器之前发现损坏,则可以从中恢复。这称为 FIFO(先进先出)。

还有其他更复杂的方案,它们都与您的备份方法兼容。维基百科上的以下链接提供了其中一些方案的入门介绍:

https://en.wikipedia.org/wiki/Backup_rotation_scheme

相关内容