理想情况下,我想从该 VPS 的运行实例内部创建一个 VPS 的 qcow2 映像。我不确定这是否可能,但我不这么认为。
问题是我的 VPS 提供商会让我创建备份映像,但无法导出该映像(它只能用于将 VPS 恢复到以前的状态,或创建新的 VPS 实例)。如果相关,他们正在运行 VMware。他们确实有一个“备份解决方案”,其中涉及安装(并按月支付)Acronis,但我不确定它是如何工作的或者它实际上给了我什么。
我是否有任何其他“热”备份选项,或者我只是坚持尝试将整个(Ubuntu 22.04)服务器(减去伪/虚拟文件??)同步到我自己的本地存储,并希望获得最好的结果?
这在技术上是可行的,但最简单的方法(从 /dev/sda 读取)不会是正确的“及时冻结”转储,它可能是需要修复的可能不一致的文件系统。
如果您的下一个服务器实例具有 LVM,它会有所帮助,它支持可以在服务器继续运行时安全传输(然后销毁)的原子快照。使用 LVM 快照,而不是映像 /dev/sda,您将能够映像 /dev/mapper/something及时冻结的东西。
更好的是使用内置文件级快照的文件系统(例如 Btrfs 或 ZFS,或者在不久的将来可能是 XFS),因为 Btrfs 和 ZFS 都已经有了基于快照的备份工具,例如
zfs send
.但如果快照不可用 - 只需 rsync 整个系统,然后立即再次 rsync。第 2 次运行将是最小的,并捕获第 1 次运行期间更改的所有内容;您可以再循环几次,直到没有更多更改为止。
此外,即使没有快照,某些文件系统也可以通过运行来冻结
fsfreeze
——然后所有写入调用都将暂停,因此您可以半安全地 rsync 所有文件,因为在运行 a 之前它们不会更改fsfreeze -u
。(请注意,如果 SSH 服务尝试写入日志文件,这也可能导致新的登录尝试挂起。)请记住,许多数据库服务需要特定的工具来进行“热”备份(例如 LMDB 可能需要 mdb_copy),但这同样适用于 VPS 级别的快照,因为它适用于 rsync 或 LVM,因此没有什么新东西。
注意:与其手动排除 /dev、/proc 等,不如考虑它们都是单独的文件系统,并且会通过使用
--one-file-system
.