[分享]Shell编程基础

我在上次写的 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 系统还不错。
附件:
文件注释: 2.2 双语版,支持 grub2
lub.zip [11.94 KiB]
被下载 433 次
文件注释: 1.2 英文版,存档留底
lub.sh.zip [8.19 KiB]
被下载 181 次


最后由 billbear 编辑于 2009-11-08 11:58,总共编辑了 17 次

作者: billbear   发布时间: 2009-05-25


哈哈,Billbear老大的沙发我抢了!
顺便提下,老大取名太精简了,中文就加个CN,英文加个EN总不会太长名吧!

作者: wangdu2002   发布时间: 2009-05-25

帮助文档:用 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   发布时间: 2009-05-25

没关系,下载后名字可以随便改

作者: billbear   发布时间: 2009-05-25

啊哟 有新作 我得占个位

作者: ptptptptptpt   发布时间: 2009-05-25

我也来占位子的说····学习···学习···

作者: 非主流1987   发布时间: 2009-05-25

支持的版本?从8.04到9.10?还有衍生版?

作者: photor   发布时间: 2009-05-26

报告老大,在本本上备份成功,但在另一台机上试图Live失败(904系统,试了两次)!
因为我的本本上的Home很大(数十G),所以我备份时选择了排除Home(第二次试了排除/home/wangdu904)。但Live时提示/home/wangdu904不存在,结果没办法登录进去。
等下再试下6pt恢复到另一台机试下。

作者: wangdu2002   发布时间: 2009-05-26

你可以将 /home/wangdu904 下的可见目录逐个排除,但是一定要有家,否则不好启动到桌面。
不过,你倒是可以去 recovery mode 下的 root shell,一样可以恢复的。
排除目录要小心,乱排除可以做出残废的不能启动的备份。

作者: billbear   发布时间: 2009-05-26

billbear 写道:
你可以将 /home/wangdu904 下的可见目录逐个排除,但是一点要有家,否则不好启动到桌面。
不过,你倒是可以去 recovery mode 下的 root shell,一样可以恢复的。

哇,老大,我Home下NN个目录,逐一排除,那还不得累死。
等下进恢复模式试下看能否重构一个系统出来。

作者: wangdu2002   发布时间: 2009-05-26

你可以在家里建一个目录比如叫 exclude 然后把要排除的东西都拽进去嘛
脚本的本意是我自己用来备份干净的系统的。

作者: billbear   发布时间: 2009-05-26

看了老大的说明,估计还是在移动硬盘上装个干净的系统,然后再备份成Live,然后再用这个Live来安装比较好些。现有的系统挪移不太妥当。用户名也不好改。

作者: wangdu2002   发布时间: 2009-05-26

又出好东东。。。论坛里这么多高手,何不几个一起搞个更完美的备份软件呢

作者: Dim   发布时间: 2009-05-26

photor 写道:
支持的版本?从8.04到9.10?还有衍生版?

大便系都应该可以吧。

作者: billbear   发布时间: 2009-05-26

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

作者: billbear   发布时间: 2009-05-26

Dim 写道:
:em11 又出好东东。。。论坛里这么多高手,何不几个一起搞个更完美的备份软件呢

开源嘛,就是这个样子,你看看有多少 linux 发行版

ubuntu-cloner 和 LUB,应该说各有侧重,算是一个互补。

ubuntu-cloner 不能把系统备份成 可启动的 squashfs 文件,而 LUB 可以

ubuntu-cloner 有图形界面,操作方便些,但依赖于图形组件(xorg、zenity等)

LUB 虽然只有字符模式,但不依赖于图形组件,适用面广

二者也可以互相“剽窃”,因为代码都可见。 近期偶准备剽窃一下

作者: ptptptptptpt   发布时间: 2009-05-26

佩服,受教了!!

作者: disillusion   发布时间: 2009-05-26

ptptptptptpt 写道:
Dim 写道:
:em11 又出好东东。。。论坛里这么多高手,何不几个一起搞个更完美的备份软件呢

开源嘛,就是这个样子,你看看有多少 linux 发行版

ubuntu-cloner 和 LUB,应该说各有侧重,算是一个互补。

ubuntu-cloner 不能把系统备份成 可启动的 squashfs 文件,而 LUB 可以

ubuntu-cloner 有图形界面,操作方便些,但依赖于图形组件(xorg、zenity等)

LUB 虽然只有字符模式,但不依赖于图形组件,适用面广

二者也可以互相“剽窃”,因为代码都可见。 近期偶准备剽窃一下


其实我和 pt 互相借鉴了很多代码,私下也有过讨论。最初的设想是 pt 的,后来沿着各自的方向实现罢了。

作者: billbear   发布时间: 2009-05-26

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

哇,老大太捧了,这个功能完成后,再用来备份现在系统成Squashfs成live,随便拿到一台机上,就立马可以搞出个可用系统出来了,比直接安装快多了。
此外,如果能够可以选择生成一个新用户则更完美了。

作者: wangdu2002   发布时间: 2009-05-26

不是有原用户改名的功能了吗? 需要建立那么多用户吗?

作者: billbear   发布时间: 2009-05-26

引用:
不是有原用户改名的功能了吗? 需要建立那么多用户吗?

那可能是我恢复时出了差错,我改用户名时,只能增加字符,退格键用不了,结果搞出一堆乱码。

作者: wangdu2002   发布时间: 2009-05-26

详细点说?不太明白

作者: billbear   发布时间: 2009-05-27

感觉这个 update-grub 挺神的,chroot 之后还能判断出 UUID

作者: ptptptptptpt   发布时间: 2009-05-27

mark

作者: Jarson   发布时间: 2009-05-27

昨天试了 debian ,最大的问题是源里没有 lupin-casper,这样不能做成可启动备份,不过仍然能在另一个 live 环境下恢复。不知道把 ubuntu 的 deb 包拿过去能不能安装上 lupin-casper。或者自己定制 initrd?这个不是很了解, pt 解释下?
另外的问题是大便默认没有安装 parted,要先装一下。还有大便的 swap 没有 uuid 的,脚本打算小修一下,如果分区没有 uuid,就使用 /dev/sdaX 之类。

作者: billbear   发布时间: 2009-05-27

billbear 写道:
昨天试了 debian ,最大的问题是源里没有 lupin-casper,这样不能做成可启动备份,不过仍然能在另一个 live 环境下恢复。不知道把 ubuntu 的 deb 包拿过去能不能安装上 lupin-casper。或者自己定制 initrd?这个不是很了解, pt 解释下?


直接拿 ubuntu 的 lupin-casper 恐怕不行。自己定制 initrd 应该可以。knoppix live DVD 就是用 debian 做的 。

不过肯定比 ubuntu 麻烦。

作者: ptptptptptpt   发布时间: 2009-05-27

ptptptptptpt 写道:
感觉这个 update-grub 挺神的,chroot 之后还能判断出 UUID


思来想去,莫非 update-grub 是从 fstab 中抽取的 UUID??

试了一下,果然!

将 fstab 改名, update-grub 就出错了; 改回来,就好了
代码:
root@pt-desktop:~# target_cmd /media/disk-2/  update-grub -y
Searching for GRUB installation directory ... found: /boot/grub
Cannot determine root device.  Assuming /dev/hda1
This error is probably caused by an invalid /etc/fstab
awk: cannot open /etc/fstab (No such file or directory)
root@pt-desktop:~# target_cmd /media/disk-2/  update-grub -y
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ...

Could not find /boot/grub/menu.lst file.
Generating /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.28-12-generic
Found kernel: /boot/vmlinuz-2.6.28-11-generic
Found kernel: /boot/memtest86+.bin
Updating /boot/grub/menu.lst ... done

root@pt-desktop:~#

作者: ptptptptptpt   发布时间: 2009-05-27

是的
所以我的 generate_fstab 一定要在 update-grub 之前执行。解决无 uuid 分区的问题也就容易了,只要把 fstab 和 /etc/initramfs-tools/conf.d/resume 里的设备写成 /dev/sdaX 就行了, menu.lst 就不需要操心了。

作者: billbear   发布时间: 2009-05-27

我是下意识地把 update-grub 放到了 generate_fstab 后面,因为 “安装GRUB” 一般都放在最后一步

没想到其中还有这等玄机。。。

作者: ptptptptptpt   发布时间: 2009-05-27

billbear 写道:
详细点说?不太明白

没什么,就是从Revorery模式进root后,玩了一把lub的演示过程,到可以更换用户名时,不知怎么会出现退格键没法用的情况出来了,可能是备份是用的是
lua属中文的,但因为排除了/Home/xxxx后,进的root没有中文,所有中文提示全是!!样的字符。我是在本本上看着论坛上你的说明,对着台式机的相应步骤选择各个选择的。这个应该是我自己的问题----没有备份/home/wangdu904,结果没有启动时的隐藏配置文件了。
这没什么,等老大加上排除主目录下的个人文件功能之后再测试之。恢复系统,只需要恢复系统和软件,当然还有主目录下的隐藏的文件,应该就行了。

作者: wangdu2002   发布时间: 2009-05-27

噢,摸黑操作 不需要退格呀,输入新的用户名就可以了。
纯终端下如果中文看不见,也可以用英文版的。


关于 home,隐藏配置文件也可以不要,但是至少要有 /home/wangdu904 这个空目录。排除是连空目录也没了,你就无家可归了

作者: billbear   发布时间: 2009-05-27

引用:
关于 home,隐藏配置文件也可以不要,但是至少要有 /home/wangdu904 这个空目录。排除是连空目录也没了,你就无家可归了

不行,我在root下,用Mkdir在/Home下面建立了904Wangdu的空目录,仍然不行。
引用:
噢,摸黑操作 不需要退格呀,输入新的用户名就可以了。
纯终端下如果中文看不见,也可以用英文版的。

因为新用户名输入错误,所以想要修改,结果退格不了,只能接着往后输入。
反正这个备份版本已经试过了,6pt的备份工具也一样──不能选择自动排除主目录下的个人文件和文件夹,但保留隐藏文件。
现在等老大的增加此功能的新版本出来,再来测试下,以便老大越做越完美。

作者: wangdu2002   发布时间: 2009-05-28

引用:
不行,我在root下,用Mkdir在/Home下面建立了904Wangdu的空目录,仍然不行。

所有者是 root 不行的,需要
chown 你的名字:你的名字 /home/你的名字

那个功能已经写好了,但是我还有其他改动。晚上放上来吧。

作者: billbear   发布时间: 2009-05-28

我是备份至移动硬盘的,遇到问题,请教:

代码:
[=========                                                 ]  41842/268127  15%
File /tmp/bind/home/ubuntu/.cache/notify-osd.log changed size while reading filesystem, attempting to re-read

Lseek on destination failed: Invalid argument
[=========================================                 ] 190562/268127  71%
已备份至 /media/LIVE/Linux_backup。请阅读里面的 menu.lst :)


1.很奇怪,我已经排除了/tmp;
2.备份到71%就停止并出现提示了;
3.没有在目标文件夹下看到类似大小的备份文件。

作者: highwind   发布时间: 2009-05-28

1. 不奇怪, /tmp 下有程序的工作目录。整个文件系统在 /tmp/bind 下重构。如果指定排除 /tmp,在工作目录下排除的是 /tmp/bind/tmp。另外,尽管排除 /tmp 可以生成备份,但是这样的备份恢复的系统是不会正常工作的。你可以排除 /tmp 下的所有文件,但是不能排除 /tmp 目录本身。一会儿上传的新的版本会自动排除 /tmp 下的所有东西,你不必再操心了。
2. 确定移动硬盘上有足够的空间。
3. 备份没有成功,因此没有文件。

作者: billbear   发布时间: 2009-05-28

1.1 版上传,可帮你排除 /home,可适应无 uuid 的分区,修正 更改用户名和主机名 的功能,其他小修。

作者: billbear   发布时间: 2009-05-28

支持老大,顶一个!等会就试下!

作者: wangdu2002   发布时间: 2009-05-28

报告老大,备份成功,但是恢复出错:
1、无法进入Live桌面,提示会话错误,~/xsession error,查看详细,好象是Fcitx输入法有什么权限问题。
2、更改用户名时,再次出现不能退格修改的情况。
下面是备份过程。
引用:
wangdu904@wdnb01ub:~$ lub -b
bash: /usr/local/bin/lub: Permission denied
wangdu904@wdnb01ub:~$ sudo lub -b
将要备份系统。建议退出其他程序。继续?(y/n)
y
指定一个空目录 (绝对路径) 来存放备份。
可以从 Nautilus 文件管理器拖放目录至此。
可以使用移动硬盘。
如果不指定, 将会存放到 /home/wangdu904/backup-20090528
/tmp/ubtbk
是否排除 /home 里所有的用户文件? (y/n)
y
是否也排除 /home 里所有的用户配置文件(隐藏文件)? (y/n)
n
是否排除已下载软件包在 /var/cache/apt/archives/ 里的本地缓存 ? (y/n)
y
指定其他需要排除的文件/目录, 一行写一个。以空行结束。
可以从 Nautilus 文件管理器拖放至此。
/tmp

开始备份?(y/n)
y

wangdu904@wdnb01ub:~$

感觉备份,明明已经侦测到/home/wangdu904的存在了,为什么在排除目录时不直接提示是否排除/home/wangdu904/里的用户文件呢?

作者: wangdu2002   发布时间: 2009-05-29

亲爱的同学们, /tmp 是不能乱排除的。系统必须有 /tmp 目录,哪怕是空目录。而且权限得是 1777.
/tmp 下的所有文件我已经自动帮你排除,备份本身已经自动排除(还没弱智到那程度),home 已经可选排除,所以 “指定其他需要排除的文件/目录, 一行写一个。以空行结束。” 时,大多数时候你只要直接回车就好了。你不必操心那些显而易见应当排除的东西,比如移动硬盘, windows 分区,其他自行挂载的与系统无关分区,/tmp /proc /sys下的东西,备份文件自身,等等。那是脚本要操心的事情。

最后由 billbear 编辑于 2009-10-28 22:03,总共编辑了 1 次

作者: billbear   发布时间: 2009-05-29

另外,你备份到 /tmp 有点令人费解,你的 /tmp 每次重启不会自动清空的吗?

引用:
为什么在排除目录时不直接提示是否排除/home/wangdu904/里的用户文件呢

如果有 n 个用户呢?难道还得逐个提示?我只能把所有用户的所有文件通通忽略掉,反正它不会影响系统启动。

作者: billbear   发布时间: 2009-05-29

有点其他错误。等等。

作者: billbear   发布时间: 2009-05-29

billbear 写道:
1. 不奇怪, /tmp 下有程序的工作目录。整个文件系统在 /tmp/bind 下重构。如果指定排除 /tmp,在工作目录下排除的是 /tmp/bind/tmp。另外,尽管排除 /tmp 可以生成备份,但是这样的备份恢复的系统是不会正常工作的。你可以排除 /tmp 下的所有文件,但是不能排除 /tmp 目录本身。一会儿上传的新的版本会自动排除 /tmp 下的所有东西,你不必再操心了。
2. 确定移动硬盘上有足够的空间。
3. 备份没有成功,因此没有文件。


谢谢老大提醒,我用新版本再试试,谢谢拉,我保证有个足够大的空间。

作者: highwind   发布时间: 2009-05-29


看了半天这是什么脚本语言呢?

作者: Yoda   发布时间: 2009-05-29

billbear 写道:
有点其他错误。等等。

我用1.1版本又试了一次,这是在本本上备份,在台式机上恢复。这次Live成功啦,而且Live后恢复也成功了。
wangdu904@wdnb01ub:~$ sudo lub -b
[sudo] password for wangdu904:
将要备份系统。建议退出其他程序。继续?(y/n)
y
指定一个空目录 (绝对路径) 来存放备份。
可以从 Nautilus 文件管理器拖放目录至此。
可以使用移动硬盘。
如果不指定, 将会存放到 /home/wangdu904/backup-20090529

是否排除 /home 里所有的用户文件? (y/n)
y
是否也排除 /home 里所有的用户配置文件(隐藏文件)? (y/n)
y
是否排除已下载软件包在 /var/cache/apt/archives/ 里的本地缓存 ? (y/n)
y
指定其他需要排除的文件/目录, 一行写一个。以空行结束。
可以从 Nautilus 文件管理器拖放至此。

开始备份?(y/n)
y
Parallel mksquashfs: Using 1 processor
Creating little endian 3.1 filesystem on /home/wangdu904/backup-20090529/backup20090529.squashfs, block size 131072.
[========================================================= ] 103464/103619 99%File /tmp/bind/var/log/ConsoleKit/history changed size while reading filesystem, attempting to re-read
[========================================================= ] 103471/103619 99%File /tmp/bind/var/log/auth.log changed size while reading filesystem, attempting to re-read
[========================================================= ] 103482/103619 99%File /tmp/bind/var/log/cups/access_log changed size while reading filesystem, attempting to re-read
[========================================================= ] 103557/103619 99%File /tmp/bind/var/log/messages changed size while reading filesystem, attempting to re-read
[========================================================= ] 103579/103619 99%File /tmp/bind/var/log/samba/log.winbindd-idmap changed size while reading filesystem, attempting to re-read
[========================================================= ] 103583/103619 99%File /tmp/bind/var/log/syslog changed size while reading filesystem, attempting to re-read
[==========================================================] 103619/103619 100%
Exportable Little endian filesystem, data block size 131072, compressed data, compressed metadata, compressed fragments, duplicates are removed
Filesystem size 966071.94 Kbytes (943.43 Mbytes)
41.18% of uncompressed filesystem size (2345850.02 Kbytes)
Inode table size 1271323 bytes (1241.53 Kbytes)
29.80% of uncompressed inode table size (4266764 bytes)
Directory table size 1207246 bytes (1178.95 Kbytes)
47.50% of uncompressed directory table size (2541732 bytes)
Number of duplicate files found 8688
Number of inodes 125447
Number of files 96287
Number of fragments 7370
Number of symbolic links 15587
Number of device nodes 95
Number of fifo nodes 3
Number of socket nodes 0
Number of directories 13475
Number of uids 14
root (0)
syslog (101)
clamav (113)
wangdu904 (1000)
daemon (1)
polkituser (104)
libuuid (100)
lp (7)
man (6)
avahi-autoipd (107)
news (9)
messagebus (103)
hplip (106)
klog (102)
Number of gids 31
video (44)
我是用哥伦布4dos引导的。不过有点问题是,不能自动生成新的Menu.lst。需要手工查找UUID,然后照原来系统的格式添加引导项目,才能成功。
熊哥脚本能否象安装程序那样,增加一个自动生成Menu.lst的功能,放在Linux分区也行,可以自己拷贝回来,省下手工查UUID的麻烦。

作者: wangdu2002   发布时间: 2009-05-29

为了适应无 uuid 的分区,脚本做了修改,后来不小心 swap 部分的 uuid 这块没改对,因此先把下载拿掉了。我打算全面检查一遍,明天再放上来。另外增加检查重复的 uuid 的功能,因为我发现 windows 下的某些分区工具(我试了 winPM)创建的所有 ext 分区都是一样的 uuid,很雷人,还不如没有 uuid 呢。
至于你说的 menu.lst,我不知道你指的是为了引导备份文件的 menu.lst,还是恢复后系统的 menu.lst,恢复过程是可以自动生成目标系统的 menu.lst 的。引导 squash 的 menu.lst,我也做了一个 grub4dos 的样本,gnu grub 的情况比较复杂,可以参照 grub4dos 的样本和里面的说明。

作者: billbear   发布时间: 2009-05-29