我是 Linux 新手。我在我的 VPS 上安装了 Ubuntu 13.04 的新模板,并使用 TAR 进行了完整的系统备份:
sudo tar -cvpjf backup.tar.bz2 --exclude=/backup.tar.bz2 --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/mnt/* --exclude=/tmp/* --exclude=/lost+found/* --exclude=/media/* /
现在有些事情搞砸了,我想恢复档案并删除后来创建/更改的“其他所有内容”(例如 Win 中的还原点)。
在 Linux 上这实际上可行吗?
谢谢你!
答案1
我怀疑你需要做的事情会像这样。
- 停止不需要的运行服务
- 将 tar 文件解压到临时位置
- 使用带有选项的 rsync
-delete
并适当排除将备份提取到文件系统根目录的临时位置中的 tosync。 - 重新启动,因为您可能仍在运行已删除/替换的文件的程序。
我如何才能知道哪些服务正在运行以及哪些服务是必需的?
由于您实际上想要清除所有内容,因此唯一必不可少的服务是远程访问系统和访问任何文件系统所需的服务。这可能包括 SSH,也可能包括其他服务。要查看正在运行的内容,只需使用 ps、top、pstree 或其他类似工具。
您认为哪些排除是“适当的”?
这完全取决于您备份的内容以及您想要覆盖的文件系统。
显然,覆盖任何临时文件系统(如 /tmp、/var/tmp 等)没有任何意义。基本上,这意味着您排除了目前挂载的 tmpfs 中的任何内容。
如果您尝试同步覆盖 /proc 或 /sys 文件系统,也会严重损害您的系统。
因此,我对“适当”的定义是您在主机上设置的所有文件系统。由于灵活性很高,您需要为自己的系统找出正确的设置。
您能举一个如何使用带有 -delete 选项的 rsync 的例子吗?
并非如此,它应该是这样的rsync --dry-run --delete -av /source/ /destination/
。
我很少处理 VPS,而且我总是进行本地控制,当我需要将系统恢复到较早的状态时,我总是从 livecd/pxe 启动,这使得恢复过程变得容易得多。从正在运行的系统内部恢复到较早的状态需要进行更多排除。我不知道您的系统需要什么,您最好构建一个测试环境并试用一下。