我有一个 btrfs 快照/
,我想将rsync
它与我当前的/
文件夹一起使用。如果您愿意,可以采用“回滚”的形式。我的问题是我应该避免哪个文件夹,例如,我应该使用-x
选项来防止 rsync 转到其他子卷,但我还应该排除该tmp
文件夹以防止系统崩溃?/var、/run、/dev 呢?
答案1
我不确定您是否想使用 Live CD 等或在运行系统上执行此操作,所以我对两者都进行回答。
需要考虑的事情两种情况:
A)使用适当的 rsync 选项不仅可以同步文件,还可以同步更改日期、访问权限掩码、Xattrs、Selinux 信息、扩展 ACL、硬链接等一切功能。阅读整个选项列表一次以找出所有必要的功能并不坏。
b)一个卷的 Btrfs 快照仅包含此卷。例如,如果您在 /boot 上安装了单独的启动分区,则备份不会覆盖它,因此不应同步 => “-x” 标志。不过,通过下面描述的过程,您将获得没有安装挂载点的视图。
如果从现场 CD:
A)文件夹 lime /tmp(如果内容位于真实文件系统上,而不是运行时虚拟文件系统)不需要额外考虑。只需覆盖它们即可。
b)如果从实时 CD 查看,虚拟内容(例如大多数 /dev 条目(大多数是因为 /dev 可以包含一些真实文件))将不存在 => 没问题。少数真实文件(如果有)可以使用 rsync 同步。
对于这个案子,我什么都想不起来。
如果在运行系统:
A)为了防止干扰 /dev 和类似的东西,除了 / 之外,您还需要 Btrfs 文件系统的“纯”视图,而无需额外安装东西。您可以使用mount --bind ...
一些自己的文件夹来获得它。将其作为同步目标。
b)仅仅在由其他程序打开的文件中写入内容会导致问题,尤其是不断写入的文件,例如日志文件。删除旧文件并创建具有自己内容的新文件允许其他程序访问它的旧文件直到关闭。 rsync 默认会这样做,但请注意不要传递如下选项--inplace
!
C)rsync 完成后,重启。整个情况已经够棘手了,因此要尽量降低某些进程混合新旧数据并在运行时做出一些奇怪的事情的风险。