Linux系统常见的压缩命令和打包命令(gzip,zcat,bzip2,bzcat,xz,xzcat,zip,unzip,tar)
文章目录
Linux系统常见的压缩命令和打包命令
在Linux的环境中,压缩文件的扩展名大多是: tar、tar.gz、*tgz、*gz、 *.Z 、 *.bz2、 *.xz。
这是因为Linux支持的压缩命令非常多,且不同的命令所用的压缩技术并不相同,彼此之间可能就无法互通压缩/解压缩文件。所以,当你要下载某个压缩文件时,自然就需要知道该文件是由哪中压缩命令所制作出来的,好用来对照着解压缩,下面我们就列出了几个常见的压缩文件扩展名
*.Z compress程序压缩的文件*.zip zip程序压缩的文件*.gz gzip程序压缩的文件*.bz2 bzip2程序压缩的文件*xz xz程序压缩的文件*.tar tar程序打包的文件,并没有压缩过*.tar.gz tar程序打包的文件,并且经过gzip的压缩*.tar.bz2 tar程序打包的文件,并且经过bzip2的压缩*.tar.xz tar程序打包的文件,并且经过xz的压缩
下面就介绍一下Linux基本的压缩命令
gzip
gzip可以说是应用最广泛的压缩命令了,目前gzip可以解开compress、zip与gzip等软件所压缩的文件,至于gzip所建立的压缩文件为*.gz,让我们来看看这个命令的语法
gzip [选项] 文件名选项参数-c 把压缩文件的数据输入到屏幕上-d 解压缩文件-t 可以校验压缩文件的一致性,看看文件是否有误-v 可以显示源文件/压缩文件的等比信息-1 压缩的更快-9 压缩的更好
gzip命令使用实例
- 压缩文件
gzip csq# 上述命令将压缩file.txt文件并生成一个新的gzip格式的文件file.txt.gz
- 解压文件:
gzip -d csq.gz# 上述命令将解压file.txt.gz文件并生成一个新的file.txt文件。
- 查看压缩比:
gzip -v csqcsq: 71.3% -- replaced with csq2.gz# 上述命令将压缩csq2文件,可以看出可怜的压缩率才有71.3%
- 压缩多个文件:
gzip *.txt# 上述命令将压缩所有以.txt结尾的文件
- 压缩目录:
gzip -r dir# 上述命令将压缩整个dir目录及其中的文件
zcat命令使用实例
zcat是一个用于查看gzip格式压缩文件内容的命令行工具,它可以将gzip格式的压缩文件展开,并直接输出展开后的内容。
zcat命令的使用示例:
- 使用gzip命令压缩文件:
gzip csq# 上述命令将压缩file.txt文件并生成一个新的gzip格式的文件file.txt.gz。
- 使用gzip命令解压缩文件:
gzip -d csq.gz# 上述命令将解压file.txt.gz文件并生成一个新的file.txt文件。
- 使用zcat命令查看gzip格式压缩文件内容:
zcat csq.gz# 上述命令将展开file.txt.gz文件并将其内容输出到标准输出。
bzip2
bzip2则是为了替换gzip并提供更佳的压缩比而来,bzip2甚至要比gzip还要好,bzip2的用法和gzip几乎相同,下面看看bzip2的用法
bzip2 [选项] [文件名]选项:-c 将压缩的过程产生的数据输出到屏幕上-d 解压缩文件-k 保留原始文件-z 压缩文件-v 显示压缩或解压缩的信息-f 强制覆盖输出文件并压缩链接-1 到 -9 指定压缩级别,数字越大,压缩比越高,但耗费的时间也越长
bzip2命令使用实例
- 压缩文件:
bzip2 csq.txt# 上述命令将压缩file.txt文件并生成一个新的bzip2格式的文件file.txt.bz2。
- 解压文件:
bzip2 -d csq.bz2# 上述命令将解压缩file.txt.bz2文件并生成一个新的file.txt文件。
- 查看压缩比:
bzip2 -v csq csq: 6.899:1, 1.160 bits/byte, 85.50% saved, 6961 in, 1009 out.# 此时你就会看到csq 变成了 csq.bz2之外,你可以发现bzip2的压缩比要比gzip好# 压缩率有原来gzip的71.3%提升到了bzip2的85.50%
- 压缩多个文件:
bzip2 *.txt# 上述命令将压缩所有以.txt结尾的文件。
bzcat命令使用实例
- bzcat命令用于输出bzip2格式压缩文件的内容。其语法为:
bzcat 文件名.bz2
- 输出bzip2格式压缩文件file.txt.bz2的内容:
bzcat file.txt.bz2
xz
虽然说bzip2已经具有很棒的压缩比,不过显然某些自由软件开发者还不满足,因此后来还推出了xz这个压缩比更高的软件,这个软件的用法也跟gzip/bzip2几乎一模一样,我们来看看怎么使用
xz [选项] 文件名选项-d 解压缩文件-t 测试文件的完整性-l 列出压缩文件的相关信息-k 保留原本的文件不删除-v 显示压缩或解压缩的信息-c 和之前两个解压缩命令一样,就是将数据在屏幕上输出-1 到 -9 指定压缩级别,数字越大,压缩比越高,但耗费的时间也越长
xz命令使用实例
将文件csq压缩成xz格式的文件csq.xz
xz -v csqcsq (1/1) 100 % 724 B / 6,893 B = 0.105 # 可以看到这个压缩比例直接上升到100%,容量又进一步下降更多
列出压缩文件的信息,读出压缩文件的内容
xz -l csq.xz Strms Blocks Compressed Uncompressed Ratio Check Filename 1 1 724 B 6,893 B 0.105 CRC64 csq.xz# 可以看到解压缩之前文件大小和解压缩后的文件大小,非常的人性化
解压缩文件
xz -d csq.xz
保留原来文件,创建这个文件的压缩文件
xz -k csq# ls 当前目录就可以看到,原来的文件csq,和压缩之后的文件csq.xz
xzcat命令使用实例
xzcat命令用于输出xz格式压缩文件的内容。
xzcat 文件名.xz
打包命令:zip
zip可以将多个文件或目录打包成一个zip文件
zip命令的语法如下:
zip [选项] [压缩文件名] [文件或目录名]选项:-r:递归压缩子目录中的文件。-q:安静模式,不输出任何消息。-m:压缩后删除原文件。-j:仅压缩文件,不包括目录。-u:更新压缩文件,仅添加新文件和已修改的
zip命令的使用实例
将文件或目录压缩成zip文件:
zip -r compressed.zip directory/ csq/# 这个命令将目录"directory/" 和 “csq”及其所有子目录和文件压缩成一个名为"compressed.zip"的zip文件。
添加文件到已有的zip文件:
zip -u compressed.zip file.txt# 这个命令将文件"file.txt"添加到名为"compressed.zip"的zip文件中。
unzip
unzip命令可以将zip格式的文件解压缩到指定的目录中,或者将其解压缩到当前目录下。下面详细介绍一下unzip命令的使用方法。
unzip命令的基本语法如下:
unzip [选项] 文件名.zip [-d 目标目录]选项:-q:安静模式,不输出任何信息。-o:覆盖已有的文件。-j:只解压缩文件,不创建目录。-d 目标目录:指定解压缩后的文件存放的目录,默认为当前目录。
unzip命令的使用示例
- 将文件file.zip解压缩到当前目录:
unzip file.zip
- 将文件file.zip解压缩到目录/home/user/下:
unzip file.zip -d /home/user/
- 只解压缩文件file.zip中的所有txt文件,并将其解压缩到当前目录:
unzip file.zip '*.txt'
- 将文件file.zip解压缩到目录/home/user/下,并覆盖已有的文件:
unzip -o file.zip -d /home/user/
打包命令:tar
tar是一个常用的Linux打包命令,可以将多个文件或目录打包成一个文件。tar本身不进行压缩,但可以配合gzip、bzip2等工具进行压缩,接下来我们来看看他的语法
tar [选项] 文件名选项:-c 新建打包文件-f 指定打包后的文件名-v 显示打包过程-x 解包-t 查看打包文件的内容-z 使用gzip进行压缩/解压缩,时文件名最好为:*.tar.gz-j 使用bzip2进行压缩/解压缩,此时文件名最好为:*.tar.bz2-J 使用xz进行压缩/解压缩,此时文件名最好为:*.tar.xz-C 这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项-P(小写) 保留备份数据的原本权限与属性,常用于备份重要的配置文件-p(大写) 保留绝对路径,就是允许备份数据中含有根目录存在的意思--exclude=要排除打包的文件名或目录名
tar命令使用案例
其实最简单的使用tar就只用记住下面的命令即可:
压缩: tar -jcv file.tar.bz2 [要被压缩的文件名字或者目录名称]查询: tar -jtv file.tar.bz2解压缩:tar -jxv file.tar.bz2 -C [指定解压到的哪个目录]file.tar.bz2 是自己取的文件名,tar并不会主动创建文件名,需要我们自定义,所以扩展名就显得很重要了,如果不加[-z][-j][-J]的话,文件名最好取为 *.tar即可。如果是 -j选项,代表bzip2的支持,因此文件名最好取为*.tar.bz2,因为bzip2会产生.bz2的扩展名,至于如果是加上了-z的gzip的支持,那文件名最好为*.tar.gz。
然后使用time查看-z ,-j,-J,哪个打包时间最长,哪个时间最短
[root@localhost ~]# time tar -jpcv -f etc.tar.bz2 /etc......real 0m3.928suser 0m3.172ssys 0m0.566s[root@localhost ~]# time tar -zpcv -f etc1.tar.gz /etc......real 0m1.298suser 0m1.061ssys 0m0.395s[root@localhost ~]# time tar -Jpcv -f etc2.tar.xz /etc......real 0m14.050suser 0m13.251ssys 0m1.293s我们使用du -h 目录来查看他们创建的压缩文件所占用大小[root@localhost ~]# du -h etc.tar.*8.8M etc.tar.bz210M etc.tar.gz7.2M etc.tar.xz# 可以看出压缩比越好当然花费的时间越长,虽然gzip速度块,总时间不到1秒,但是压缩率糟糕,使用xz的话,虽然压缩比最佳,不过要花14秒的可怕时间,还是仅仅备份7MB的文件!如果要备份很大的很久真的要考虑一下时间成本。
查看tar文件的数据内容(可查看文件名)
[root@localhost ~]# tar -jvt -f etc.tar.bz2 ........drwxr-xr-x root/root 0 2023-04-06 15:25 etc/libreport/drwxr-xr-x root/root 0 2020-04-02 21:38 etc/libreport/events/drwxr-xr-x root/root 0 2023-04-06 15:25 etc/libreport/events.d/-rw-r--r-- root/root 157 2022-02-24 01:09 etc/libreport/events.d/mdadm_# 加上-v的选项,详细的文件权限/属性都会被列出来。如果只想知道文件名可以把-v去掉
打包某目录,但不含该目录下的某些文件应该怎么做呢?
假设我们要打包 /etc/yum 这几个目录,但却不想要打包 /etc/yum/vars 和 /etc/yum/version-groups.conf文件,而且假设这个新的打包文件为 yum.tar.bz2 ,此时我们可以通过 --exclude的帮忙。这个exclude就是不包含的意思,所以我们可以这样做
[root@localhost ~]# tar -jcv -f yum.tar.bz2 --exclude=/etc/yum/vars --exclude=/etc/yum/version-groups.conf /etc/yum/tar: 从成员名中删除开头的“/”/etc/yum//etc/yum/protected.d//etc/yum/protected.d/systemd.conf/etc/yum/pluginconf.d//etc/yum/pluginconf.d/fastestmirror.conf/etc/yum/pluginconf.d/langpacks.conf/etc/yum/fssnap.d/
以上就是Linux系统常见压缩命令和解压缩命令以及打包命令,可以根据需要进行选择
本文参考了《鸟哥Linux私房菜》这本书
来源地址:https://blog.csdn.net/qq_52089863/article/details/130018109
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341