使用tar和dd或Linux系统备份
本文提供一个简明常用的系统备份方法,使你可以迅速完成最常用最基本的备份工作。需要更详细的可参考:鸟哥的LInux私房菜>第二十五章 Linux 浞莶呗
一、tar备份恢复系统
1 、备份
当前系统下,
# tar-czpv -f/media/.../backup_$(date +%Y-%m-%d)_img.tar.gz/--exclude=/media/*--exclude=/lost+found--exclude=/proc/*--exclude=/dev/*--exclude=/sys/*2>>/media/tar.errors.log
其中,--exclude= 参数列出了不需要备份的目录,可以根据实际情况自行调整,注意:不要忘记备份/boot目录或分区,注意不要备份存储备份文件的目录。特别注意:--exclude=选项要放在后面备份存档名和备份目标后面,而且目录一定不能使用/xxx/的形式,必须是/xxx/*或/xxx的形式。 另外,建议使用 2>> 将错误输出定向到 tar.errors.log文件,留待备份后查看有无错误。
【注意!】 -f --指定archive或设备名称。这个选项其实是必选的!而且这个参数后面要紧跟文件名,不能再有其它参数。-p选项这里可能不需要,似乎只对解压时起作用,见后面的tar --help。
【注意!】备份有时提示:“ ...忽略套接字(socket)” 。socketn案是用程式c用程式贤ㄋ使用的媒介,pipe亦同理,K非H碛匈Y料的n案,所以o浞荨
2、tar命令检查备份文档:
tar tvf backip.tgz | grep -v'.{66,}'-- 不显示其中每行字符数大于66个的行,其中“.”正则表达式中代表任何非换行符的字符。
tar tvf backip.tgz|grep ^d |egrep -v '(([^/])*/){3}' -- 只显示开头字符是d的行中不包含3个“/”的行。
3、还原
其它 Linux 系统或者 LiveCD/LiveUSB 下,
#mkfs.ext4 /dev/sda1 (这里也可能是sdb5等。如果已经有格式化的分区,这部不需要做。注意,最好其设备号sdaX与要恢复的系统原所在的设备号相同,否则/etc/fstab文件需要仔细修改了)
#mount -v /dev/sda1 /mnt/myrootdir
#cd /mnt/myrootdir
#tarxpvf backup_..._.tar.gz (z选项默认会识别,所以这里被去掉了)
#sudo mkdir-pvhome sys proc dev usr/portage/distfiles
#chroot. (将/mnt/myrootdir作为当前进程的根目录,如果恢复到的分区和备份文件所在分区不一致,可能会导致无法开机,这步和后面重装grub可避免此情况。chroot是在unix系统的一个操作,用于对当前的程序和它的子进程改变真实的磁盘根目录。一个被改变根目录的程序不可以访问和命名在被改变根目录外的文件,那个根目录叫做“chroot监狱(chroot jail,chroot prison)”)
#/usr/grub-install --recheck /dev/sda (如前面是sdb5,这步也还可能是sda,因为chroot的作用)
# exit
可以开启一个新的终端将挂载的目录umount
#umount -v /mnt/myrootdir
这步可以不做,直接关机,然后BIOS指定开机硬盘,开机即可。
3、其他摘录
系统备份(注意千万要排除存储备份文件自身的目录,这里为backup):
#tar czvf /backup/root-backup.tgz / --exclude proc --exclude dev --exclude backup
用LiveCD开机,
备份:tar cjvf bak.tar.bz2 /path_to_bak
还原:tar xjvfpbak.tar.bz2
不会丢失文件的任何信息
鸟哥来的截图:

二、dd备份恢复系统
1、备份
用liveCD开机,
# ddif=/dev/sda1of=sda1.img.bak bs=4M(然后把disk1.bak这个备份文件cp到安全的地方)
2、还原
用liveCD开机,
# ddif=sda1.img.bakof=/dev/sda1
# e2fsck-f/dev/sda1
# resize2fs/dev/sda1
# e2fsck-f/dev/sda1
3、dd中的压缩
dd对磁盘是极大的浪费,100G的硬盘只用1G,dd后的备份文件也是100G,这个可以通过压缩解决。
1)备份:
# ddif=/dev/sda1|bzip2>sda1.img.bz2
2)还原:
#bzip2-dc sda1.img.bz2|ddof=/dev/sda1
#e2fsck-f/dev/sda1
#resize2fs/dev/sda1
#e2fsck-f/dev/sda1
4、One Idea: 使用dd给文件夹而非磁盘创建镜像
引用自
使用dd制作文件夹的img
du -sh originfile //先看看需要制作的源文件夹大小,假如15M
dd if=/dev/zero of=new_img.img bs=1024 count=20000 //生成20M的文件
mkfs.ext3 new_img.img
mount new_img.img /mnt/new
cp originfile /mnt/new -R
umount /mnt/new// new_img.img文件里面就包括了originfile
三、附:ubuntu 中的tar帮助信息
$ tar --version
tar (GNU tar) 1.23
Copyright (C) 2010 Free Software Foundation, Inc.
$ tar --help
用法: tar [选项...] [FILE]...
GNU ‘tar’
将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。
示例
tar -cf archive.tar foo bar # 从文件 foo 和 bar 创建归档文件
archive.tar。
tar -tvf archive.tar # 详细列举归档文件 archive.tar
中的所有文件。
tar -xf archive.tar # 展开归档文件 archive.tar
中的所有文件。
主操作模式:
-A, --catenate, --concatenate 追加 tar 文件至归档
-c, --create 创建一个新归档
-d, --diff, --compare 找出归档和文件系统的差异
--delete 从归档(非磁带!)中删除
-r, --append 追加文件至归档结尾
-t, --list 列出归档内容
--test-label 测试归档卷标并退出
-u, --update 仅追加比归档中副本更新的文件
评论