我有一个关于 FreeBSD 服务器的问题,目前我无法访问它。但是因为我们想尝试一些新东西,所以我们想先创建此系统的备份。
问题是:是否有可能通过 ssh 从当前实时系统的整个服务器磁盘创建磁盘映像?
如果有:我想知道该如何做到这一点。
答案1
在 Linux 下实际上不可能。在 Windows 下可以的原因是卷影复制。
如果您的系统使用 LVM,您可以拍摄快照,然后rsync
对其进行文件的原子复制,但是您需要恢复分区/引导加载程序。
如果必须这样做,最简单的方法是dd
复制它:
dd if=/dev/sda | ssh user@remotehost 'dd of=/path/to/output'
然后,为了 100% 确保您的文件没有问题,rsync
从正在运行的文件到您dd
安装映像的驱动器。(我已经跳过了rsync
数百次差异,没有任何不良影响,但那只是在大量读取的服务器访问上)
答案2
使用转储(8)创建(文件)系统的快照。
dump -0aLf /path/to/dumpfile /
这将创建根文件系统的实时转储并将其保存到 /path/to/dumpfile。该转储可以通过 ssh 传输到另一台计算机。或者您可以使用它一次性完成。
dump -0aLf - | ssh my.backup.server dd of=/path/on/my/server/dumpfile
稍后可以通过以下方法恢复:
cd /where/I/should/restore
restore -xf /path/to/dumpfile
数据库等应用程序必须单独处理。例如,对于 MySQL 数据库,您可以使用 mysqldump 创建一个 sql 命令文本文件,该文件可以在另一台 MySQL 服务器上运行,以便导入到那里。其他数据库也有类似的方法。
答案3
如果你的目标机器上只有一个根文件系统需要复制,那么使用如下命令:
rsync --numeric-ids --delete -vax source_machine:/ /target_dir
两次或更多次。第二次运行已经重用了第一次运行的缓存条目,运行速度非常快,并且几乎提供了真实的快照,但有一些限制。您可以通过简单地重复“rsync”任意次数来观察“原子性”。在迭代之间真正发生变化的文件(日志文件等)大多很少(因此需要复制/删除)。