我想执行以下操作 - 保存我的 linux 操作系统 (centOS6.5) 的当前状态。做一些改变(更具体地说,注入一个故障并测试一些服务,以检查它在特定类型的故障发生时的行为。)然后将系统恢复到保存的状态。我无法弄清楚如何在 linux 系统上执行此操作。我有一台带有 ext4 文件系统的 CentOS 6.5 机器。此外,这是一台物理服务器,而不是虚拟机。
有什么想法或建议吗?
我会保持简单并克隆它。从 USB 启动实时系统(我发现最简单的是从 USB 拇指驱动器启动 Ubuntu),然后将您的硬盘转储到不同的分区(或外部硬盘驱动器等),例如
dd if=/dev/sda1 bs=64M of=/mnt/my_mounted_backup_drive/backup-sda1
Run Code Online (Sandbox Code Playgroud)
您需要/dev/sda1
用根 ( /
) 分区替换的位置。在适用的情况下对其他分区(如/boot
, /boot/efi
, 的分区)执行相同操作/home
。
如果你需要节省空间,你可以这样做
dd if=/dev/sda1 bs=64M | gzip --fast | dd bs=32M of=/mnt/my_mounted_backup_drive/backup-sda1.gz
Run Code Online (Sandbox Code Playgroud)
或者,更复杂,更慢但节省更多字节,
mkdir -p /mnt/linux
mount -o ro /dev/sda1 /mnt/linux
cd /mnt/linux
tar cvJf /mnt/my_mounted_backup_drive/linux-backup.tar.xz .??* *
Run Code Online (Sandbox Code Playgroud)
然后您可以以相反的方式恢复,例如
mkdir -p /mnt/linux
mount /dev/sda1 /mnt/linux
cd /mnt/linux
tar xvJf /mnt/my_mounted_backup_drive/linux-backup.tar.xz
Run Code Online (Sandbox Code Playgroud)
或者
dd /mnt/my_mounted_backup_drive/backup-sda1.gz bs=32M | gzip --decompress | dd bs=64M of=/dev/sda1
Run Code Online (Sandbox Code Playgroud)
(小心你写数据的地方,这会删除所有内容/dev/sda1
,所以第一次做对:-)
小智 7
您可以使用 rsync 来备份整个系统。
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* /path/to/backup/folder
Run Code Online (Sandbox Code Playgroud)
Arch Linux Wiki上有一篇关于它的精彩文章
使用 rsync 或 rsnapshot 来备份本地计算机怎么样?测试完成后,只需恢复备份即可。
http://www.mikerubel.org/computers/rsync_snapshots/
同样,您可以使用 LVM:
http://www.tldp.org/HOWTO/LVM-HOWTO/snapshots_backup.html