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来确保文件权限属性,而且需要管理员权限来操作,否则有些文件会拒绝被读取打包。