使用tar命令备份、恢复Ubuntu Linux

    想将ubuntu更换到另外一块硬盘,又不想重装系统,于是尝试了clonezilla、dd、tar三种方式。该ubuntu系统是将根目录、boot目录等所有系统目录都安装在一个分区内。

    clonezilla和dd两种方式都失败了,因为新硬盘的分区大小和老硬盘的根目录分区大小不一致,前两钟方式导致新盘分区的大小被改变。办法应该是有的,我没有研究clonezilla正确使用姿势。而dd命令估计应该使用skip跳过老盘分区表读取数据,再使用seek跳过新盘分区表将数据写入新盘分区(可以使用fdisk -l查看两个分区的开始位置),今后再做实验。

    刚开始想偷懒,直接在运行中的老系统做tar包,使用了“-exclude=/proc/* --exclude=/mnt/* --exclude=/sys/* --exclude=/tmp/* --exclude=/wjbf/* --exclude=/backup.tgz”参数去排除不需要或者不能打包的目录。然额,悲剧的是,/var目录下一堆文件和目录报错不可读取,特别是涉及docker的目录。于是重启系统用安装光盘进入救援模式,挂载老盘根分区到/mnt/old,这样就无需排除任何不能打包的系统目录了,进入挂载目录后就两步搞定:

 

1、将老盘根文件系统打包到一个单独的分区/mnt/wjbf,然后又解包到新盘所在目录/mnt/new下:

/mnt/old# tar cpf /mnt/wjbf/md127backup.tar .
/mnt/old# tar xpf /mnt/wjbf/md127backup.tar -C /mnt/new/
如果没有其他分区可用,只能打包在old目录,则在打包时,排除md127backup.tar文件:
/mnt/old# tar cpf md127backup.tar --exclude=md127backup.tar .
/mnt/old# tar xpf md127backup.tar -C /mnt/new/
然后修改/mnt/new/etc/fstab等文件,以符合挂载其他分区的需要。
 
2、在新盘/dev/sda重建grub引导记录:
mount -t proc proc /mnt/new/proc
mount -t sysfs sys /mnt/newsys
mount -o bind /dev /mnt/new/dev
mount -t devpts pts /mnt/new/dev/pts/
chroot /mnt/new/
grub-install /dev/sda
grub-install --recheck /dev/sda
update-grub
 
打完收工。
posted @ 2018-03-22 15:20  会游泳的鱼·bytefish  阅读(1861)  评论(0编辑  收藏  举报