Linux文件打包压缩相关命令

2023-07-06  本文已影响0人  david161

常用操作示例

文件打包压缩用的最频繁的tar命令,常用的压缩命令还有bzip2,gzip等等
以下是一些常用的文件打包压缩操作示例:

bunzip2  file1.bz2 解压一个叫做 'file1.bz2'的文件 
bzip2  file1 压缩一个叫做 'file1' 的文件 
gunzip  file1.gz 解压一个叫做 'file1.gz'的文件 
gzip  file1 压缩一个叫做 'file1'的文件 
gzip -9  file1 最大程度压缩 

rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包 
rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1' 
rar x file1.rar 解压rar包 
unrar x file1.rar 解压rar包 

tar -cvf archive.tar file1 创建一个非压缩的 tarball 
tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件 
tar -tf archive.tar 显示一个包中的内容 
tar -xvf archive.tar 释放一个包 
tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下 
tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包 
tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包 
tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包 
tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包 

zip file1.zip file1 创建一个zip格式的压缩包 
zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包 
unzip file1.zip 解压一个zip格式压缩包

tar命令

tar命令用于打包、压缩与解压压缩包文件。

语法格式
tar [OPTIONS] [FILE]
选项说明
-A  #新增文件到已经存在的归档文件
-B  #设置区块大小
-c  #建立新的归档文件
-C  #将压缩的文件解压到指定的目录下
-d  #记录文件的差异
-x  #解压或提取归档文件内容              
-t  #列出备份文件的内容
-z  #通过gzip命令来压缩/解压缩文件,文件名一般为 xx.tar.gz
-Z  #通过compress命令处理备份文件
-f  #指定备份文件
-v  #显示命令执行过程
-r  #添加新文件到已经压缩的文件中
-u  #添加改变了和现有的文件到已经存在的压缩文件
-j  #通过bzip2命令来压缩/解压缩文件,文件名一般为xx.tar.bz2
-v  #显示操作过程;
-k  #保留原有文件不覆盖
-m  #保留文件不被覆盖
-w  #确认压缩文件的正确性
-p  #保留原来的文件权限与属性
-P  #使用文件名的绝对路径,不删除文件名称前的“/”号
-N  #只将较指定日期更新的文件保存到备份文件中
--exclude=[范本样式]  #排除符合范本样式的文件
--remove-files       #归档/压缩之后删除源文件
应用举例
#将所有.jpg的文件打包成一个名为mingongge.tar的文件
tar -cf mingongge.tar *.jpg

#将所有.gif的文件增加到mingongge.tar的包里
tar -rf mingongge.tar *.gif
 
#更新mingongge.tar文件中的mingongge.gif文件
tar -uf mingonggel.tar mingongge.gif

#列出 all.tar 包中所有文件
tar -tf mingongge.tar

#将文件foo和bar打包成mingongge.tar文件包,也可以理解成:从这两个文件中去创建这个mingongge.tar文件
tar -cfv mingongge.tar foo bar  

#详细列出mingongge.tar中的所有文件
tar -tvf mingongge.tar         

#从mingongge.tar提取所有文件
tar -xf mingongge.tar          

# 将文件全部打包成tar包
tar -cvf mingongg.tar mingongg.log       #仅打包,不压缩!
tar -zcvf mingongg.tar.gz mingongg.log   #打包后,以gzip方式压缩
tar -jcvf mingongg.tar.bz2 mingongg.log  #打包后,以bzip2方式压缩

#排除目录--strip-components
tar -xvf portal-web-v2.0.0.tar --strip-components 1  -C 指定目录

#将 tar包解压缩
tar -zxvf /opt/soft/test/log.tar.gz

#打包或压缩文件时,排队指定的文件类型
tar -zcf mingongge.tar.gz /etc/ /var/ --exclude=*.txt

如果在使用过程中遇到类似tar: Removing leading `/’ from member names的错误,需要使用-P(大写)来解决这个问题。

gzip命令

gzip 命令用来压缩文件,gzip,gunzip命令用于压缩或扩展 GNU GZIP 格式的文件。

语法格式
gzip [ OPTIONS ]  [ name ]
gunzip [ OPTIONS ] [ name ]
选项说明
-a  #使用ASCII文字模式
-c  #将输出写入到标准输出,保持原始文件不变。
-d  #解压缩文件
-f  #强制压缩文件
-h  #显示在线帮助信息
-l  #列出压缩文件的相关信息
-L  #显示版本与版权信息
-n  #压缩文件时,不保留原来的文件名称及时间戳等属性信息
-N  #压缩文件时,保留原来的文件名称及时间戳属性信息
-q  #不显示警告信息
-r  #递归处理,将指定目录下的所有文件及子目录一并处理
-t  #测试压缩文件是否正确无误
-v  #显示命令执行过程信息
-V  #显示版本信息
-<压缩效率>  #压缩效率是一个介于1~9的数值,默认值为“6”,指定的值越高,压缩率就越高
应用举例

1)把当前目录所有的文件压缩成.gz包

[root@centos7 testdir]# gzip *
[root@centos7 testdir]# ll
total 24
-rw-r--r-- 1 root root 59 Jan 16 12:15 cest.txt.gz
-rw-r--r-- 1 root root 57 Jan 16 12:12 cuttest.txt.gz
-rw-r--r-- 1 root root 81 Jan 16 09:55 mingongge1.txt.gz
-rw-r--r-- 1 root root 51 Jan 16 03:36 mingongge2.txt.gz
-rw-r--r-- 1 root root 87 Jan 16 09:59 mingongge.txt.md5.gz
-rw-r--r-- 1 root root 65 Jan 16 10:19 sort.cut.txt.gz

2)把当前目录的每个压缩的文件解压,并列出详细的信息

[root@centos7 testdir]# gzip -dv *
cest.txt.gz:  77.8% -- replaced with cest.txt
cuttest.txt.gz:  73.5% -- replaced with cuttest.txt
mingongge1.txt.gz:  61.3% -- replaced with mingongge1.txt
mingongge2.txt.gz:  25.0% -- replaced with mingongge2.txt
mingongge.txt.md5.gz:  -4.1% -- replaced with mingongge.txt.md5
sort.cut.txt.gz:  19.0% -- replaced with sort.cut.txt
[root@centos7 testdir]# ll
total 24
-rw-r--r-- 1 root root 144 Jan 16 12:15 cest.txt
-rw-r--r-- 1 root root 102 Jan 16 12:12 cuttest.txt
-rw-r--r-- 1 root root 124 Jan 16 09:55 mingongge1.txt
-rw-r--r-- 1 root root  24 Jan 16 03:36 mingongge2.txt
-rw-r--r-- 1 root root  49 Jan 16 09:59 mingongge.txt.md5
-rw-r--r-- 1 root root  42 Jan 16 10:19 sort.cut.txt

3)详细显当前目录每个压缩的文件的信息,但不将文件解压出来

[root@centos7 testdir]# gzip -l *
compressed        uncompressed  ratio uncompressed_name
         59                 144  77.8% cest.txt
         57                 102  73.5% cuttest.txt
         81                 124  61.3% mingongge1.txt
         51                  24  25.0% mingongge2.txt
         87                  49  -4.1% mingongge.txt.md5
         65                  42  19.0% sort.cut.txt
        400                 485  23.9% (totals)

zip命令

zip 命令可以用来压缩、打包文件。如果没有安装该命令的话,可以先安装

#Debian/Ubuntu安装
apt-get install zip

#CentOS安装
[root@centos7 testdir]# zip
-bash: zip: command not found
[root@centos7 testdir]# yum install zip -y
语法格式
zip [ OPTIONS ] [ NAME ..]
选项说明
-A  #调整可执行的自动解压缩文件
-b<工作目录>  #指定压缩文件的存放目录
-c  #给每个被压缩的文件加上注释信息
-d  #从压缩文件内删除指定的文件,也可以使用--delete参数
-D  #压缩文件内不建立目录名称
-f  #更新既有文件,将其它文件一并加入到压缩文件中
-F  #修复已损坏的压缩文件
-g  #将指定文件压缩至已存在的压缩文件中,不建立新文件
-h  #打印帮助信息
-i<范本样式>  #只压缩匹配指定条件的文件
-m  #将指定文件压缩打包后直接删除原始文件
-o  #将压缩文件的属性信息更改成与压缩文件中的最新文件的属性一致
-q  #安静模式
-r  #递归处理
-t<日期时间>  #把压缩文件的日期设成指定的日期
-T  #检查备份文件内的每个文件是否正确无误
-u  #更新较新的文件到压缩文件内
-v  #打印命令执行过程信息或版本信息
-x<范本样式>  #压缩时排除符合条件的文件
-z  #给压缩文件加上注释信息
-<压缩效率>  #指定压缩效率(1~9数字)
应用举例

1)在当前目录下创建压缩文件(自动创建以.zip的文件)

[root@centos7 testdir]# zip mingongge *
  adding: cest.txt.gz (stored 0%)
  adding: cuttest.txt.gz (stored 0%)
  adding: dir/ (stored 0%)
  adding: file (stored 0%)
  adding: mingongge1.txt.gz (stored 0%)
  adding: mingongge2.txt.gz (stored 0%)
  adding: mingongge.txt.md5.gz (stored 0%)
  adding: sort.cut.txt.gz (stored 0%)

2)分割一个打文件

[root@centos7 ~]# ls -lh
total 22M
-rw-------.  1 root root 1.3K Aug 20 10:39 anaconda-ks.cfg
-rw-r--r--   1 root root  140 Jan 16 11:36 dos_test.txt
drwxr-xr-x   3 root root   39 Aug 30 03:48 goinception
-rw-r--r--   1 root root  13M Aug 30 03:42 goInception-linux-amd64-v1.2.3.tar.gz
drwxr-sr-x  11 root   40 4.0K Dec 24 22:35 httpd-2.4.46
-rw-r--r--   1 root root 9.0M Aug  5 07:32 httpd-2.4.46.tar.gz
-rw-r--r--   1 root root    0 Jan 16 11:32 mingongge.file
drwxr-xr-x   3 root root  192 Jan 16 16:19 testdir
-rw-r--r--   1 root root  140 Jan 16 11:32 test.txt
[root@centos7 ~]# zip -s 4M -r mingongge.zip httpd-2.4.46.tar.gz
  adding: httpd-2.4.46.tar.gz (deflated 0%)
[root@centos7 ~]# ls -lh
total 31M
-rw-------.  1 root root 1.3K Aug 20 10:39 anaconda-ks.cfg
-rw-r--r--   1 root root  140 Jan 16 11:36 dos_test.txt
drwxr-xr-x   3 root root   39 Aug 30 03:48 goinception
-rw-r--r--   1 root root  13M Aug 30 03:42 goInception-linux-amd64-v1.2.3.tar.gz
drwxr-sr-x  11 root   40 4.0K Dec 24 22:35 httpd-2.4.46
-rw-r--r--   1 root root 9.0M Aug  5 07:32 httpd-2.4.46.tar.gz
-rw-r--r--   1 root root    0 Jan 16 11:32 mingongge.file
-rw-r--r--   1 root root 4.0M Jan 16 16:24 mingongge.z01
-rw-r--r--   1 root root 4.0M Jan 16 16:24 mingongge.z02
-rw-r--r--   1 root root 943K Jan 16 16:24 mingongge.zip
drwxr-xr-x   3 root root  192 Jan 16 16:19 testdir
#从结果可以看出会拆分成三个文件即:4M大小的mingongge.z01、4M大小的mingongge.z02和一个943k的mingongge.zip文件。

unzip命令

unzip命令用于解压由zip命令压缩的压缩包文件,没安装的话要先安装一下。

#Debian/Ubuntu安装
apt-get install unzip

#CentOS安装
[root@centos7 ~]# unzip 
-bash: unzip: command not found
[root@centos7 ~]# yum install unzip -y
语法格式
unzip [ OPTIONS ] file[.zip] [file(s) ...]
选项说明
-c  #将解压缩的结果输出,并对字符做适当的转换
-f  #更新现有的文件
-l  #列出压缩文件内所包含的文件
-p  #将解压缩的结果显示到屏幕上,但不执行任何的转换
-t  #检查压缩文件是否正确;
-u  #除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中
-v  #显示详细的信息
-z  #仅显示压缩文件的备注信息
-a  #对文本文件进行必要的字符转换
-b  #不对文本文件进行字符转换
-C  #压缩文件名称区分大小写
-j  #不处理压缩文件中原有的目录路径
-L  #将压缩文件中的全部文件名改为小写
-M  #将输出结果再交给more程序处理
-n  #解压缩时不覆盖原有的文件
-o  #unzip执行后覆盖原有的文件,不提示
-P<密码>  #使用zip的密码选项
-q  #不显示任何命令执行过程信息
-s  #将文件名中的空白字符转换为底线字符
-d<目录>  #将解压缩后存至指定的目录下
-x<文件>  #指定不要处理.zip压缩文件中的哪些文件
-Z  #unzip-Z相当于执行zipinfo命令
应用举例
# 解压一个文件
[root@centos7 testdir]# unzip mingongge.zip

# 查看一个压缩文件但不解压
[root@centos7 testdir]# unzip -v mingongge.zip 
Archive:  mingongge.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
      59  Stored       59   0% 01-16-2021 12:15 b32621da  cest.txt.gz
      57  Stored       57   0% 01-16-2021 12:12 cbda1ce8  cuttest.txt.gz
       0  Stored        0   0% 01-16-2021 16:18 00000000  dir/
       0  Stored        0   0% 01-16-2021 16:18 00000000  file
      81  Stored       81   0% 01-16-2021 09:55 da9f2476  mingongge1.txt.gz
      51  Stored       51   0% 01-16-2021 03:36 8fdf382e  mingongge2.txt.gz
      87  Stored       87   0% 01-16-2021 09:59 982ab7bb  mingongge.txt.md5.gz
      65  Stored       65   0% 01-16-2021 10:19 17350869  sort.cut.txt.gz
--------          -------  ---                            -------
     400              400   0%                            8 files

# 指定解压后的文件存放目录
[root@centos7 testdir]# unzip -n mingongge.zip -d /tmp/
Archive:  mingongge.zip
 extracting: /tmp/cest.txt.gz        
 extracting: /tmp/cuttest.txt.gz     
   creating: /tmp/dir/
 extracting: /tmp/file               
 extracting: /tmp/mingongge1.txt.gz  
 extracting: /tmp/mingongge2.txt.gz  
 extracting: /tmp/mingongge.txt.md5.gz  
 extracting: /tmp/sort.cut.txt.gz    
[root@centos7 testdir]# ll /tmp/
total 24
-rw-r--r-- 1 root root 59 Jan 16 12:15 cest.txt.gz
-rw-r--r-- 1 root root 57 Jan 16 12:12 cuttest.txt.gz
drwxr-xr-x 2 root root  6 Jan 16 16:18 dir
-rw-r--r-- 1 root root  0 Jan 16 16:18 file
-rw-r--r-- 1 root root 81 Jan 16 09:55 mingongge1.txt.gz
-rw-r--r-- 1 root root 51 Jan 16 03:36 mingongge2.txt.gz
-rw-r--r-- 1 root root 87 Jan 16 09:59 mingongge.txt.md5.gz
-rw-r--r-- 1 root root 65 Jan 16 10:19 sort.cut.txt.gz

zcat命令

zat命令用于显示压缩包中文件的内容,可以使用gzip -d 或 gunzip 或 zcat 将压缩文件恢复为原始格式。zcat 与 gunzip -c 相同。
zcat 命令用于不真正解压缩文件,就能显示压缩包中文件的内容的场合。

语法格式
zcat [ -fhLV ] [ name ...  ]
选项说明
-S  #指定gzip格式的压缩包的后缀
-c  #将文件内容写到标注输出
-d  #执行解压缩操作
-l  #显示压缩包中文件的列表
-L  #显示软件许可信息
-q  #禁用警告信息
-r  #在目录上执行递归操作
-t  #测试压缩文件的完整性
-V  #显示指令的版本信息
-l  #更快的压缩速度
-9  #更高的压缩比
应用举例

打印压缩的内容,将内容传给more命令进行分页显示

[root@localhost david]# zcat nginx-1.17.8.tar.gz | more
image.png

2)查看压缩属性信息

[root@centos7 ~]# zcat -l httpd-2.4.46.tar.gz
         compressed        uncompressed  ratio uncompressed_name
            9363314            42301440  77.9% httpd-2.4.46.tar
compressed          #压缩大小    
uncompressed        #未压缩大小
ratio               #压缩比率
uncompressed_name    #未压缩文件的名称

3)查看普通文件(类似于cat功能)

[root@centos7 ~]# zcat -f test.txt
This is a test line
This is a test line
This is a test line
This is also a test line
This is also a test line
This is also also a test line

4)其他示例

#测试压缩包的完整性
[root@centos7 ~]# zcat -t httpd-2.4.46.tar.gz

#显示软件许可信息
[root@centos7 ~]# zcat -L httpd-2.4.46.tar.gz
gzip 1.5
Copyright (C) 2007, 2010, 2011 Free Software Foundation, Inc.
Copyright (C) 1993 Jean-loup Gailly.
This is free software.  You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.
上一篇 下一篇

猜你喜欢

热点阅读