[教程]2013年8月更新使用tar备份还原ubuntu的全过程

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
tracyone
帖子: 866
注册时间: 2010-11-19 14:25
系统: 乌班图
来自: onetracy.com
联系:

[教程]2013年8月更新使用tar备份还原ubuntu的全过程

#1

帖子 tracyone » 2013-07-07 16:08

使用tar备份还原ubuntu的全过程

大家好,发个贴记录下自己折腾的过程,望多多指教。
操作系统:ubuntu10.04
硬件环境:跑在windows xp下的虚拟机vmware workstation 7.1.6

折腾原因:我一直在虚拟机下跑ubuntu,虚拟机下备份还原系统灰常简单,对于vmware
只要使用快照即可备份还原了,之前也一直这样做,快照了5、6次,但是呢,手贱
将这些快照文件手动删除掉了,原来一直觉得vmware的快照功能很神奇,一个快照文件
才100MB..然后就能完整的恢复所有东西..现在发现不是,我的ubuntu虚拟机占用空间变得
异常的大(接近80G),而实际ubuntu里面所有东西占用的空间不到其一半,所以就产生了备份
系统然后还原的想法....

备份还原思路:tar备份整个系统(除去一些不必要的东西),然后再新建一个虚拟机安装同样的
系统,使用同样的分区方案,安装完毕后把备份的系统复制到新的系统上,然后进入live cd
rm -rf掉除了备份文件及一些没必要删除文件之外的所有东西,然后tar恢复。


第一步备份:
在/目录下执行下面代码:

代码: 全选

sudo tar -cvpjf /main_backup.tar.bz2 --directory=/ --exclude=opt/ti-ezsdk_dm816x-evm_5_03_01_15 --exclude=opt/DVRRDK_02.00.00.23 --exclude=opt/ti --exclude=home/tracyone/MPC_PROJ --exclude=root/DVS_PROJ --exclude=root/workspace_v5_2 --exclude=mnt --exclude=proc --exclude=lost+found --exclude=sys --exclude=media --exclude=dev --exclude=tmp --exclude=main_backup.tar.bz2 .
好吧网上某些人,只转发,不验证的,在网上找tar备份相关的东西,发现前篇一律,而且都是"--exclude=/mnt"这样的形式,我实践证明
这样做之后,依然会包括mnt文件夹,正确的做法是"--exclude=mnt";
由于我是还原到另外一台电脑上(另外一个虚拟机,另外虚拟硬盘),所以dev文件夹也是不能包括的。


第二步安装新的虚拟机
必须保证同样的系统同样分区,我没试过不同分区下是否可以恢复成功,我猜应该不行,两个虚拟机都是一个/加一个swap两个分区.

第三步恢复:
安装好新的虚拟机之后,进入其livecd(设置cdrom启动并且指定ubuntu系统的iso文件即可进入)
进入live cd之后,打开文件浏览器你会在左侧看到xxG文件系统,点击一下就会自动挂载到/media文件夹了

代码: 全选

sudo -s	
cd /media/<对应的uuid号>
rm -rf root home usr lib etc.........
sudo tar -xvjpf main_backup.tar.bz2 -C /mnt 
注意删除的时候,不要删除上面备份系统时排除的一些文件夹,比如说dev mnt media sys这些文件夹

恢复好之后,别急着重启,由于是不同硬盘
所以我们必须修改启动相关的配置
执行

代码: 全选

gedit /media/<对应uuid号>/boot/grub/grub.cfg
找到里面类似这样的"22efe8c5-af5e-4744-b7e4-9901a29a679c"的字符串
这个东西是你的硬盘设备的uuid每个硬盘都不一样
然后查看你当前硬盘的uuid并将其替换到grub.cfg里面的uuid
查看方式是:

代码: 全选

sudo blkid /dev/sdax 
x是多少取决以你的boot文件所在分区是出于那个分区,我的/和/boot是同一个分区内,所以..

第四步
上一步完成之后,重启就可以启动了,但是启动之后出现
"Could not update ICEauthority file /var/lib/gdm/.ICEauthority"
的错误并导致无法输入用户和密码登录
此时你应该
按Ctrl+Alt+shift+F1(这是虚拟机按法,不是虚拟机就按Ctrl+Alt+F1就行了)
进入字符界面,输入用户和密码(你备份系统的用户和密码)
然后执行下面三个命令

代码: 全选

sudo chown gdm.gdm -R /var/lib/gdm
sudo chmod 600 /var/lib/gdm/.ICEauthority
sudo service gdm restart
至此,完毕,可以正常登录
经测试,恢复的系统绝大大部分软件功能正常...

出现的问题:
ubuntu-tweak的守护进程无法正常启动,我删除重新安装也是如此..我不知道咋搞..
在menu菜单里面的关机菜单不见了,只有注销菜单..


2013年8月29号增加
不好意思上面压缩的命令其实是错的.......如果用上面的代码压缩的话会造成忽略掉当前目录及其子目录下同名的文件夹...比如说/sys,/usr/include/sys这两个会被同时忽略掉,所以正确的做法是:
在每个路径前加"./"

代码: 全选

sudo tar -cvpjf /main_backup.tar.bz2 --directory=/ --exclude=./opt/ti-ezsdk_dm816x-evm_5_03_01_15 --exclude=./opt/DVRRDK_02.00.00.23 --exclude=./opt/ti --exclude=./home/tracyone/MPC_PROJ --exclude=./root/DVS_PROJ --exclude=./root/workspace_v5_2 --exclude=./mnt  --exclude=./lost+found --exclude=./sys --exclude=./media --exclude=./tmp --exclude=./main_backup.tar.bz2 .
还有上面的恢复方法是非常笨的,没有效率的,我们只需要新建虚拟机,而不需要在装一个新系统然后再去删掉........,关于uuid的做法也是非常笨的...请看新的做法:

1,新建虚拟机

2,从光驱启动,光驱里放入ubuntu的镜像

3,启动后选择Try ubuntu,从而进入live CD

4,使用命令行或者Gparted对虚拟机硬盘进行分区:我的情况是38GB做主分区ext4,2GB扩展,这2GB扩展在全部作为SWAP,所以最终产生/dev/sda1和/dev/sda5这两个块设备,然后执行下面的命令:

代码: 全选

tune2fs -U 22efe8c5-af5e-4744-b7e4-9901a29a679c /dev/sda1
mkswap -U 4b433d7b-846f-4307-93f8-26ab041e8d67 /dev/sda5
上面改变两个分区的uuid为原来我们备份时硬盘的uuid,tune2fs命令可以改变ext2、ext3/ext4的,而swap分区只能用这个mkswap了

5,恢复到/dev/sda1

代码: 全选

		mount /dev/sda1 /mnt
		sudo tar -xvjpf main_backup.tar.bz2 -C /mnt
		cd /mnt
		mkdir sys mnt media tmp 
		mkdir mnt/hgfs
		chmod 1777 tmp
		grub-install --root-directory=/mnt /dev/sda
上面第一条命令是挂载..然后恢复,然后建立我们刚才省略的一些系统文件夹
最关键一点是安装bootloader,我这是ubuntu10.04,命令选项可能不一致,自行搜索
总之,没有安装bootloader是启动不了的。

这样之后就能启动了,但是启动之后还是会出现
"Could not update ICEauthority file /var/lib/gdm/.ICEauthority"
按照上面之前提到的做法去做就是了.

最后,前面提到的,ubuntu-tweak的守护进程无法正常启动等问题,
这个问题可以归纳为:无法解锁,需要解锁的东西不正常,像软件中心等..
现在我解决,解决方法是重新安装一个小组件dbus(几百kb)
有人介绍下这个东东有什么作用么,我是在终端运行gdmsetup(登陆窗口)
按照提示一步一步找到这个解决方案的,
上次由 tracyone 在 2013-09-01 9:48,总共编辑 5 次。
头像
lxf1992521
帖子: 240
注册时间: 2011-06-26 18:28
联系:

Re: [教程]使用tar备份还原ubuntu的全过程

#2

帖子 lxf1992521 » 2013-07-07 20:30

事实上tar备份很简单,但有几个地方需要注意一下:
1.尽量使用LiveCD进行备份,以免系统正在运行时有变化;
2.tar的排除选项后直接就是本目录下的文件名,而不应该是路径名;
3.尽量使用LiveCD进行还原,重启前需要该一下grub.cfg和fstab两个文件里面相关的UUID(根目录、swap分区等)……

上面这些是自己在备份服务器版Ubuntu的经验!
头像
麦斯特
帖子: 1034
注册时间: 2005-03-28 0:00
系统: Gentoo x64
来自: ☸我佛山人

Re: [教程]使用tar备份还原ubuntu的全过程

#3

帖子 麦斯特 » 2013-07-07 20:46

呵呵,tar备份我都是用LiveCD启动之后,直接挂载到/mnt,不管三七二十一就cd /mnt && tar cJpvf /tar/BackUP.tzr.xz .,然后关机睡觉。
Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire.
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: [教程]使用tar备份还原ubuntu的全过程

#4

帖子 TeliuTe » 2013-07-08 11:30

这几天一直在用tar备份XAMPP,来回折腾,以前用来备份恢复过U8.04
系统备份用再生龙也挺好的
头像
tracyone
帖子: 866
注册时间: 2010-11-19 14:25
系统: 乌班图
来自: onetracy.com
联系:

Re: [教程]使用tar备份还原ubuntu的全过程

#5

帖子 tracyone » 2013-07-08 23:05

lxf1992521 写了:事实上tar备份很简单,但有几个地方需要注意一下:
1.尽量使用LiveCD进行备份,以免系统正在运行时有变化;
2.tar的排除选项后直接就是本目录下的文件名,而不应该是路径名;
3.尽量使用LiveCD进行还原,重启前需要该一下grub.cfg和fstab两个文件里面相关的UUID(根目录、swap分区等)……

上面这些是自己在备份服务器版Ubuntu的经验!
第2点最狗血,网上搜索极少提到这点,直接照搬错误的.
请教下如果备份到另外台电脑,分区方案不同,能恢复成功么?
头像
tracyone
帖子: 866
注册时间: 2010-11-19 14:25
系统: 乌班图
来自: onetracy.com
联系:

Re: [教程]使用tar备份还原ubuntu的全过程

#6

帖子 tracyone » 2013-07-08 23:08

麦斯特 写了:呵呵,tar备份我都是用LiveCD启动之后,直接挂载到/mnt,不管三七二十一就cd /mnt && tar cJpvf /tar/BackUP.tzr.xz .,然后关机睡觉。
我的帖子里面说道要删除,直接恢复的话,只存在现在系统的文件还是保存下来吧,当然有些保存下来没问题,比如说home那些.,打个比方你因安装了某个软件导致系统奔溃,你也无法删干净这个软件,如果你直接恢复你备份的系统,这个软件的文件依然存在
ubhtm
帖子: 11
注册时间: 2013-03-19 9:15

Re: [教程]2013年8月更新使用tar备份还原ubuntu的全过程

#7

帖子 ubhtm » 2013-11-02 13:51

这样做之后,依然会包括mnt文件夹,正确的做法是"--exclude=mnt";

这样就只排除来/mnt里边到文件,但这个挂在点还是备份了的,省得你再mkdir吧
回复