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.