备份过程中可以继续工作吗?
我想使用Ubuntu备份(DéjàDup)在外部硬盘上备份整个系统。 在进行完整备份时,我可以使用操作系统(对文件进行更改)吗? 这将如何影响备份文件(例如,如果我在备份期间更改文件,我是否会在备份或旧文件中使用此文件的新版本)?
谢谢
虽然这是可能的,但我当然不会建议这样做。 最重要的原因是您在两个级别上创建了不一致的备份:
- 卷不一致
- 文件不一致
唯一可行的解决方案是:
- 使用快照 。 这可以使用LVM或更新的文件系统(如BtrFS)来实现。 这将快照整个卷,就像您正在拍照一样。 仍然可以进行更改/写入,但是从先前获取的只读快照运行备份过程。
- 将文件系统挂载为只读和备份。 重要的缺点:在以只读方式挂载根文件系统期间,您将无法运行系统。
卷不一致
卷本身由数千个文件组成,这些文件在您仍在写入时正在被复制。 如果单个文件的状态不一致,某些应用程序会感到困惑。
假设一个应用程序将首选项存储在~/.config/appname/theprefs.xml
,内容引用系统中其他位置的外部文件,假设为~/Pictures/myface.png
。 如果在~/Pictures
文件夹之后正在备份首选项设置文件,则备份可能在您需要在某天后恢复后才能生效。
文件不一致
与单个文件处于不一致状态的方式类似,文件本身也是如此。 在进行备份时 ,文件的内容可能会发生变化。 Rsync和水下用于备份应用程序(如Deja Dup)的大多数其他工具都不会锁定文件以供阅读。 另请参阅: rsync如何为并发文件访问行为? 。
这可能会导致灾难性的结果,因为文件的整个结构可能会被破坏。 实际发生这种情况的可能性主要取决于文件的大小和对其执行的写入操作的数量。
什么不该做的例子。
复制或备份……
- 机器运行时的虚拟机磁盘映像。
- 数据库文件(例如MySQL
/var/lib/mysql
),而表不是读锁定的。 (对于这个例子,像Percona Toolkit这样的奇特工具可以解决这个问题。)
是的,但您的计算机可能会比备份慢一点。 这取决于编辑文件时备份的方式。 假设您在备份期间编辑文件,它已经备份了旧版本,并且在下次备份之前,您的编辑将不会显示在备份中。