Linux 操作系统中的目录和文件数据被组织为一个树形目录结构,所有的分区、目录、文件等都具有一个相同的位置起点——根目录,如图所示。Linux 操作系统中只有一个根目录,而 Windows 操作系统中每个分区都有一个根目录,这点需要加以区别。
Linux 操作系统在定位文件或目录位置时,使用斜杠“/”进行分隔(区别于 Windows 操作系统中的反斜杠“\”)。整个树形目录结构中,使用独立的一个“/”表示根目录,根目录是Linux 操作文件系统的起点,其所在的分区称为根分区。在根目录下,Linux 操作系统将默认建立一些特殊的子目录,分别具有不同的用途。下面简单介绍一下其中常见的子目录及其作用。
以上列举的只是 Linux 操作系统中用户经常用到的子目录,还有其他一些子目录需要用户在使用 Linux 操作系统的过程中逐渐去熟悉。
grep 命令用于在文件中查找并显示包含指定字符串的行,可以直接指定关键字符串作为查找条件,也可以使用复杂的条件表达式。
在 Linux 操作系统中,最简单的文件和目录备份工具就是 cp(复制)命令。但是当需要备份的文件、目录数量较多时,仅仅使用 cp 命令就显得“力不从心”,并且备份的文件数量及其所占用的磁盘空间都可能会对服务器产生不小的压力。因此,有必要对需要备份的数 据进行归档和压缩。
这里所说的归档操作实际上相当于“打包”,即将许多个文件和目录合并保存为一个整体 的包文件,以方便传递或携带。而压缩操作可以进一步降低打包后的归档文件所占用的磁盘 空间,充分提高备份介质的利用率。
Linux 操作系统中较常用的压缩命令工具包括 gzip、bzip2,最常用的归档命令工具为tar。使用 tar 命令可以通过特定选项自动调用 gzip 或 bzip2 程序,以完成归档、压缩的整套流程,当然也可以完成解压、释放已归档文件的整套流程。
下面分别介绍压缩和归档命令的使用方法。
使用 gzip 制作的压缩文件默认的扩展名为“.gz”。制作压缩文件时,使用“-9”选项可以提高压缩的比率,但文件较大时会需要更多的时间。例如,以下操作将对/root/public_html 目录下的 mkfile 文件进行压缩,生成压缩文件 mkfile.gz(原始文件 mkfile 不再保留),压缩后的文件大小变为 30KB(未压缩时为 62KB)。
[root@localhost ~]# ls -lh /root/public_html/mkfile* 查看需要压缩的文件
-rwxr-xr-x. 1 root root 62K 9 月 23 15:14 /root/public_html/mkfile
[root@localhost ~]# gzip /root/public_html/mkfile 用gzip将文件进行压缩
[root@localhost ~]# ls -lh /root/public_html/mkfile* 再次查看可以看出文件已近被压缩了
-rwxr-xr-x. 1 root root 30K 9 月 23 15:14 /root/public_html/mkfile.gz
当需要解压缩经gzip 压缩的文件时,只需使用带“-d”选项的gzip 命令即可,或者直接使用
gunzip 命令。例如,若将压缩文件 mkfile.gz 进行解压缩,可执行以下操作。
[root@localhost ~]# gzip -d /root/public_html/mkfile.gz
bzip2 命令的用法与 gzip、gunzip 命令基本相同,使用 bzip2 制作的压缩文件默认的扩展名为“.bz2”。例如,以下操作将对当前目录下的 mkfile 文件以较高压缩比进行压缩,生成压缩文件 mkfile.bz2(原始文件 mkfile 不再保留),压缩后的文件大小变为 30KB(未压缩时为 62KB)。
[root@localhost ~]# ls -lh /root/public_html/mkfile*
-rwxr-xr-x. 1 root root 62K May 4 01:32 /root/public_html/mkfile
[root@localhost ~]# bzip2 -9 /root/public_html/mkfile
[root@localhost ~]# ls -lh /root/public_html/mkfile*
-rwxr-xr-x. 1 root root 30K May 4 01:32 mkfile.bz2
与 gzip命令相同,当需要解压缩经bzip2 压缩的文件时,只需使用带“-d”选项的bzip2 命令即可,或者直接使用 bunzip2 命令。例如,若要将压缩文件 mkfile.gz 进行解压缩, 可执行以下操作。
[root@localhost ~]# bzip2 -d /root/public_html/mkfile.bz2
tar 命令主要用于对目录和文件进行归档。在实际的备份工作中,通常在归档的同时也会将包文件进行压缩(需要调用前面的 gzip 或 bzip2 命令),以节省磁盘空间。使用 tar 命令时,选项前的“-”号可以省略。常用的几个选项如下所述。
如果需要对制作的归档文件进行压缩,可以通过“-z”或“-j”选项自动调用压缩工具(分别对应 gzip、bzip2 命令程序)进行压缩。例如,以下操作将会对/etc 和/boot 目录进行备份, 在当前目录下生成名为 sysfile.tar.gz 的归档压缩包,执行过程中可以看到被归档的文件列表信息。需要注意的是,在备份恢复目录或文件时,最好先将工作路径切换至目标目录或文件的所在路径,然后在执行备份命令时使用相对路径,以防输入命令时因手误而导致根目录“/” 下重要文件损坏。
[root@localhost ~]# cd /
[root@localhost /]# tar zcvf sysfile.tar.gz etc boot
etc/
etc/login.defs
etc/cron.hourly/
etc/fstab
…… //省略部分内容
[root@localhost /]# ls -lh sysfile.tar.gz
-rw-r--r-- 1 root root 142M 9 月 16 17:03 sysfile.tar.gz
若需要制作“.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 shadow
etc/passwd
etc/shadow
[root@localhost etc]# ls -lh /tmp/usershome.tar.bz2
-rw-r--r-- 1 root root 1.5K 9 月 16 17:04 /tmp/usershome.tar.bz2
解压并释放(恢复)归档压缩包文件时,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 命令。但是要注意这两个压缩工具的命令程序必须存在。