linux 下对zip,rar,tar,tar.gz,tar.bz2,tar.xz,gzip,bzip2,xz文件的归档,压缩和解压缩

人生的哲理 2020-11-10 10:44:14
linux ZIP rar tar tar.gz


一.关于打包和压缩

1.打包(打包又称为归档)是指将一大堆文件或目录变成一个总的文件,压缩则是将一个大的文件通过特定的压缩算法变成一个小文件。

2.归档和压缩文件的好处:方便管理,节约硬盘的资源,加快文件传输速度。

3.LINUX中常见的归档压缩文件后缀名(归档压缩格式):

归档压缩后缀名 格式描述
.rar 表示通过WinRAR压缩工具生成的文件
.zip 表示通过zip压缩工具生成的文件
.gz 表示通过gzip压缩工具生成的文件
.bz2 表示通过bzip2压缩工具生成的文件
.xz 表示通过xz压缩工具生成的文件
.tar 表示通过tar打包程序打包生成的文件
.tar.gz 表示先由tar工具打包,然后由gzip工具进行压缩生成的文件
.tar.bz2 表示先由tar工具打包,然后由bzip2工具进行压缩生成的文件
.tar.xz 表示先由tar工具打包,然后由xz工具进行压缩生成的文件

二.linux对rar文件的压缩和解压缩

1.rar格式是windows系统最常见的压缩格式,rar压缩文件可通过WinRAR压缩生成,RAR是一种专利文件格式,用于数据压缩与归档打

包,RAR通常情况比ZIP压缩比高,但压缩/解压缩速度较慢。一般linux都是通过tar打包文件,很少处理rar文件,但是难免会出现rar格式

的文件,我们要学会处理此类文件。

2.linux压缩和解压缩rar文件使用rarlinux程序,此程序需要使用源码编译安装(源码编译安装详情请查看“linux源码编译安装软件原理”章

节),rar压缩文件的语法为:rar a 压缩以后的文件名 需要压缩的文件/目录,rar解压缩文件的语法为:rar x 压缩文件。

#linux压缩和解压缩rar文件使用rarlinux程序
[root@node5 ~]# wget http://www.rarlab.com/rar/rarlinux-3.8.0.tar.gz
#解压缩文件
[root@node5 ~]# tar xf rarlinux-3.8.0.tar.gz
[root@node5 ~]# cd rar
#编译安装rarlinux
[root@node5 ~]# make -j 4 && make install
#centos编译安装rarlinux-3.8.0.tar.gz文件后,执行rar可能会出现“bash: /usr/local/bin/rar: /lib/ld-linux.so.2: bad ELF interpreter:No such file or directory”这样的报错,需要安装以下两个依赖包
[root@node5 ~]# yum install glibc.i686
[root@node5 ~]# yum install libstdc++.so.6 -y
#rar压缩文件的语法为:rar a 压缩以后的文件名 需要压缩的文件/目录
[root@node5 ~]# rar a etc.rar /etc
[root@node5 ~]# ll etc.rar -h
-rw-r--r-- 1 root root 15M Nov 2 23:23 etc.rar
#rar解压缩文件的语法为:rar x 压缩文件
[root@node5 ~]# rar x etc.rar
[root@node5 ~]# ll -d etc
drwxr-xr-x 101 root root 8192 Nov 2 23:17 etc
#查看rar的命令帮助,直接输入rar即可
[root@node5 ~]# rar
RAR 3.80 Copyright (c) 1993-2008 Alexander Roshal 16 Sep 2008
Shareware version Type RAR -? for help
Usage: rar <command> -<switch 1> -<switch N> <archive> <files...>
<@listfiles...> <path_to_extract\>
<Commands>
a Add files to archive
c Add archive comment
cf Add files comment
ch Change archive parameters
cw Write archive comment to file

三.使用tar对文件进行归档,压缩,解压缩

1.tar命令用来对文件进行打包,压缩和解压缩。

2.tar命令的打包是把几个文件/目录集合在一个文件里,通过tar打包之后的文件,可以使用gzip,bzip2或xz等压缩工具进行压缩。

3.tar的语法格式为:tar [OPTION...] [FILE]...,tar命令的常用参数有:

  • ​ -c create创建文件
  • ​ -x -extract [ˈekstrækt] 提取 解压还原文件
  • ​ -v --verbose显示执行详细过程
  • ​ -f --file指定备份文件
  • ​ -t --list 列出压缩包中包括哪些文件,不解包,查看包中的内容
  • ​ -C (大写)--directory 指定解压位置

3.1 tar对文件进行归档和解压

只对文件进行归档不压缩

#对/boot目录打包
#tar的参数前可以不加“-”,tar -cvf boot.tar /boot等价于tar cvf boot.tar /boot
#在对文件进行打包的时候出现这么一句话“tar: Removing leading `/' from member names”,这是因为:在使用绝对路径名归档文件时,将默认从文件名中删除该路径中前面的 / 符号,这样解压时,会直接解压到当前目录。 如果不移除/压缩,当解包时,直接按绝对路径来释放文件,会覆盖原系统中此路径的文件。
[root@node5 ~]# tar -cvf boot.tar /boot
tar: Removing leading `/' from member names
/boot/
/boot/efi/
/boot/efi/EFI/
/boot/efi/EFI/centos/
/boot/grub2/
......
[root@node5 ~]# ll boot.tar -h
-rw-r--r-- 1 root root 92M Nov 3 10:57 boot.tar
#解压
[root@node5 ~]# tar -xvf boot.tar
[root@node5 ~]# ll -d boot
dr-xr-xr-x 5 root root 4096 Apr 26 2019 boot
#指定解压位置 -C
[root@node5 ~]# tar xf boot.tar -C /opt/
[root@node5 ~]# ll -d /opt/boot
dr-xr-xr-x 5 root root 4096 Apr 26 2019 /opt/boot
#把指定的文件和目录进行打包
[root@node5 ~]# tar cf guidan.tar 201810240430234009.pcm baidu.html iu.jpg wanyi.txt logqiege.sh stick
[root@node5 ~]# ll -h guidan.tar
-rw-r--r-- 1 root root 110K Nov 3 11:08 guidan.tar
#不进行解压,查看tar包里面的内容
[root@node5 ~]# tar tf guidan.tar
201810240430234009.pcm
baidu.html
iu.jpg
wanyi.txt
logqiege.sh
stick/
[root@node5 ~]# tar cf boot.tar /boot
tar: Removing leading `/' from member names
[root@node5 ~]# ll -h boot.tar
-rw-r--r-- 1 root root 92M Nov 3 11:22 boot.tar
#解压指定的文件,boot目录里存在initramfs-3.10.0-693.el7.x86_64.img文件,现在我们只想解压此文件,别的文件不解压
[root@node5 ~]# tar xf boot.tar boot/initramfs-3.10.0-693.el7.x86_64.img
[root@node5 ~]# ll boot/initramfs-3.10.0-693.el7.x86_64.img -h
-rw------- 1 root root 20M Apr 26 2019 boot/initramfs-3.10.0-693.el7.x86_64.img

3.2 归档的添加和删除

1.此步骤对已经打包的文件进行添加和删除,以及进行特定打包。

[root@node5 opt]# ls
apache-tomcat-8.0.51 boot.tar boot.tar.bz2 boot.tar.gz boot.tar.xz nginx sdb6_fulldump sdb6_incredump1 sdb6_incredump2 xfsdump_sdb6 xfsdump_shadow
#把指定的文件和目录进行打包
[root@node5 opt]# tar cf ceshi.tar sdb6_fulldump sdb6_incredump1 sdb6_incredump2 xfsdump_sdb6
#不进行解压,查看tar包里面的内容
[root@node5 opt]# tar tf ceshi.tar
sdb6_fulldump
sdb6_incredump1
sdb6_incredump2
xfsdump_sdb6
#-r:向压缩归档文件末尾追加文件
[root@node5 opt]# tar rf ceshi.tar xfsdump_shadow
[root@node5 opt]# tar tf ceshi.tar
sdb6_fulldump
sdb6_incredump1
sdb6_incredump2
xfsdump_sdb6
xfsdump_shadow
#向压缩归档文件删除指定文件
[root@node5 opt]# tar --delete -f ceshi.tar sdb6_fulldump
[root@node5 opt]# tar tf ceshi.tar
sdb6_incredump1
sdb6_incredump2
xfsdump_sdb6
xfsdump_shadow
#对/usr/local/nginx/conf目录进行打包,但是排除以default结尾和以types结尾的文件
[root@node5 opt]# tar cf nginx1.19.tar /usr/local/nginx/conf --exclude=/usr/local/nginx/conf/*.default --exclude=/usr/local/nginx/conf/*.types
tar: Removing leading `/' from member names
#查看tar包发现,没有以default结尾和以types结尾的文件
[root@node5 opt]# tar tf nginx1.19.tar
usr/local/nginx/conf/
usr/local/nginx/conf/koi-win
usr/local/nginx/conf/koi-utf
usr/local/nginx/conf/win-utf
usr/local/nginx/conf/fastcgi_params
usr/local/nginx/conf/fastcgi.conf
usr/local/nginx/conf/uwsgi_params
usr/local/nginx/conf/scgi_params
usr/local/nginx/conf/nginx.conf

3.3 tar对文件进行归档压缩和解压缩

1.此步骤不仅对文件进行归档,还进行相应的压缩。

2.tar进行压缩常用的参数:

  • ​ -z, --gzip 以gzip方式压缩 :tar zcvf newfile.tar.gz SOURCE ,扩展名: tar.gz
  • ​ -j : 以bz2方式压缩 :tar jcvf newfile.tar.bz2 SOURCE 扩展名:tar.bz2
  • ​ -J : 以xz 方式压缩 :tar Jcvf newfile.tar.xz SOURCE 扩展名:tar.xz

3.对/boot目录进行三种不同方式的压缩和解压缩,并对比压缩比率。

[root@node5 ~]# cd /opt/
[root@node5 opt]# pwd
/opt
[root@node5 opt]# ls
apache-tomcat-8.0.51 nginx sdb6_fulldump sdb6_incredump1 sdb6_incredump2 xfsdump_sdb6 xfsdump_shadow
#创建tar包
[root@node5 opt]# tar cf boot.tar /boot
tar: Removing leading `/' from member names
#创建tar.gz包
[root@node5 opt]# tar zcf boot.tar.gz /boot
tar: Removing leading `/' from member names
#解压缩tar.gz包
[root@node5 opt]# tar zxf boot.tar.gz
#创建tar.bz2包
[root@node5 opt]# tar jcf boot.tar.bz2 /boot
tar: Removing leading `/' from member names
#解压缩tar.bz2包
[root@node5 opt]# tar jxf boot.tar.bz2
#解压缩tar.bz2包到/home/elk/目录
[root@node5 opt]# tar jxf boot.tar.bz2 -C /home/elk/
[root@node5 opt]# ll /home/elk/boot -dh
dr-xr-xr-x 5 root root 4.0K Apr 26 2019 /home/elk/boot
#创建tar.xz包
[root@node5 opt]# tar Jcf boot.tar.xz /boot
tar: Removing leading `/' from member names
#解压缩tar.xz包
[root@node5 opt]# tar Jxf boot.tar.xz
#对比三个压缩文件,发现boot.tar.xz压缩比例最高,但是花费时间也最多
[root@node5 opt]# ll -h boot.tar*
-rw-r--r-- 1 root root 92M Nov 3 14:51 boot.tar
-rw-r--r-- 1 root root 84M Nov 3 14:54 boot.tar.bz2
-rw-r--r-- 1 root root 84M Nov 3 14:52 boot.tar.gz
-rw-r--r-- 1 root root 82M Nov 3 15:15 boot.tar.xz

四.linux对zip文件的压缩和解压缩

1.ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),zip格式的压缩文件在linux和

windows上都是很常见的,在linux中,zip是压缩程序,unzip是解压缩程序。

[root@node5 opt]# pwd
/opt
#将/usr/local/nginx/conf/目录下所有的conf文件压缩成一个zip包
[root@node5 opt]# zip conf.zip /usr/local/nginx/conf/*.conf
adding: usr/local/nginx/conf/fastcgi.conf (deflated 60%)
adding: usr/local/nginx/conf/nginx.conf (deflated 64%)
#压缩文件
[root@node5 opt]# zip shadow.zip /etc/shadow
adding: etc/shadow (deflated 43%)
#压缩目录
[root@node5 opt]# zip -r boot.zip /boot
#解压缩zip包
[root@node5 opt]# unzip conf.zip
Archive: conf.zip
inflating: usr/local/nginx/conf/fastcgi.conf
inflating: usr/local/nginx/conf/nginx.conf
[root@node5 opt]# ls usr/local/nginx/conf/
fastcgi.conf nginx.conf
#解压缩zip包到指定目录
[root@node5 opt]# unzip conf.zip -d /home/elk/
Archive: conf.zip
inflating: /home/elk/usr/local/nginx/conf/fastcgi.conf
inflating: /home/elk/usr/local/nginx/conf/nginx.conf
[root@node5 opt]# ls /home/elk/usr/local/nginx/conf/
fastcgi.conf nginx.conf

五.使用gzip,bzip2,xz压缩文件,解压文件,查看文件

[root@node5 opt]# ls
apache-tomcat-8.0.51 nginx sdb6_fulldump sdb6_incredump1 sdb6_incredump2 usr xfsdump_sdb6 xfsdump_shadow
#gzip压缩
[root@node5 opt]# gzip xfsdump_shadow
[root@node5 opt]# ls
apache-tomcat-8.0.51 nginx sdb6_fulldump sdb6_incredump1 sdb6_incredump2 usr xfsdump_sdb6 xfsdump_shadow.gz
#查看gzip压缩之后的文件
[root@node5 opt]# zcat xfsdump_shadow.gz
#解压gzip文件
[root@node5 opt]# gzip -d xfsdump_shadow.gz
#bzip2压缩
[root@node5 opt]# bzip2 xfsdump_sdb6
[root@node5 opt]# ls
apache-tomcat-8.0.51 nginx sdb6_fulldump sdb6_incredump1 sdb6_incredump2 usr xfsdump_sdb6.bz2 xfsdump_shadow.gz
#查看bzip2压缩之后的文件
[root@node5 opt]# bzcat xfsdump_sdb6.bz2
#解压bzip2文件
[root@node5 opt]# bzip2 -d xfsdump_sdb6.bz2
#xz压缩
[root@node5 opt]# xz sdb6_incredump2
[root@node5 opt]# ls
apache-tomcat-8.0.51 nginx sdb6_fulldump sdb6_incredump1 sdb6_incredump2.xz usr xfsdump_sdb6.bz2 xfsdump_shadow.gz
#查看xz压缩之后的文件
[root@node5 opt]# xzcat sdb6_incredump2.xz
#解压xz文件
[root@node5 opt]# xz -d sdb6_incredump2.xz
版权声明
本文为[人生的哲理]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/renshengdezheli/p/13952515.html

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云