需要掌握的内容
- 掌握gzip/zcat/zmore/zless命令的用法
- 掌握bzip2/bzcat/bzmore/zless命令的用法
- 掌握xz/xzcat命令的用法
- 掌握tar命令的用法
使用设备
- VMWare Workstation
- CentOS7 虚拟机
准备工作
请找出/etc目录下(不包含子目录)文件大小最大的文件(应该是/etc/services),并将该文件复制到/tmp目录下,请进入/tmp目录查看文件。
[root@localhost ~]# ls -Sl /etc/ total 1428 -rw-r--r--. 1 root root 670293 Jun 7 2013 services -rw-r--r--. 1 root root 81030 Dec 4 2022 ld.so.cache -rw-r--r--. 1 root root 26832 Oct 31 2018 dnsmasq.conf -rw-r--r--. 1 root root 21929 Apr 11 2018 brltty.conf -rw-r--r--. 1 root root 14622 Oct 31 2018 autofs.conf -rw-r--r--. 1 root root 12636 Nov 1 2018 drirc -rw-r--r--. 1 root root 12288 Dec 4 2022 aliases.db # 把文件复制到/tmp目录下 [root@localhost ~]# cp /etc/services /tmp [root@localhost ~]# ls -Sl /tmp total 656 -rw-r--r--. 1 root root 670293 Oct 29 10:27 services
尝试操作
1.请使用gzip命令对/tmp/services文件进行压缩,并保存到/tmp目录下,文件名为services.gz,并比对/etc/services和/tmp/services.gz两个文件大小
# gzip的榜之
[root@localhost tmp]# gzip --help
Usage: gzip [OPTION]... [FILE]...
Compress or uncompress FILEs (by default, compress FILES in-place).
Mandatory arguments to long options are mandatory for short options too.
-c, --stdout write on standard output, keep original files unchanged
-d, --decompress decompress
-f, --force force overwrite of output file and compress links
-h, --help give this help
-l, --list list compressed file contents
-L, --license display software license
-n, --no-name do not save or restore the original name and time stamp
-N, --name save or restore the original name and time stamp
-q, --quiet suppress all warnings
-r, --recursive operate recursively on directories
-S, --suffix=SUF use suffix SUF on compressed files
-t, --test test compressed file integrity
-v, --verbose verbose mode
-V, --version display version number
-1, --fast compress faster
-9, --best compress better
--rsyncable Make rsync-friendly archive
With no FILE, or when FILE is -, read standard input.
Report bugs to <bug-gzip@gnu.org>.
[root@localhost tmp]# gzip -v /tmp/services
/tmp/services: 79.7% -- replaced with /tmp/services.gz
# 比较一下两个文件的大小
[root@localhost tmp]# ls -l /tmp/services.gz /etc/services
-rw-r--r--. 1 root root 670293 Jun 7 2013 /etc/services
-rw-r--r--. 1 root root 136088 Oct 29 10:27 /tmp/services.gz
gzip
gzip是为了取代compress 并提供更好的压缩比,zcat/zmore/zless用来查看压缩文件
命令格式:gzip [options] 文件名
| 选项与参数 | 说明 |
| -c | 将压缩的数据输出到屏幕上,可通过数据流重导向来处理 |
| -d | 解压缩的参数 |
| -t | 可以用来检验一个压缩文件的一致性,看看文件有无错误 |
| -v | 可以显示出原文件/压缩文件的压缩比等信息 |
| -# | # 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6 |
2.请使用gzip命令解压缩/tmp/services.gz到/tmp目录;并对/tmp/services采用最佳的压缩比进行压缩,并保留原本的文件,新的压缩文件名为services.gz,保存到/tmp目录。
# 先将他解压缩 [root@localhost tmp]# gzip -d services.gz [root@localhost tmp]# ll ser* -rw-r--r--. 1 root root 670293 Oct 29 10:27 services # 使用最佳压缩比保留原始文件压缩 输出到services.gz [root@localhost tmp]# gzip -9 -c /tmp/services > services.gz [root@localhost tmp]# ls -l /tmp/ser* -rw-r--r--. 1 root root 670293 Oct 29 10:27 /tmp/services -rw-r--r--. 1 root root 135489 Oct 29 10:42 /tmp/services.gz
3.请使用bzip2命令对/tmp/services文件进行最佳的压缩比进行压缩,并保存到/tmp目录下,文件名为service.bz2,并将该压缩文件内容读取出来。
[root@localhost tmp]# bzip2 -9k -c /tmp/services > services.bz2 [root@localhost tmp]# ls -l /tmp/serv* -rw-r--r--. 1 root root 670293 Oct 29 10:27 /tmp/services -rw-r--r--. 1 root root 123932 Oct 29 10:46 /tmp/services.bz2 -rw-r--r--. 1 root root 135489 Oct 29 10:42 /tmp/services.gz # 使用命令 [root@localhost tmp]# bzless services.bz2 ------> services.bz2 <------
bzip2
bzip2 比 gzip 提供更好的压缩比,bzcat/bzmore/bzless/bzgrep用来查看压缩文件
命令格式:bzip2 [options] 文件名
| 选项与参数 | 说明 |
| -c | 将压缩的数据输出到屏幕上,可通过数据流重导向来处理 |
| -d | 解压缩的参数 |
| -k | 保留原始文件,而不会删除原始的文件 |
| -z | 压缩的参数 (默认值,可以不加) |
| -t | 可以用来检验一个压缩文件的一致性,看看文件有无错误 |
| -v | 可以显示出原文件/压缩文件的压缩比等信息 |
| -# | # 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6 |
4.请使用xz命令对/tmp/services文件进行压缩,保存到/tmp目录,文件名为services.xz,并显示详细的压缩过程信息;并请查看service.xz压缩文件的信息。
[root@localhost tmp]# xz -ck services > services.xz
[root@localhost tmp]# ls -l services*
-rw-r--r--. 1 root root 670293 Oct 29 10:27 services
-rw-r--r--. 1 root root 123932 Oct 29 10:46 services.bz2
-rw-r--r--. 1 root root 135489 Oct 29 10:42 services.gz
-rw-r--r--. 1 root root 99608 Oct 29 11:09 services.xz
# 查看压缩的信息
[root@localhost tmp]# xz -l services.xz
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 97.3 KiB 654.6 KiB 0.149 CRC64 services.xz
xz
虽然 bzip2 已经具有很棒的压缩比,不过显然某些自由软件开发者还不满足,因此后来还推出了 xz 这个压缩比更高的软件,但是这个压缩命令压缩速度偏慢,如果不是对压缩率有特别需求,使用bzip2就够了!这个软件的用法也跟 gzip/bzip2 几乎一模一样。
命令格式:xz [options] 文件名
| 选项与参数 | 说明 |
| -c | 将压缩的数据输出到屏幕上,可通过数据流重导向来处理 |
| -d | 解压缩的参数 |
| -k | 保留原始文件,而不会删除原始的文件 |
| -l | 列出压缩文件的相关信息 |
| -t | 可以用来检验一个压缩文件的一致性,看看文件有无错误 |
| -v | 可以显示出原文件/压缩文件的压缩比等信息 |
| -# | # 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6 |
5.请查看/tmp目录下所有services开头的文件,并显示详细的信息,注意观察三个压缩文件的大小,看哪个压缩命令的压缩比最高?
[root@localhost tmp]# ls -l services* -rw-r--r--. 1 root root 670293 Oct 29 10:27 services -rw-r--r--. 1 root root 123932 Oct 29 10:46 services.bz2 -rw-r--r--. 1 root root 135489 Oct 29 10:42 services.gz -rw-r--r--. 1 root root 99608 Oct 29 11:09 services.xz
通过观察,我们可以观察到xz的压缩比是最高的
6.请使用 tar 命令,将/etc/sysconfig/network-scripts/中的所有文件打包成一个文件,文件名为 archive1.tar,保存到/tmp目录下,并显示详细的打包过程;在完成打包后,查看archive1.tar 中的文件列表。
[root@localhost ~]# tar -cvf /tmp/archivel.tar /etc/sysconfig/network-scripts/ tar: Removing leading `/' from member names /etc/sysconfig/network-scripts/ /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifdown /etc/sysconfig/network-scripts/ifdown-bnep /etc/sysconfig/network-scripts/ifdown-eth /etc/sysconfig/network-scripts/ifdown-ippp /etc/sysconfig/network-scripts/ifdown-ipv6 [root@localhost tmp]# ll total 3864 -rw-r--r--. 1 root root 204800 Oct 29 11:23 archivel.tar [root@localhost tmp]# tar -tvf archivel.tar drwxr-xr-x root/root 0 2022-12-04 20:08 etc/sysconfig/network-scripts/ -rw-r--r-- root/root 254 2018-08-24 18:23 etc/sysconfig/network-scripts/ifcfg-lo lrwxrwxrwx root/root 0 2022-12-04 20:04 etc/sysconfig/network-scripts/ifdown -> ../../../usr/sbin/ifdown -rwxr-xr-x root/root 654 2018-08-24 18:23 etc/sysconfig/network-scripts/ifdown-bnep -rwxr-xr-x root/root 6532 2018-08-24 18:23 etc/sysconfig/network-scripts/ifdown-eth
tar
tar命令可以为linux的文件和目录创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
首先要弄清两个概念:打包和压缩。
打包是指将一大堆文件或目录变成一个总的文件。
压缩则是将一个大的文件通过一些压缩算法变成一个小文件。 更多详细用法请参照man tar
命令格式:
tar [-z | -j | -J] [cv] [-f 待建立的新文件名] filename … 打包与压缩
tar [-z | -j | -J] [tv] [-f 既有的tar文件名] 查看tar包内容
tar [-z | -j | -J] [xv] [-f 既有的tar文件名] [-C 目录] 解压缩
| 选项与参数 | 说明 |
| -c | 建立打包文件,可搭配-v来查看过程中被打包的文件名(filename) |
| -t | 查看打包文件的内容含有哪些文件名,重点在文件名 |
| -x | 解包或解压缩的功能,可以搭配-C在特定目录解压 |
| -z | 通过gzip的支持进行压缩或解压缩,通常文件名为*.tar.gz |
| -j | 通过bzip2的支持进行压缩或解压缩,通常文件名为*.tar.bz2 |
| -J | 通过xz的支持进行压缩或解压缩,通常文件名为*.tar.xz |
| -v | 在压缩或解压缩的过程中,将正在处理的文件名显示出来 |
| -f filename | 后面接要被处理的文件名 |
| -C 目录 | 这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项 |
| -p | 保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件 |
| -P | 保留绝对路径,即允许备份数据中含有根目录存在之意 |
7.创建/var/log目录下所有文件的压缩存档,只用 gzip 作为压缩方式,压缩文件名为 archive2.tar.gz,保存到/tmp目录下;在完成打包压缩后,查看archive2.tar.gz 的内容。
[root@localhost tmp]# tar -cvzf /tmp/archive2.tar.gz /var/log/ tar: Removing leading `/' from member names /var/log/ /var/log/tallylog /var/log/grubby_prune_debug /var/log/lastlog /var/log/btmp /var/log/wtmp /var/log/samba/ /var/log/samba/old/ /var/log/ppp/ /var/log/glusterfs/ /var/log/audit/ /var/log/audit/audit.log /var/log/pluto/ /var/log/pluto/peer/ /var/log/chrony/ [root@localhost tmp]# tar -tvf archive2.tar.gz drwxr-xr-x root/root 0 2025-10-29 11:19 var/log/ -rw------- root/root 0 2022-12-04 20:03 var/log/tallylog -rw-r--r-- root/root 193 2022-12-04 20:04 var/log/grubby_prune_debug -rw-r--r-- root/root 292292 2025-10-29 11:21 var/log/lastlog -rw------- root/utmp 0 2022-12-04 20:04 var/log/btmp -rw-rw-r-- root/utmp 7296 2025-10-29 11:21 var/log/wtmp drwx------ root/root 0 2022-12-04 20:04 var/log/samba/
8.请将/tmp/archive2.tar.gz文件解压缩到root用户主目录后进行解压缩,并查看确认。
[root@localhost tmp]# tar -xvzf /tmp/archive2.tar.gz -C /root var/log/ var/log/tallylog var/log/grubby_prune_debug var/log/lastlog var/log/btmp var/log/wtmp var/log/samba/ var/log/samba/old/ var/log/ppp/ var/log/glusterfs/ var/log/audit/ var/log/audit/audit.log var/log/pluto/ # 基础命令传入参数是xvf -C是在指定输出目录 -v是因为文件是gz格式压缩的所以要加上-v参数 [root@localhost ~]# ls -l /root total 8 -rw-------. 1 root root 1753 Dec 4 2022 anaconda-ks.cfg drwxr-xr-x. 2 root root 6 Dec 4 2022 Desktop drwxr-xr-x. 2 root root 6 Dec 4 2022 Documents drwxr-xr-x. 2 root root 6 Dec 4 2022 Downloads -rw-r--r--. 1 root root 1801 Dec 4 2022 initial-setup-ks.cfg drwxr-xr-x. 2 root root 6 Dec 4 2022 Music drwxr-xr-x. 2 root root 6 Dec 4 2022 Pictures drwxr-xr-x. 2 root root 6 Dec 4 2022 Public drwxr-xr-x. 2 root root 6 Dec 4 2022 Templates drwxr-xr-x. 3 root root 17 Oct 29 11:37 var drwxr-xr-x. 2 root root 6 Dec 4 2022 Videos [root@localhost ~]# ls -l /root/var total 4 drwxr-xr-x. 20 root root 4096 Oct 29 11:19 log