1、tar打包,解压时会自动按打包时的路径还原,即便是加-C指定路径,依然会在该路径下建立打包时的路径还原。
如果在本系统进行打包及还原,一般不会产生问题。比如 tar -zcvpf bird.tar.gz /home/bird 你在别的linux系统下还原时,它依旧解压为/home/bird,如果你加-C指定路径,比如 tar -zxvpf bird.tar.gz -C /mnt 结果就是 /mnt/home/bird。(这是介绍tar打包特性,不是具体操作)。

2、如果准备在一个系统打包而在别的系统进行还原的话,有时候就会有麻烦,即便是指定路径。还原时多出路径怎么办?
比如备份sdb3的arch系统,怎么办比较好呢,先把sdb3挂载到/media/arch,
sudo mount /dev/sdb3 /media/arch

然后 cd /media/arch,然后用相对路径打包
cd /media/arch sudo tar -zcvpf (保存路径)arch.tar.gz ./

用这个办法打包,解压时,要么cd到需要解压的目录,然后sudo tar -zxvpf (保存路径)arch.tar.gz进行解压,要么用-C指定路径,都可以。比如
sudo tar -zxvpf (所在路径)arch.tar.gz -C /media/arch/

这样貌似麻烦,但比较灵活,可以比较自如的变换解压后的文件路径。

3、如果打包时用的是绝对路径,如上例子的情况:
sudo tar -zcvpf (保存路径)arch.tar.gz /media/arch/
,还原时就需要把新选用的分区依旧挂载在/media/arch路径上,直接
sudo tar -zxvpf (保存路径)arch.tar.gz
就可以了。

4、需注意,要用参数-p来确保文件权限属性,而且需要管理员权限来操作,否则有些文件会拒绝被读取打包。

以上,转自 ubuntu中文论坛

当然恢复后还要修改下/etc/fstab 和修复grub引导的,这里就不说了,我前天打包ubuntu 时解压的时候输错命令了,解压的命令与恢复的命令只有一个字母不一样,结果我打错了,致使打包好的数据没了,教训啊,看清命令再回车啊

标签: tar打包备份