Linux系统下文件的压缩与备份 ——CentOS7

需要掌握的内容

  • 掌握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
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇