在Linux 操作系统中,最简单的文件和目录备份工具就是cp (复制)命令,但是当需要备份的文件、目录数量较多时,仅仅使用cp 命令就显得"力不从心",并且备份的文件数量及其所占用的磁盘空间都可能会对服务器产生不小的压力。因此.有必要对需要备份的数据进行归档和压缩。
这里所说的归档操作实际上相当于"打包",即将许多个文件和目录合并保存为一个整体的包文件.以方便传递或携带.而压缩操作可以进一步降低打包后的归档文件所占用的磁盘空间,充分提高备份介质的利用率,
Linux操作系统中较常用的压缩命令工具包括gzip. bzip2,最常用的归档命令工具为tar。使用tar命令可以通过特定选项自动调用gzip或 bzip2程序,以完成归档.压缩的整套流程.当然也可以完成解压.释放已归档文件的整套流程。
以下分别介绍压缩和归档命令的使用方法.
1、使用压缩和解压缩工具
gzip和 bzip2是Linux操作系统中使用最多的两个压缩工具.这两个命令都可以压缩指定的文件.或者将已经压缩过的文件进行解压.两者使用的压缩算法各不相同,但命令使用格式基本类似,--般来说bzip2的压缩效率要好一些.
1.1、gzip和gunzip命令
使用gzip制作的压缩文件默认的扩展名为".gz"。制作压缩文件时,使用"~9"选项可以提高压缩的比率,但文件较大时会需要更多的时间。例如,以下操作将对当前目录下的mkfile 文件进行压缩,生成压缩文件mkfile . gz(原始文件mkile 不再保留).压缩后的文件大小变为3OKB(未压缩时为62KB)。
[root@node1 ~]# ls -lh passwd
-rw-r--r-- 1 root root 2.4K 6月 4 14:04 passwd
[root@node1 ~]# gzip passwd
[root@node1 ~]# ls -lh passwd*
-rw-r--r-- 1 root root 948 6月 4 14:04 passwd.gz
当需要解压缩经gzip压缩的文件时,只需使用
[root@node1 ~]# ls -lh passwd*
-rw-r--r-- 1 root root 2.4K 6月 4 14:04 passwd
[root@node1 ~]# bzip2 -9 passwd
[root@node1 ~]# ls -lh passwd*
-rw-r--r-- 1 root root 969 6月 4 14:04 passwd.bz2
带"-d"选项的gzip命令即可,或者直接使用gunzip命令.例如,若将压缩文件mkfile .gz进行解压缩,可执行以下操作.
[root@node1 ~]# gzip -d passwd.gz
或者
[root@node1 ~]# gunzip passwd.gz
1.2、bzip2和bunzip2命令
bzip2和bunzip2命令的用法与gzip、gunzip命令基本相同,使用bzip2制作的压缩文件默认的扩展名为".bz2"、例如.以下操作将对当前目录下的mkfile文件以较高压缩比进行压缩,生成压缩文件mkfile.bz2〈原始文件mkfile不再保留),压缩后的文件大小变为30KB(未压缩时为62KB).
[root@node1 ~]# ls -lh passwd*
-rw-r--r-- 1 root root 2.4K 6月 4 14:04 passwd
[root@node1 ~]# bzip2 -9 passwd
[root@node1 ~]# ls -lh passwd*
-rw-r--r-- 1 root root 969 6月 4 14:04 passwd.bz2
与gzip、gunzip命令相同.当需要解压缩经bzip2压缩的文件时.只需使用带"-d"选项的bzip2命令即可,或者直接使用bunzip2命令.例如.若要将压缩文件mkfile.gz进行解压缩,可执行以下操作;
[root@node1 ~]# bzip2 -d passwd.bz2
或者
[root@node1 ~]# bunzip2 passwd.bz2
2、使用tar归档和释放工具
tar命令主要用于对目录和文件进行归档。在实际的备份工作中,通常在归档的同时也会将包文件进行压缩〈需要调用前面的gzip或 bzip2命令),以节省磁盘空间.使用tar命令时,选项前的"-"号可以省略。常用的几个选项如下所述。
- -c:创建(Create) . tar格式的包文件。
- -C:解压时指定释放的目标文件夹.
- -f:表示使用归档文件.
- -j:调用bzip2程序进行压缩或解压。
- -p:打包时保留文件及目录的权限.
- -P:打包时保留文件及目录的绝对路径.
- -t:列表查看包内的文件.
- -v:输出详细信息(Verbose).
- -×:解开. tar格式的包文件。
- -z:调用gzip程序进行压缩或解压.
2.1、制作归档备份文件
制作归档及压缩包(备份)文件时,tar命令的基本格式如下:
tar [选项]... 归档及压缩文件名 需要归档的源文件或目录...
如果需要对制作的归档文件进行压缩,可以通过"-Z"或"-j"选项自动调用压缩工具〈分别对应gzip, bzip2命令程序)进行压缩.例如,以下操作将会对/etc和/boot目录进行备份,在当前目录下生成名为sysfile . ter .gz的归档压缩包,执行过程中可以看到被归档的文件列表信息,需要注意的是,在备份恢复目录或文件时,最好先将工作路径切换至目标目录或文件的所在路径,然后在执行备份命令时使用相对路径.以防输入命令时因手误而导致根目录"/"下重要文件损坏。
[root@node1 ~]# cd /
[root@node1 /]# tar zcvf sysfile.tar.gz etc boot
etc/
etc/fstab
etc/crypttab
etc/mtab
etc/resolv.conf
etc/fonts/
...省略...
[root@node1 /]# ls -lh sysfile.tar.gz
-rw-r--r-- 1 root root 127M 6月 4 14:13 sysfile.tar.gz
若需要制作".ter ,bz2"格式的归档压缩包,则将"-z"选项改为"-j"选项使用即可。例如,以下操作将会对/etc/pesswd , / etc/shadow文件进行备份.在/tmp目录下生成名为usershome , tar , bz2的归档压缩包.
[root@node1 /]# cd /etc/
[root@node1 etc]# tar jcvf /tmp/usershome.tar.bz2 passwd shadow
passwd
shadow
[root@node1 etc]# ls -lh /tmp/usershome.tar.bz2
-rw-r--r-- 1 root root 1.5K 6月 4 14:16 /tmp/usershome.tar.bz2
2.2、从归档文件中恢复数据
解压并释放(恢复)归档压缩包文件时,tar命令的基本格式如下:
tar [选项] ... 归档及压缩文件名 [-C 目标目录]
类似地.当从".tar .gz"格式的归档压缩包恢复数据时.需要结合"-z"选项来自动调用压缩工具,而对于".ter .bz2"格式的归档压缩包,对应的是"-j"选项,默认情况下,恢复的数据将释放到当前目录中,如果需要恢复到指定文件夹.还需要结合"-C"选项来指定目标目录。例如,以下操作将从备份文件usershame , tar , bz2中恢复数据.释放到/etc目录下〈将覆盖现有文件).
[root@node1 ~]# tar jxf /tmp/usershome.tar.bz2 -C /etc
在大部分的备份及恢复工作中,只使用tar命令就可以很好地结合gzip 、bzip2工具协同工作,无须再执行gzip 或bzip2命令。但是要注意这两个压缩工具的命令程序必须存在。