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