为了进行测试,我一直在 VMware 下的 Windows 机器上使用 Ubuntu Server VM 并禁用持久存储。重新启动后,我回到了原始机器配置。对我来说,返回包含一些最少工具的原始配置非常简单。
现在我有一台专门用于此任务的独立机器,我想知道我是否可以避免使用虚拟机或 Docker,因为我的安装需求不是太复杂。唯一的问题是我的更改触及了 /etc/ 和其他地方的文件,这使得删除所有内容更可取。有没有其他方法可以替代使用 dd 备份和恢复机器?
我对 dd 的问题是,我需要使用其他媒体启动它才能恢复原始映像。我希望它像运行脚本一样简单。花些时间进行恢复并不是什么大问题,但我希望它尽可能无头运行。
答案1
使用 clonezilla 恢复系统
下载:
- Clonezilla ISO 映像。
- Clonezilla 压缩包。
设置
使用 Clonezilla 克隆所需分区的映像,并将其保存在辅助或外部磁盘¹中。注意映像的大小。
创建一个足够大的分区来存储创建的映像和 Clonezilla 提取的 ZIP。记下分区号。
在创建的分区中提取 Clonezilla ZIP 文件的内容。
将以下代码添加到文件,替换分区号
/etc/grub.d/40_custom
中的 X ,例如:msdosX
msdos2
menuentry "Restore" { set root='hd0,msdos2' linux /live/vmlinuz boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 noeject locales=en_US.UTF-8 keyboard-layouts=en ocs_live_run="sudo bash /lib/live/mount/medium/restore" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0 splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 initrd /live/initrd.img }
跑步
sudo update-grub
。再次使用 Clonezilla 克隆所需分区的映像,并将其保存在创建的分区中。
创建 Clonezilla 的命令文件
运行 Clonezilla 并开始使用创建的映像执行恢复分区任务。当系统询问是否确定继续时,选择否。输入 Clonezillas 的命令行并复制生成的文件以及即将执行的命令。将其粘贴到创建的根分区中。记下名称,它将在下一个脚本中使用。
sudo su -
cp /tmp/ocs-restore-<some date> /lib/live/mount/medium/
reboot
Clonezilla 的脚本
restore
在使用以下代码创建的分区的根目录中创建一个名为 bash 脚本:
#!/bin/bash
bye() {
local rp=(r p)
while true; do
echo -e "\e[33mReboot/Poweroff [r/p]\e[0m"
read repo
if [[ ! "${rp[@]}" =~ "$repo" || -z "$repo" ]] ; then
echo "Press 'r' or 'p'..."
continue
else
break
fi
done
case "$resh" in
r) reboot;;
s) poweroff
esac
}
ask() {
clear
local yn=(y n)
while true; do
echo -e "\e[33mAre you sure you want to restore? All saved data will be lost. [y/n]\e[0m"
read yesno
if [[ ! "${yn[@]}" =~ "$yesno" || -z "$yesno" ]] ; then
echo "Press 'y' or 'n'..."
continue
else
break
fi
done
case "$yesno" in
# here the name of the file with the command
y) /lib/live/mount/medium/ocs-restore-<a date>;;
n) bye
esac
}
[[ ! -f /home/partimag/restore ]] && ln -s /lib/live/mount/medium/home/partimag/restore /home/partimag/restore
ask
完成
重新启动后,您应该会看到一个名为“Restore”的 GRUB 条目,它将使用您的脚本执行 Clonezilla,在询问后启动系统恢复。
¹ 为什么?Clonezilla 的图像与数据分区,而不是尺寸因此图像将小于克隆分区的大小。这对于设置恢复分区的大小。
² 通过对 bash 的一些了解,可以将代码更改为任何需要或期望的内容。
答案2
应用程序“Timeshift”旨在拍摄系统文件的“快照”,以便将系统恢复到以前的状态。它可能适合您的用户情况。
Timeshift 可在 Ubuntu 软件中心安装。
答案3
与您当前的方法有同样的缺点 - 需要使用其他媒体启动 - 但是克隆兹拉是我的解决方案。