一、tar命令介绍

[root@test ~]# tar --help
GNU tar 将许多文件保存到一个磁带或磁盘归档文件中,并可以从归档文件中恢复各个文件。

用法:tar [选项]... [文件]...

示例:
tar -cf archive.tar foo bar # 从文件foo和bar创建归档文件archive.tar
tar -tvf archive.tar # 详细列举归档文件archive.tar中的所有文件
tar -xf archive.tar # 解析归档文件archive.tar中的所有文件

如果长选项表明参数是必需的,那么对等价的短选项来说它同样是必需的。对可选的参数来说也类似。

主要操作模式:
-t, --list 列出归档文件内容目录
-x, --extract, --get 从归档文件中解析文件
-c, --create 创建新的归档文件
-d, --diff, --compare 找出归档文件和文件系统的不同之处
-r, --append 将文件附加到归档文件之后
-u, --update 只附加比归档中新的文件
-A, --catenate 将tar文件附加到归档文件之后
--concatenate 与-A相同
--delete 从归档文件中删除(不能在磁带上)
-z, --gzip --gunzip 在创建或解析归档文件时,同时使用gzip压缩或解压缩文件
-j, --bzip --bunzip 同gzip,只是bzip比gzip有较高的压缩率

二、用tar做系统备份

 

1、备份过程

一般linux典型的系统分区为:一个根(/)分区、一个boot分区和一个swap分区。我们就以此为例来介绍如何用tar来备份系统。
要备份数据,我们还需要有一个存储介质来存放我们备份的数据。备份介质有很多种,比如磁带、硬盘、光盘等。我这里用的是移动硬盘(空间足够大)。首先将移动硬盘挂载到系统上:

#mkdir /Bak
#mount /dev/sda1 /Bak #假设我的移动硬盘在系统里识别为sda1

然后分别备份根分区和boot分区,swap分区不需要备份。

#tar zcvf /Bak/root-bak.tgz / --exclude proc --exclude dev --exclude Bak

proc和dev目录是系统自动动态创建的,所以无须备份;Bak是我们的移动硬盘所挂载的目录,当然也不需要备份了。

#cd /boot
#tar zcvf /Bak/boot-bak.tgz *

如果没有报错,那么我们的备份就算完成了。

2、还原过程

首先,用第一张系统安装光盘启动。前面的过程跟安装系统一样,在系统分区那步停下,按CTRL+F2(或CTRL+ALT+F2)得到shell。先将已有的系统分区格式化:

sh#mkfs.ext3 /dev/hda1       (假设原来的系统上hda1为/boot分区)
sh#mkfs.ext3 /dev/hda2 (假设原来的系统上hda2为/分区)
sh#mkswap /dev/hda3 (假设原来的系统上hda3为swap分区)
sh#e2lable /dev/hda1 /boot
sh#e2lable /dev/hda2 /

然后,挂在新的文件系统并还原操作系统。

sh#mkdir newsystem
sh#mount /dev/hda2 newsystem
sh#cd newsystem
sh#mkdir bak
sh#mount /dev/sda1 bak (在用光盘启动前,就要把移动硬盘插上。不然,有可能系统无法识别移动硬盘)
sh#tar zxvf bak/root-bak.tgz
sh#mkdir boot
sh#mount /dev/hda1 boot
sh#cd boot
sh#tar zxvf ../bak/boot-bak.tgz
sh#cd ..
sh#chroot .
sh#/usr/grub-install --recheck /dev/hda

重起机器,系统成功启动,说明还原成功。