我计划通过来备份我的大型硬盘rsync
,并预计需要几天的时间。在工作时使用原始硬盘(添加文件)是否安全rsync
?还是最好不要触摸硬盘直到rsync
完成?
我计划通过来备份我的大型硬盘rsync
,并预计需要几天的时间。在工作时使用原始硬盘(添加文件)是否安全rsync
?还是最好不要触摸硬盘直到rsync
完成?
Answers:
正如其他人已经指出的那样,在rsync运行时,可以安全地从源磁盘读取或在目标目录之外使用目标磁盘。在目标目录中进行读取也是安全的,特别是如果目标目录仅由rsync运行填充。
什么不一般的安全是源目录中写而rsync的运行。“写入”是指修改源目录或其任何子目录的内容的任何内容,因此包括文件更新,删除,创建等。
这样做实际上不会 破坏任何内容,但是更改可能会或可能不会真正被rsync拾取并复制到目标位置。这取决于更改的类型,rsync是否已经扫描了该特定目录以及rsync是否已经复制了相关文件或目录。
但是,有一种简单的方法可以解决此问题: 完成后,使用相同的参数再次运行rsync。(除非您有一些时髦的delete参数;否则,请多加注意。)这样做将导致它重新扫描源,并转移在原始运行期间未拾取的任何差异。
第二次运行应仅传输上次rsync运行期间发生的差异,因此将更快地完成。因此,您可以在第一次运行期间随意使用计算机,但是应避免在第二次运行期间尽可能地对源进行任何更改。如果可以,强烈考虑在开始第二次rsync运行之前以只读方式重新安装源文件系统。(mount -o ro,remount /media/source
应该做的事。)
@reboot root find / -print &>/dev/null
在系统crontab中添加一个条目来填充缓存的原因。(在我的特定系统上,实际的条目要复杂一些,以解决一些特殊情况。)启动后,它会在启动初期提早使用一些RAM和一些挂钟时间来改善目录树扫描的IME。
updatedb
(构建locate的数据库)还是slocate -u
(如果存在slocate,则运行)?这样,您仍然可以缓存层次结构,但是还可以建立定位或slocate的数据库,从而允许您使用这些命令快速查找许多文件?
在rsync
操作过程中从源区域读取数据是安全的,但是如果您进行任何更新,则rsync
创建/更新的副本可能会不一致:
如果您更新了rsync已经扫描过的文件,则在以后运行之前它将看不到更新。如果更新文件尚未扫描,则目标位置将遵守更改。如果更新既已扫描又未扫描的文件,则最终将在目标位置混合使用旧版本和新版本。
如果您将文件添加到已经扫描过的目录中,则这次将丢失目标副本中的文件。如果从已扫描的目录中删除文件,则此文件将保留在目标副本中。根据您调用方式rsync
的不同,整个树可能会在开始时进行扫描,也可能在同步过程发生时进行增量扫描。
在某些情况下rsync
会看到不一致并警告您。如果您从已经被扫描但本身没有被扫描的目录中删除文件或子目录,则会收到有关该对象丢失的错误消息。在类似情况下,有时(如果大小和/或时间戳已更改)也可能会在扫描过程中警告文件更改。
对于某些备份来说,这种不一致可能不是一个大问题,但是对于大多数备份而言,这是一个大问题,因此建议您不要尝试同步活动变化的源。
如果使用LVM划分存储系统,则可以使用临时快照进行时间点备份。这要求您在卷组上有足够的空间来创建快照卷,该快照卷必须足以容纳需要快照期间将发生的所有更改。查看LVM文档(或许多在线示例之一:搜索“ LVM快照备份”或类似内容)以了解更多详细信息。
即使没有LVM,某些文件系统本身也支持快照-因此您可能也希望研究该选项。
如果您要备份大型活动卷而不需要长时间停机并且不能使用快照,那么运行“实时”扫描以完成操作然后停止访问该卷并运行另一个rsync进程可能就足够了,这可能会花费更少的时间(如果更改很少,它将只扫描目录树,然后扫描一些更新的文件)。这样,您应该避免更改的持续时间可以大大缩短。
当前所有的答案都在讨论数据安全性,即一致性和假设硬件是否完善。
要考虑的另一件事是硬件安全本身。如果您有未备份的硬盘驱动器,可能即将发生故障(您可能还不知道),并且正在进行初始全面备份,请不要使用它。如果数据很关键,甚至不要挂载它。您可以使用诸如dd
将磁盘克隆为块设备之类的工具。您不希望磁盘头寻找什么,并可能在尝试进行备份时写入。Plus dd
对于初始备份应该更快,因为它只是按顺序复制位(如果驱动器不是很满,我想rsync在初始情况下也会胜出)。
对于后续的增量备份,rsync是一个不错的选择,我同意其他答案的100%。
dd
不是最佳选择。使用ddrescue
代替;它可以更好地处理部分故障。但这不是原始问题的考虑因素。