我将如何使用 tar 对 SSD 上的系统和 HDD 上的家庭进行完整备份和还原?

Bui*_*dit 17 ssd backup hard-drive restore

我将如何使用 tar 对 SSD 上的系统和 HDD 上的家庭进行完整备份和还原?

现有的备份和恢复答案似乎没有涵盖 root 和 home 在不同设备上的情况

Rin*_*ind 22

建议做两次备份。如果它们在不同的分区上,则为 / 和 /home 为 1。如果你想要一个,你将不得不为那个命令添加很多例外。例子:

sudo su
cd /
tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system / 
tar -cvpzf backuphome.tar.gz --one-file-system /home/
Run Code Online (Sandbox Code Playgroud)

将备份您的根目录并排除所有已安装的分区,例如 /media(您不想备份外部设备(您确实不想备份))并且您绝对不想备份诸如 /dev 或 /proc 之类的内容。/home 转到另一个备份。

在上述方法中,备份存储在 / 中。最好将其存储在外部媒体上;然后,您可以在 backup.tar.gz 前面放置一个目录,并删除--exclude=...第一个命令中的 。

  • backup.tar.gz 是备份。
  • --exclude将阻止备份实际备份。
  • cvpzf:创建、详细、保留权限、压缩、使用文件。

  • --one-file-system - 不包括不同文件系统上的文件。如果您想要备份其他文件系统,例如 /home 分区或挂载在 /media 中的外部媒体,您要么需要单独备份它们,要么省略此标志。如果你省略了这个标志,你将需要添加更多的 --exclude= 参数以避免你不想要的文件系统。这些将是 root 中的 /proc、/sys、/mnt、/media、/run 和 /dev 目录。/proc 和 /sys 是虚拟文件系统,它们为正在运行的内核的变量提供窗口,因此您不想尝试备份或恢复它们。/dev 是一个 tmpfs,其内容由 udev 动态创建和删除,因此您也不想备份或恢复它。同样, /run 是一个 tmpfs ,它保存有关不需要备份的正在运行的系统的变量(Source)。


所以......如果你真的仍然想要一个“单线”,它可能看起来像这样:

cd /
tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --exclude=/proc 
--exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys / 
Run Code Online (Sandbox Code Playgroud)

(我希望我得到了所有需要排除的东西)


恢复将是

sudo su
cd /
tar xvzf backup.tar.gz
Run Code Online (Sandbox Code Playgroud)

我没有sudo在 tar 命令前面使用,因为您会收到有关权限的错误消息(因为文件归 root 拥有)。