Linux下常用的压缩工具总结(gzip/tar/bzip2/zip)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:

gzip:

1)只能针对普通文件进行压缩,对文件夹、符号链接无效。

2)如果想对多个文件一起压缩并打包,gzip是无法办到的,需要结合tar进行

1
2
3
4
5
6
7
8
9
10
[root@mysql-master databackup] # ll
总用量 32
drwx------ 2 root root 4096 10月 12 00:43 2016-10-12_00-43-29
drwx------ 2 root root 4096 10月 12 00:44 2016-10-12_00-44-00
drwx------ 2 root root 4096 10月 12 00:46 2016-10-12_00-46-53
drwx------ 2 root root 4096 10月 12 00:47 2016-10-12_00-47-43
drwx------ 2 root root 4096 10月 12 00:49 2016-10-12_00-49-02
-rw-r--r-- 1 root root 2522 10月 19 21:17  passwd
drwxr-xr-x 2 root root 4096 10月 12 00:37 xtrabackup
drwxr-xr-x 2 root root 4096 10月 12 00:37 xtrabackuplog

使用“-c”选项,可以保留原有文件

1
2
3
4
5
6
7
8
9
10
11
12
[root@mysql-master databackup] # gzip -c passwd >passwd.gz
[root@mysql-master databackup] # ll
总用量 36
drwx------ 2 root root 4096 10月 12 00:43 2016-10-12_00-43-29
drwx------ 2 root root 4096 10月 12 00:44 2016-10-12_00-44-00
drwx------ 2 root root 4096 10月 12 00:46 2016-10-12_00-46-53
drwx------ 2 root root 4096 10月 12 00:47 2016-10-12_00-47-43
drwx------ 2 root root 4096 10月 12 00:49 2016-10-12_00-49-02
-rw-r--r-- 1 root root 2522 10月 19 21:17  passwd
-rw-r--r-- 1 root root 1006 10月 19 21:18  passwd .gz
drwxr-xr-x 2 root root 4096 10月 12 00:37 xtrabackup
drwxr-xr-x 2 root root 4096 10月 12 00:37 xtrabackuplog

直接使用“gzip+文件”的压缩方式,原始文件不会被保留

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@mysql-master databackup] # cp /etc/shadow .
[root@mysql-master databackup] # ll
总用量 40
drwx------ 2 root root 4096 10月 12 00:43 2016-10-12_00-43-29
drwx------ 2 root root 4096 10月 12 00:44 2016-10-12_00-44-00
drwx------ 2 root root 4096 10月 12 00:46 2016-10-12_00-46-53
drwx------ 2 root root 4096 10月 12 00:47 2016-10-12_00-47-43
drwx------ 2 root root 4096 10月 12 00:49 2016-10-12_00-49-02
-rw-r--r-- 1 root root 2522 10月 19 21:17  passwd
-rw-r--r-- 1 root root 1006 10月 19 21:18  passwd .gz
---------- 1 root root 1393 10月 19 21:19 shadow
drwxr-xr-x 2 root root 4096 10月 12 00:37 xtrabackup
drwxr-xr-x 2 root root 4096 10月 12 00:37 xtrabackuplog
[root@mysql-master databackup] # gzip shadow 
[root@mysql-master databackup] # ll
总用量 40
drwx------ 2 root root 4096 10月 12 00:43 2016-10-12_00-43-29
drwx------ 2 root root 4096 10月 12 00:44 2016-10-12_00-44-00
drwx------ 2 root root 4096 10月 12 00:46 2016-10-12_00-46-53
drwx------ 2 root root 4096 10月 12 00:47 2016-10-12_00-47-43
drwx------ 2 root root 4096 10月 12 00:49 2016-10-12_00-49-02
-rw-r--r-- 1 root root 2522 10月 19 21:17  passwd
-rw-r--r-- 1 root root 1006 10月 19 21:18  passwd .gz
---------- 1 root root  536 10月 19 21:19 shadow.gz
drwxr-xr-x 2 root root 4096 10月 12 00:37 xtrabackup
drwxr-xr-x 2 root root 4096 10月 12 00:37 xtrabackuplog

使用“gzip -d 压缩文件”,进行解压

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@mysql-master databackup] # gzip -d shadow.gz
[root@mysql-master databackup] # ll
总用量 40
drwx------ 2 root root 4096 10月 12 00:43 2016-10-12_00-43-29
drwx------ 2 root root 4096 10月 12 00:44 2016-10-12_00-44-00
drwx------ 2 root root 4096 10月 12 00:46 2016-10-12_00-46-53
drwx------ 2 root root 4096 10月 12 00:47 2016-10-12_00-47-43
drwx------ 2 root root 4096 10月 12 00:49 2016-10-12_00-49-02
-rw-r--r-- 1 root root 2522 10月 19 21:17  passwd
-rw-r--r-- 1 root root 1006 10月 19 21:18  passwd .gz
---------- 1 root root 1393 10月 19 21:19 shadow
drwxr-xr-x 2 root root 4096 10月 12 00:37 xtrabackup
drwxr-xr-x 2 root root 4096 10月 12 00:37 xtrabackuplog
如上,我们发现原有的shadow文件已经出来了

gzip有九个压缩级别1-9(数字越大,压缩强度越高,速度对应的也会慢些),默认级别为6

# gzip -1 test.log


tar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
压缩 /etc 文件:
[root@mysql-master databackup] # tar -czvf etc.tar.gz /etc
[root@mysql-master databackup] # du -sh etc.tar.gz 
12Metc. tar .gz
解压缩,并进行查看
 
[root@mysql-master databackup] # tar -xf etc.tar.gz
tar 常用的几个选项:
-c选项:表示要进行打包动作
-x选项:表示要进行拆包动作
-z选项:表示用 gzip 进行压缩或解压缩
- v 选项:表示在拆包过程中直接整个过程,把已拆包的文件显示出来
-f选项:表示指定要拆包的文件
-t选项:列出打包的内容,适用于不想解压,但想查看压缩包内容的情况
[root@mysql-master databackup] # du -sh src.tar.gz 
607Msrc. tar .gz
[root@mysql-master databackup] # tar -ztvf src.tar.gz |less



bzip2:

bzip2用于压缩文件,bunzip2用于解压文件

但是我们查看链接文件,会发现,其实bunzip2其实就是bzip2的一个链接

1
2
3
4
5
6
7
8
9
10
11
12
[root@mysql-master ~] # ls -l /usr/bin/bunzip2 
lrwxrwxrwx. 1 root root 5 7月   5 23:42  /usr/bin/bunzip2  ->  bzip2
[root@mysql-master ~] # bzip2 install.log
[root@mysql-master ~] # ls
anaconda-ks.cfg        index.html        install .log.syslog  M_pass.log  R_Server.log  模板  图片  下载  桌面
changehostpassword.sh   install .log.bz2  ip_list.txt         R_PWD.txt   公共的        视频  文档  音乐
[root@mysql-master ~] # file install.log.bz2 
install .log.bz2:  bzip2  compressed data, block size = 900k
[root@mysql-master ~] # bunzip2 -d install.log.bz2 
[root@mysql-master ~] # ls
anaconda-ks.cfg        index.html    install .log.syslog  M_pass.log  R_Server.log  模板  图片  下载  桌面
changehostpassword.sh   install .log  ip_list.txt         R_PWD.txt   公共的        视频  文档  音乐

zip:

与gzip/bzip2类似,zip用于文件压缩,unzip命令用于解压缩,zip支持对文件和文件夹的压缩,-r表示递归

注意:zip在压缩文件的时候,会保留原文件

1
2
3
4
5
6
7
8
9
10
11
12
[root@mysql-master ~] # cd /usr/local/src/
[root@mysql-master src] # ls
cmake-2.8.8         libiconv-1.14. tar .gz    mcrypt-2.6.8         mhash-0.9.9.9. tar .gz                 mysql-5.5.32. tar .gz  php-5.3.27
cmake-2.8.8. tar .gz  libmcrypt-2.5.8         mcrypt-2.6.8. tar .gz  mysql-5.5.32                         nginx-1.6.2          php-5.3.27. tar .gz
libiconv-1.14       libmcrypt-2.5.8. tar .gz  mhash-0.9.9.9        mysql-5.5.32-linux2.6-x86_64. tar .gz  nginx-1.6.2. tar .gz
[root@mysql-master src] # zip -r nginx.zip nginx-1.6.2.tar.gz nginx-1.6.2/
[root@mysql-master src] # ls
cmake-2.8.8         libiconv-1.14. tar .gz    mcrypt-2.6.8         mhash-0.9.9.9. tar .gz                 mysql-5.5.32. tar .gz  nginx.zip
cmake-2.8.8. tar .gz  libmcrypt-2.5.8         mcrypt-2.6.8. tar .gz  mysql-5.5.32                         nginx-1.6.2          php-5.3.27
libiconv-1.14       libmcrypt-2.5.8. tar .gz  mhash-0.9.9.9        mysql-5.5.32-linux2.6-x86_64. tar .gz  nginx-1.6.2. tar .gz   php-5.3.27. tar .gz
[root@mysql-master src] # du -sh nginx.zip 
7.7Mnginx.zip

unzip结合-d参数,解压到指定文件夹

1
2
3
4
5
6
[root@mysql-master src] # mkdir -p /mysqlbackup
[root@mysql-master src] # unzip -d /mysqlbackup nginx.zip 
[root@mysql-master src] # ls -l /mysqlbackup/
总用量 792
drwxr-xr-x 9 root root   4096 9月  16 2014 nginx-1.6.2
-rw-r--r-- 1 root root 804164 6月  22 01:17 nginx-1.6.2. tar .gz

使用“unzip -v 压缩文件”的组合,不解压的情况下,来查看压缩文件中的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@mysql-master src] # unzip -v nginx.zip 
Archive:  nginx.zip
  Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
   804164  Defl:N   804176   0% 06-22-2016 01:17 c721c245  nginx-1.6.2. tar .gz
        0  Stored        0   0% 09-16-2014 20:23 00000000  nginx-1.6.2/
     2369  Defl:N      732  69% 09-16-2014 20:23 85d03809  nginx-1.6.2 /configure
        0  Stored        0   0% 09-22-2016 15:46 00000000  nginx-1.6.2 /contrib/
        0  Stored        0   0% 09-16-2014 20:23 00000000  nginx-1.6.2 /contrib/vim/
        0  Stored        0   0% 09-22-2016 15:46 00000000  nginx-1.6.2 /contrib/vim/indent/
      250  Defl:N      165  34% 09-16-2014 20:23 87c1f91b  nginx-1.6.2 /contrib/vim/indent/nginx .vim
        0  Stored        0   0% 09-22-2016 15:46 00000000  nginx-1.6.2 /contrib/vim/ftdetect/
      198  Defl:N       79  60% 09-16-2014 20:23 68d244f2  nginx-1.6.2 /contrib/vim/ftdetect/nginx .vim
        0  Stored        0   0% 09-16-2014 20:23 00000000  nginx-1.6.2 /contrib/vim/syntax/
    31641  Defl:N     5987  81% 09-16-2014 20:23 fe4d7202  nginx-1.6.2 /contrib/vim/syntax/nginx .vim
        0  Stored        0   0% 09-22-2016 15:46 00000000  nginx-1.6.2 /contrib/unicode2nginx/

使用“unzip -t 压缩文件”,验证压缩文件的完整性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@mysql-master src] # unzip -t nginx.zip 
Archive:  nginx.zip
     testing: nginx-1.6.2. tar .gz       OK
     testing: nginx-1.6.2/             OK
     testing: nginx-1.6.2 /configure     OK
     testing: nginx-1.6.2 /contrib/      OK
     testing: nginx-1.6.2 /contrib/vim/    OK
     testing: nginx-1.6.2 /contrib/vim/indent/    OK
     testing: nginx-1.6.2 /contrib/vim/indent/nginx .vim   OK
     testing: nginx-1.6.2 /contrib/vim/ftdetect/    OK
     testing: nginx-1.6.2 /contrib/vim/ftdetect/nginx .vim   OK
     testing: nginx-1.6.2 /contrib/vim/syntax/    OK
     testing: nginx-1.6.2 /contrib/vim/syntax/nginx .vim   OK
     testing: nginx-1.6.2 /contrib/unicode2nginx/    OK
     testing: nginx-1.6.2 /contrib/unicode2nginx/koi-utf    OK
     -------------------------------------------------------
     -------------------------------------------------------
     testing: nginx-1.6.2 /Makefile      OK
     testing: nginx-1.6.2 /conf/         OK
     testing: nginx-1.6.2 /conf/uwsgi_params    OK
     testing: nginx-1.6.2 /conf/koi-utf    OK
     testing: nginx-1.6.2 /conf/win-utf    OK
     testing: nginx-1.6.2 /conf/mime .types   OK
     testing: nginx-1.6.2 /conf/fastcgi .conf   OK
     testing: nginx-1.6.2 /conf/koi-win    OK
     testing: nginx-1.6.2 /conf/fastcgi_params    OK
     testing: nginx-1.6.2 /conf/scgi_params    OK
     testing: nginx-1.6.2 /conf/nginx .conf   OK
No errors detected  in  compressed data of nginx.zip.

zip的扩展:

当我们配置好压缩文件的时候,发现其中某个比较占空间的文件并不是我们想要的,并且,我们不想重新解压和压缩。

1
2
3
4
5
6
7
8
9
10
向压缩文件中删除文件:
[root@mysql-master src] # zip nginx.zip -d nginx-1.6.2.tar.gz 
deleting: nginx-1.6.2. tar .gz
[root@mysql-master src] # unzip -v nginx.zip |grep nginx-1.6.2.tar.gz 
发现没有该文件存在了
向压缩文件中添加文件:
[root@mysql-master src] # zip -m nginx.zip nginx-1.6.2.tar.gz 
   adding: nginx-1.6.2. tar .gz (deflated 0%)
[root@mysql-master src] # unzip -v nginx.zip |grep nginx-1.6.2.tar.gz
   804164  Defl:N   804176   0% 06-22-2016 01:17 c721c245  nginx-1.6.2. tar .gz












本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/1863756,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
算法 Linux 数据安全/隐私保护
“Linux压缩大师”:gzip、bzip2、tar与zip
在Linux系统管理中,文件压缩与解压至关重要,能有效减少存储空间占用并加快文件传输。常用工具包括gzip、bzip2、tar和zip。gzip采用Lempel-Ziv算法,压缩率高且速度快,适用于单个文件压缩,扩展名为.gz。bzip2压缩率更高但速度稍慢,同样用于单个文件,扩展名为.bz2。tar主要用于打包文件而不直接压缩,常与gzip或bzip2结合使用实现压缩打包。zip则是一种通用压缩工具,支持多文件压缩及密码保护,兼容性好。这些工具让Linux环境下的文件管理更加高效便捷。
443 1
|
存储 Linux Windows
Linux zip命令:压缩文件或目录
我们经常会在 Windows 系统上使用 “.zip”格式压缩文件,其实“.zip”格式文件是 Windows 和 Linux 系统都通用的压缩文件类型,属于几种主流的压缩格式(zip、rar等)之一,是一种相当简单的分别压缩每个文件的存储格式,本节要讲的 zip 命令,类似于 Windows 系统中的 winzip 压缩程序,其基本格式如下: [root@localhost ~]#zip [选项] 压缩包名 源文件或源目录列表 注意,zip 压缩命令需要手工指定压缩之后的压缩包名,注意写清楚扩展名,以便解压缩时使用。 下面给大家举几个例子。 【例 1】zip 命令的基本使用。 [r
495 0
Linux zip命令:压缩文件或目录
|
Linux
【Linux系统】使用g = GloveEmbedding()报错BadZipFile: File is not a zip file
本文讨论了在使用embeddings工具包时遇到的“BadZipFile: File is not a zip file”错误,原因是程序中断导致zip文件损坏,解决方法是删除损坏的文件并重新运行程序,具体操作是在Linux系统中删除“~/.embeddings/”目录下的glove文件夹。
186 0
|
Linux Shell
Linux中tar归档命令、zip压缩、gzip压缩、bzip2压缩
Linux中tar归档命令、zip压缩、gzip压缩、bzip2压缩
|
2月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
421 1
二、Linux文本处理与文件操作核心命令
|
2月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
291 137
|
2月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
679 57
|
5月前
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
504 143
linux命令—tree
|
1月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
405 2
|
2月前
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
274 0
Linux内存问题排查命令详解