Live Ubuntu Backup V2.2,备份你的 ubuntu 为可启动的 squashfs 文件

sh/bash/dash/ksh/zsh等Shell脚本
回复
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Live Ubuntu Backup V2.2,备份你的 ubuntu 为可启动的 squashfs 文件

#1

帖子 billbear » 2009-05-25 22:21

我在上次写的 viewtopic.php?f=21&t=184968 脚本的基础上添加了一些功能,并重新命名为 lub ( Live Ubuntu Backup)。目前的版本是 2.2,新增支持 9.10 和 grub2。
下载 lub.zip 并解压,然后拷贝到 /usr/local/bin 里面就可以了。(要用 sudo cp)

把需要备份的系统启动起来,然后在终端输入
sudo lub -b
按照指示进行就可以了。(注意要先安装 lupin-casper 等,脚本会提示你)

在备份目录会产生用于直接启动备份映像的内核和菜单文件等,看备份目录里的示例菜单就明白了。

恢复过程必须要先从备份文件引导到 live 环境里,然后在终端执行
sudo lub -r
按照指示进行就可以了。

用 lub -h 可以查看帮助文档和版本信息。

3 楼拷贝了一份样例,可以参考。

用这个做了一个经我简单配置过的 ubuntu 的备份, viewtopic.php?f=103&t=238975 ,需要的拿去用。放在 U 盘里做一个 live 系统还不错。
附件
lub.zip
2.2 双语版,支持 grub2
(11.94 KiB) 已下载 2469 次
lub.sh.zip
1.2 英文版,存档留底
(8.19 KiB) 已下载 971 次
上次由 billbear 在 2009-11-08 11:58,总共编辑 17 次。
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: Live Ubuntu Backup,备份你的 ubuntu 为可启动的 squashfs 文件

#2

帖子 wangdu2002 » 2009-05-25 22:22

:em11 :em11 :em11 :em11 :em11
哈哈,Billbear老大的沙发我抢了! :em05
顺便提下,老大取名太精简了,中文就加个CN,英文加个EN总不会太长名吧! :em06
上次由 wangdu2002 在 2009-05-25 22:26,总共编辑 2 次。
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: Live Ubuntu Backup,备份你的 ubuntu 为可启动的 squashfs 文件

#3

帖子 billbear » 2009-05-25 22:22

帮助文档:用 lub -h 查看

代码: 全选

ubuntu@ubuntu-laptop:~$ lub -h
live ubuntu backup, 作者 billbear
本程序将帮助你备份运行中的 ubuntu 系统为一个可启动的 squashfs 压缩备份文件。
要恢复的时候, 从备份文件启动并再次运行本程序。
可以把备份文件恢复到另一台机器。
可以把虚拟机里的 ubuntu 迁移到真机。
可以把 wubi 安装的系统迁移到真分区。

安装:
只要拷贝此脚本到任何地方并赋予执行权限即可。
我喜欢把它放在 /usr/local/bin 里面, 这样每次运行的时候就不用写绝对路径了。

使用:
sudo 到此脚本的路径 -b
是备份,而
sudo 到此脚本的路径 -r
是恢复。
也可以用
sudo bash 到此脚本的路径 -b
和
sudo bash 到此脚本的路径 -r

注意不能用
sudo sh 到此脚本的路径 -b
和
sudo sh 到此脚本的路径 -r

备份:
程序依赖 squashfs-tools 来工作。
另外必须安装 lupin-casper 才能做出可启动的备份来。
在终端用如下命令来安装它们:
sudo apt-get install squashfs-tools lupin-casper
而后就可以用这样的命令来备份运行中的 ubuntu 系统了:
sudo 到此脚本的路径 -b
如果这个脚本在 /usr/local/bin, 只要这样
sudo lub -b
然后根据提示进行就可以了。
你可以指定存放备份的路径, 以及需要排除的文件和目录。
不必卸载移动硬盘, windows 分区, 或任何你手动挂载了的分区。它们将会自动被忽略。
因此你可以直接存放备份到移动硬盘, windows 分区等等。
小心: 你必须确定有足够的空间来存放备份。
脚本将会生成启动所需的另外几个文件。
阅读在备份存放目录生成的 menu.lst,里面会详细告诉你如何从备份文件直接启动。

恢复:
阅读在备份存放目录生成的 menu.lst,里面会详细告诉你如何从备份文件直接启动。
启动了 live ubuntu backup 之后, 打开一个终端输入
sudo 到此脚本的路径 -r
如果在备份时已经把此脚本放到了 /usr/local/bin, 现在只需敲入
sudo lub -r
并根据提示进行恢复就可以了。
注意:此脚本并不提供分区功能(只能格式化分区但不能创建,删除分区或调整分区大小)。
只能恢复备份到已有的分区。
因此建议在备份前安装 gparted,这样恢复时你就有分区工具可用了。
另外如果分区表有错误, 将不允许恢复备份,直到错误被修复。
你可以指定若干分区和它们的挂载点。
如果没有 swap 分区, 可以为你创建一个 swap 文件 (如果你这样要求的话)。
会自动生成新的 fstab 并安装 grub。
如果有必要, 还可以改变主机名, 用户名和密码。
备份系统必须在系统正在运行的状态下。
输入 sudo lub -b 根据提示进行。

代码: 全选

ubuntu@ubuntu-laptop:~$ sudo lub -b
将要备份系统。建议退出其他程序。继续?(y/n)
y
指定一个空目录 (绝对路径) 来存放备份。可以从 Nautilus 文件管理器拖放目录至此。可以使用移动硬盘。
如果不指定, 将会存放到 /home/ubuntu/backup-20090524

指定需要排除的文件/目录, 一行写一个。可以从 Nautilus 文件管理器拖放至此。以空行结束。

开始备份?(y/n)
y
Parallel mksquashfs: Using 1 processor
Creating little endian 3.1 filesystem on /home/ubuntu/backup-20090524/backup20090524.squashfs, block size 131072.
[=========================================================== ] 92925/93032  99%File /tmp/bind/var/log/ConsoleKit/history changed size while reading filesystem, attempting to re-read
[=========================================================== ] 92930/93032  99%File /tmp/bind/var/log/auth.log changed size while reading filesystem, attempting to re-read
[=========================================================== ] 93001/93032  99%File /tmp/bind/var/log/messages changed size while reading filesystem, attempting to re-read
[=========================================================== ] 93006/93032  99%File /tmp/bind/var/log/syslog changed size while reading filesystem, attempting to re-read
[=========================================================== ] 93013/93032  99%File /tmp/bind/var/log/user.log changed size while reading filesystem, attempting to re-read
[============================================================] 93032/93032 100%
Exportable Little endian filesystem, data block size 131072, compressed data, compressed metadata, compressed fragments, duplicates are removed
Filesystem size 789719.00 Kbytes (771.21 Mbytes)
	40.17% of uncompressed filesystem size (1966107.66 Kbytes)
Inode table size 1155385 bytes (1128.31 Kbytes)
	29.20% of uncompressed inode table size (3957443 bytes)
Directory table size 1113938 bytes (1087.83 Kbytes)
	46.99% of uncompressed directory table size (2370406 bytes)
Number of duplicate files found 8348
Number of inodes 115900
Number of files 87876
Number of fragments 6597
Number of symbolic links  14964
Number of device nodes 95
Number of fifo nodes 3
Number of socket nodes 35
Number of directories 12927
Number of uids 14
	root (0)
	syslog (101)
	ubuntu (1000)
	daemon (1)
	polkituser (109)
	libuuid (100)
	lp (7)
	man (6)
	avahi-autoipd (104)
	gdm (105)
	news (9)
	messagebus (108)
	hplip (103)
	klog (102)
Number of gids 29
	video (44)
	audio (29)
	tty (5)
	kmem (15)
	disk (6)
	adm (4)
	daemon (1)
	dip (30)
	lp (7)
	fuse (104)
	shadow (42)
	ssl-cert (105)
	messagebus (117)
	crontab (107)
	mail (8)
	lpadmin (106)
	mlocate (108)
	utmp (43)
	ssh (109)
	games (60)
	polkituser (118)
	root (0)
	staff (50)
	libuuid (101)
	src (40)
	admin (121)
	avahi-autoipd (110)
	gdm (111)
	klog (103)
已备份至 /home/ubuntu/backup-20090524。请阅读里面的 menu.lst :)
看看备份出来的东西。除了备份文件本身,还有内核等用于直接启动:

代码: 全选

ubuntu@ubuntu-laptop:~$ ls /home/ubuntu/backup-20090524/
backup20090524.squashfs       menu.lst
initrd.img-2.6.28-11-generic  vmlinuz-2.6.28-11-generic
看看怎么启动备份文件-都写在 menu.lst 的注释里了。
注:
可以把备份都放在内置硬盘启动;
可以把备份都放在移动硬盘,从移动硬盘启动;
也可以把内核放在内置硬盘,squashfs 放在移动硬盘,从内置硬盘引导内核启动移动硬盘的备份)

代码: 全选

ubuntu@ubuntu-laptop:~$ cat /home/ubuntu/backup-20090524/menu.lst 
# 这个 menu.lst 是给 grub4dos 用的。稍作修改才能用于 gnu grub


# 如何在 windows 机器上直接启动你的 backup20090524.squashfs:
# 从 http://download.gna.org/grub4dos 下载最新的 grub4dos
# 解压下载的 grub4dos, 并拷贝其中的 grldr 和 grldr.mbr 到 c: 盘根目录
# 把这个 menu.lst 也拷贝到 c: 盘根目录
# 然后在任意分区根目录建立一个 "casper" 目录并拷贝 backup20090524.squashfs, initrd.img-2.6.28-11-generic, vmlinuz-2.6.28-11-generic 到它里面
# 接着添加下面这行文字到 boot.ini 末尾 (不包含#号)
# c:\grldr.mbr="grub4dos"
##### 对于 Windows Vista, 可以自行建立一个 boot.ini 文件,写上:
##### [boot loader]
##### [operating systems]
##### c:\grldr.mbr="grub4dos"
# 重启选择 grub4dos 即可


# 如何在 linux 机器上直接启动你的 backup20090524.squashfs:
# 在任意分区根目录建立一个 "casper" 文件夹 (注意 gnu grub 不能读取 NTFS, 因此不能把 casper 放在那里) 并拷贝 backup20090524.squashfs, initrd.img-2.6.28-11-generic, vmlinuz-2.6.28-11-generic 到它里面
# 然后拷贝下面的两个 Live Ubuntu Backup 启动项到 /boot/grub/menu.lst 末尾并把 "find --set-root" 行改为 "root (hd?,?)" (你创建 "casper" 文件夹的那个分区)


default	0
timeout 10

title Live Ubuntu Backup 20090524
find --set-root /casper/vmlinuz-2.6.28-11-generic
kernel /casper/vmlinuz-2.6.28-11-generic boot=casper ro ignore_uuid
initrd /casper/initrd.img-2.6.28-11-generic

title Live Ubuntu Backup 20090524, Recovery Mode
find --set-root /casper/vmlinuz-2.6.28-11-generic
kernel /casper/vmlinuz-2.6.28-11-generic boot=casper ro single ignore_uuid
initrd /casper/initrd.img-2.6.28-11-generic
ubuntu@ubuntu-laptop:~$ 
要恢复,最好应该先把备份文件启动起来。在其他环境恢复备份,不能预料可否成功。当然,用同版本的 livecd 引导恢复我们的备份理论上应该成功。下面是启动了备份文件之后进行的恢复操作(其实也可以叫做安装)

代码: 全选

ubuntu@ubuntu:~$ sudo lub -r
将恢复你的备份。继续? (y/n)
y
指定 squashfs 备份文件 (绝对路径)。可以从 Nautilus 文件管理器拖放。如果你是从备份的 squashfs 启动的, 直接回车即可, 将会使用本次启动的 squashfs 文件。

将哪个分区作为 / ?
1) /dev/sda1 ntfs  5198MB      5) /dev/sda7 swap  625MB
2) /dev/sda10 swap  280MB      6) /dev/sda8 jfs  1464MB
3) /dev/sda5 reiserfs  206MB   7) /dev/sda9 ext2  1291MB
4) /dev/sda6 reiserfs  6087MB  8) /dev/sdb1 vfat  8015MB
#? 4
你选择的是 /dev/sda6, 里面现有这些文件/目录:
bin   cdrom  etc   initrd.img  media  opt   root  selinux  sys	usr  vmlinuz
boot  dev    home  lib	       mnt    proc  sbin  srv	   tmp	var
确定?(y/n)
y
是否格式化此分区?(y/n)
y
格式化 /dev/sda6 为:
1) ext2
2) ext3
3) ext4
4) reiserfs
5) jfs
6) xfs
#? 3
将哪个分区作为 swap ?
1) /dev/sda1 ntfs  5198MB	     6) /dev/sda8 jfs  1464MB
2) /dev/sda10 swap  280MB	     7) /dev/sda9 ext2  1291MB
3) /dev/sda5 reiserfs  206MB	  8) /dev/sdb1 vfat  8015MB
4) 				           9) 无
5) /dev/sda7 swap  625MB	     10) 无,并结束分区设定。
#? 7
你选择的是 /dev/sda9, 里面现有这些文件/目录:
lost+found
确定?(y/n)
y
/dev/sda9 将被格式化为 swap.
将哪个分区作为 /home ?
1) /dev/sda1 ntfs  5198MB	     6) /dev/sda8 jfs  1464MB
2) /dev/sda10 swap  280MB	     7) 
3) /dev/sda5 reiserfs  206MB	  8) /dev/sdb1 vfat  8015MB
4) 				           9) 无
5) /dev/sda7 swap  625MB	     10) 无,并结束分区设定。
#? 6
你选择的是 /dev/sda8, 里面现有这些文件/目录:
billbear
确定?(y/n)
y
是否格式化此分区?(y/n)
y
格式化 /dev/sda8 为:
1) ext2
2) ext3
3) ext4
4) reiserfs
5) jfs
6) xfs
#? 6
将哪个分区作为 /boot ?
1) /dev/sda1 ntfs  5198MB	     6) 
2) /dev/sda10 swap  280MB	     7) 
3) /dev/sda5 reiserfs  206MB	  8) /dev/sdb1 vfat  8015MB
4) 				           9) 无
5) /dev/sda7 swap  625MB	     10) 无,并结束分区设定。
#? 3
你选择的是 /dev/sda5, 里面现有这些文件/目录:
abi-2.6.28-11-generic	      memtest86+.bin
config-2.6.28-11-generic      System.map-2.6.28-11-generic
grub			      vmcoreinfo-2.6.28-11-generic
initrd.img-2.6.28-11-generic  vmlinuz-2.6.28-11-generic
确定?(y/n)
y
是否格式化此分区?(y/n)
y
格式化 /dev/sda5 为:
1) ext2
2) ext3
3) ext4
4) reiserfs
5) jfs
6) xfs
#? 1
将哪个分区作为 /tmp ?
1) /dev/sda1 ntfs  5198MB	     6) 
2) /dev/sda10 swap  280MB	     7) 
3) 				               8) /dev/sdb1 vfat  8015MB
4) 				           9) 无
5) /dev/sda7 swap  625MB	     10) 无,并结束分区设定。
#? 10
开始格式化分区 (如果有需要格式化的分区的话)。继续? (y/n)
y
正在格式化 /dev/sda6
Done

正在格式化 /dev/sda8
Done

正在格式化 /dev/sda5
Done

正在格式化 /dev/sda9
Setting up swapspace version 1, size = 1261064 KiB
no label, UUID=a3491a9c-8226-4a29-bcf7-608b5a4e553f
Done

如果你为目标系统安排了其他分区, 现在打开另一个终端并挂载它们在 /tmp/target 下合适的地方。完成后回车。

把 GRUB stage1 安装到哪里?
建议安装到 /dev/sda 或 /dev/sda5
1) /dev/sda,MBR		       6) /dev/sda7,swap
2) /dev/sdb,MBR		       7) /dev/sda8,xfs
3) /dev/sda10,swap	       8) /dev/sda9,swap
4) /dev/sda5,ext2	        9) /dev/sdb1,vfat
5) /dev/sda6,ext4	        10) 不安装(不推荐)
#? 1
将马上开始恢复。继续?(y/n)
y
......
输入新的主机名。留空将使用旧的主机名。
旧的主机名: ubuntu-laptop
新的主机名:
billbear-pc
是否改变用户名 ubuntu? (y/n)
y
新的用户名:
billbear
是否改变用户 billbear 的密码? (y/n)
y
输入新的 UNIX 口令: 
重新输入新的 UNIX 口令: 
passwd:已成功更新密码
如果刚才的密码改变不成功, 你还有机会。是否再次改变用户 billbear 的密码? (y/n)
n
搞定了 :)
ubuntu@ubuntu:~$ 
上次由 billbear 在 2009-11-04 17:01,总共编辑 1 次。
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: Live Ubuntu Backup,备份你的 ubuntu 为可启动的 squashfs 文件

#4

帖子 billbear » 2009-05-25 22:31

没关系,下载后名字可以随便改 :em09
头像
非主流1987
帖子: 427
注册时间: 2008-05-09 23:50

Re: Live Ubuntu Backup,备份你的 ubuntu 为可启动的 squashfs 文件

#6

帖子 非主流1987 » 2009-05-25 23:17

我也来占位子的说····学习···学习···
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: Live Ubuntu Backup,备份你的 ubuntu 为可启动的 squashfs 文件

#8

帖子 wangdu2002 » 2009-05-26 0:46

报告老大,在本本上备份成功,但在另一台机上试图Live失败(904系统,试了两次)! :em20
因为我的本本上的Home很大(数十G),所以我备份时选择了排除Home(第二次试了排除/home/wangdu904)。但Live时提示/home/wangdu904不存在,结果没办法登录进去。 :em20
等下再试下6pt恢复到另一台机试下。 :em06
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: Live Ubuntu Backup,备份你的 ubuntu 为可启动的 squashfs 文件

#9

帖子 billbear » 2009-05-26 1:04

你可以将 /home/wangdu904 下的可见目录逐个排除,但是一定要有家,否则不好启动到桌面。
不过,你倒是可以去 recovery mode 下的 root shell,一样可以恢复的。
排除目录要小心,乱排除可以做出残废的不能启动的备份。
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: Live Ubuntu Backup,备份你的 ubuntu 为可启动的 squashfs 文件

#10

帖子 wangdu2002 » 2009-05-26 1:07

billbear 写了:你可以将 /home/wangdu904 下的可见目录逐个排除,但是一点要有家,否则不好启动到桌面。
不过,你倒是可以去 recovery mode 下的 root shell,一样可以恢复的。
哇,老大,我Home下NN个目录,逐一排除,那还不得累死。 :em20
等下进恢复模式试下看能否重构一个系统出来。 :em01
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: Live Ubuntu Backup,备份你的 ubuntu 为可启动的 squashfs 文件

#11

帖子 billbear » 2009-05-26 1:16

你可以在家里建一个目录比如叫 exclude 然后把要排除的东西都拽进去嘛
脚本的本意是我自己用来备份干净的系统的。
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: Live Ubuntu Backup,备份你的 ubuntu 为可启动的 squashfs 文件

#12

帖子 wangdu2002 » 2009-05-26 1:21

看了老大的说明,估计还是在移动硬盘上装个干净的系统,然后再备份成Live,然后再用这个Live来安装比较好些。现有的系统挪移不太妥当。用户名也不好改。 :em06
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
头像
Dim
帖子: 640
注册时间: 2009-04-06 15:03

Re: Live Ubuntu Backup,备份你的 ubuntu 为可启动的 squashfs 文件

#13

帖子 Dim » 2009-05-26 9:07

:em11 又出好东东。。。论坛里这么多高手,何不几个一起搞个更完美的备份软件呢
,
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: Live Ubuntu Backup,备份你的 ubuntu 为可启动的 squashfs 文件

#14

帖子 billbear » 2009-05-26 9:45

photor 写了:支持的版本?从8.04到9.10?还有衍生版? :em09
大便系都应该可以吧。
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: Live Ubuntu Backup,备份你的 ubuntu 为可启动的 squashfs 文件

#15

帖子 billbear » 2009-05-26 9:49

@wangdu2002:
嗯,你的问题有普遍意义。home 下的个人文件应该排除,但是还有很多隐藏文件不应该排除。
打算添加这个功能,可以帮你排除 home 里所有个人文件但留下系统需要的东西。
回复