如何将tar用于SSD上的系统和HDD上的home的完整备份和还原?


14

如何将tar用于SSD上的系统和HDD上的home的完整备份和还原?

现有的备份和还原答案似乎无法涵盖root和home位于单独设备上的情况


欢迎来到非盟!您在寻找一次性的东西还是连续/周期性的解决方案?备份目标是本地还是远程?tar并不真正在乎设备和挂载点。请编辑您的帖子以包含其他信息。
David Foerster 2014年

“现有的备份和还原答案似乎无法涵盖root和home位于单独设备上的情况”,原因:这是一个坏主意,制作2个备份文件不仅更智能,而且效率更高。
Rinzwind 2014年

Answers:


17

建议进行两次备份。如果1在/上,则1在/ home上(如果它们在不同的分区上)。如果需要一个,则必须为该命令添加很多例外。例:

sudo su
cd /
tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system / 
tar -cvpzf backuphome.tar.gz --one-file-system /home/

将备份您的根目录并排除所有已挂载的分区,例如/ media(您不想备份外部设备(您实际上不是)),并且您绝对不希望备份/ dev或/ proc之类的东西。/ home转到另一个备份。

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

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

  • --one-file-system-不要包括其他文件系统上的文件。如果要备份其他文件系统(例如/ home分区)或/ media中安装的外部媒体,则需要分别备份它们,或者忽略此标志。如果确实省略此标志,则将需要再添加几个--exclude =参数,以避免不需要的文件系统。这些将是根目录中的/ 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 / 

(我希望我得到了所有需要排除的内容)


恢复将是

sudo su
cd /
tar xvzf backup.tar.gz

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


您的两行建议非常有效,除了备份系统时我收到一条消息。“ /lib64/ld-linux86-64.so2 tar://读取时文件已更改。” 备份期间这正常吗?
Buildit 2014年

是。tar将在文件本身的备份操作期间通知您文件中的更改(它在备份之前和之后检查文件的状态)。通常,这些消息是无害的。如果您拥有自己的软件/数据并将其保存在这些文件之一上,我将自己重新创建备份。
Rinzwind 2014年

标准tar不会压缩,它只是将所有内容连接到一个文件(TAR =磁带存档)。请尝试使用gtar。
艾伦·坎贝尔

1
如果该命令不会备份某些目录,那么在还原系统时是否需要重新创建它们?另外,仅使用Deja-Dup,此方法有什么优势?
user4493605
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.