Linux上有很多解压缩文件的命令。其中最新和最有效的是xz,但他们都有节省磁盘空间和保存文件供以后使用的优点。在这篇文章中,我们比较了解压缩命令并指出了显著的区别。

1.tar

语法:

tar [options] [archive-file] [file or directory to be archived]
options:
-c:压缩
-x:解压
-f:创建具有给定文件名的压缩文档
-t:显示或列出压缩文件中的文件
-u:压缩并且添加到已有的压缩文件中
-v:显示详细信息
-A:连接压缩文件
-z:告诉tar命令使用gzip创建tar文件
-j:使用tbzip过滤tar压缩文件
-W:验证压缩文件
-r:在已经存在的.tar文件中更新或添加文件或目录archive-file:
归档文件是由一个或多个文件以及元数据组成的文件。归档文件用于将多个数据文件收集到一个文件中,
以便于移植和存储,或者简单的压缩文件以使用更少的存储空间。

tar命令并不是专门的压缩命令。它通常用于将多个文件拉入一个文件中,以便于传输到另一个系统或将这些文件作为一个相关组进行备份。它还提供压缩功能,这很有意义,并且可以添加z压缩选项来实现这一点。

  • 1.当使用z选项将压缩添加到tar命令中时,tar会使用gzip进行压缩。
    你可以使用tar来压缩单个文件,就像压缩一组文件一样简单,不过这并不比直接使用gzip有什么特别 的优势。要使用tar来完成此操作,只需使用tar cfz newtarfile filename命令来标识该文件,如下所示:

    tar cfz bigfile.tgz bigfilenew file     file to be compressedls -l bigfile*
    -rw-rw-r-- 1 shs shs 103270400 Apr 16 16:00 bigfile
    -rw-rw-r-- 1 shs shs 21270400 Apr 16 16:00 bigfile.tgz
    

    需注意文件大小的显著减小
    如果你愿意,你可以使用tar.gz扩展名,这可能会使文件的特征更明显,但大多数Linux用户认为tgz表示相同的意思–tar和gz的组合表示该文件是一个压缩的tar文件。压缩完成后,你将同时保留原始文件和压缩文件。

  • 2.要将多个文件收集在一起并使用一行命令生成tar ball,使用相同的语法但是指定所包含的文件是一个组而不是单个文件,举个例子:

    tar cfz   bin.tgz    bin/*new file    files to include
    
  • 3.使用选项-cvf创建未压缩的tar存档文件:此命令创建一个名为file.tar的tar文件,他是当前目录中所有.c文件的存档。

    tar cvf file.tar *.c
    
  • 4.使用选项-xvf从存档文件中提取文件:此命令从存档文件提取文件:

    tar xvf file.tar
    
  • 5.使用选项-z对tar归档文件进行gzip压缩:此命令创建一个名为file.tar.gz的tar文件,它是.c文件的归档文件

    tar cvzf file.tar.gz *.c
    
  • 6.使用选项-xvzf提取gzip tar归档文件*.tar.gz:此命令从tar归档文件file.tar.gz文件中提取文件。

    tar xvzf file.tar.gz
    
  • 7.在Linux中使用选项-j创建压缩的tar归档文件:此命令压缩并创建小于gzip大小的存档文件。压缩和解压缩都比gzip花费更多的时间。

    tar cvfj file.tar.tbz example.cpp
    

    输出:

    $tar cvfj file.tar.tbz example.cpp
    example.cpp
    $tar tvf file.tar.tbz
    -rwxrwxrwx root/root 94 2021-09-17 02:47 example.cpp
    
  • 8.在Linux中解压单个tar文件或指定目录:此命令将使用-C选项解压当前目录或指定目录中的文件。

    tar xvfj file.tar
    or
    tar xvfj file.tar -C path of file in directory
    
  • 9.在Linux中解压多个.tar、.tar.gz、.tar.tbz文件:此命令将从.tar、.tar.gz、.tar.tbz文件中提取或解压多个文件。例如,下面的命令将从存档文件中提取"fileA",“fileB”。

    tar xvf file.tar "fileA" "fileB"
    or
    tar zxvf file1.tar.gz "fileA" "fileB"
    or
    tar jxvf file2.tar.tbz "fileA" "fileB"
    
  • 10.检查Linux中现有.tar、.tar.gz、.tar.tbz文件的大小:下述命令将以KB显示存档文件的大小。

    tar czf file.tar | wc -c
    or
    tar czf file1.tar.gz | wc -c
    or
    tar czf file2.tar.tbz |wc -c
    
  • 11.更新Linux中现有的tar文件

    tar rvf file.tar *.c
    
  • 12.通过grep命令应用管道找我们要查找的内容:此命令从存档文件中列出grep中提到的文本或图像。

    tar tvf file.tar|grep "text to find"
    or
    tar tvf file.tar|grep "filename.file extension"
    
  • 13.我们可以传递文件名作为参数来搜索tar文件:此命令查看存档文件及其详细信息。

    tar tvf file.tar filename
    
  • 14.搜索png格式的图片

    tar tvf file.tar --wildcards '*.png'
    

    注意在上面的命令中,”*“用于代替文件名以获取该特定目录中存在的所有文件。

2.zip

ZIP是Unix的压缩和打包工具,每个文件存储在单个.zip文件中,扩展名为zip。

  • 1.语法:
zip [options] zipfile files_list
  • 2.创建一个zip 的语法
zip myfile.zip file.txt
  • 3.提取zip
unzip myfile.zip
  • 4.可选项-d:从zip存档中删除文件。创建zip文件后,可以使用-d选项从存档中删除文件。假设我们在当前目录中有以下文件:
    hello1.cpp
    hello2.cpp
    hello3.cpp
    hello4.cpp
zip -d myfile.zip hello4.cpp

上面代码从myfile.zip删除hello4.cpp

  • 5.-u选项:更新zip归档文件中的文件。此选项可用于更新指定的文件列表或向现有的zip文件添加新文件。只有当zip归档文件中的现有条目的修改时间比zip归档文件中已有的版本更晚时,才更新该条目。
zip -u filename.zip file.txt
zip -u myfile.zip hello5.cpp

从myfile.zip文件更新hello5.cpp,可以使用unzip命令恢复文件。

unzip myfile.zip
ls
hello1.cpp
hello2.cpp
hello3.cpp
hello4.cpp
hello5.cpp
  • 6.-m选项:删除压缩后的原始文件,这对于节省磁盘空间很有用,但删除所有输入文件有潜在风险。
zip -m filename.zip file.txt
zip -m myfile.zip *.cpp
  • 7.-r选项:要递归压缩目录,请在zip命令中使用-r选项,它将递归压缩目录中的文件。此选项可帮助压缩指定目录中存在的所有文件。
zip -r filename.zip directory_name

假设我们在docs目录下有以下文件:
unix.pdf
oracle.pdf
linux.pdf

Command:
zip -r mydir.zip docs
Output:
adding: docs/  //压缩目录
adding:docs/unix.pdf  //压缩第一个文件
adding:docs/oracle.pdf  //压缩第二个文件
adding:docs/linux.pdf  //压缩第三个文件
  • 8.-x选项:在创建zip时排除文件。假设正在压缩当前目录中的所有文件,并希望排除一些不需要的文件,可以使用-x选项排除这些不需要的文件。
zip -x filename.zip file_to_be_excluded
  • 9.-v选项:详细模式或打印诊断版本信息
zip -v filename.zip file1.txt

假设我们在当前目录下有以下文件:
hello1.cpp
hello2.cpp
hello3.cpp
hello4.cpp
hello5.cpp

Command
zip -v file1.zip *.c
Output:
adding hello1.cpp (in=0) (out=0) (stored 0%)
adding hello2.cpp (in=0) (out=0) (stored 0%)
adding hello3.cpp (in=0) (out=0) (stored 0%)
adding hello4.cpp (in=0) (out=0) (stored 0%)
total bytes=0, compressed=0 -> 0% savings

3.gzip

Gzip用于压缩文件。每个单独的文件被压缩成一个单独的文件。压缩文件由一个GNU zip头文件和压缩后的数据组成。
如果给定一个file作为参数,gzip将压缩该文件,添加一个.gz后缀,并删除原始文件。在没有参数的情况下,gzip压缩标准输入并将压缩文件写入标准输出。
Unix中Gzip和zip命令的区别以及何时使用哪种命令

  • Zip和Gzip是两种非常流行的压缩文件的方法,它们是为了节省空间,或者减少通过网络或互联网传输文件所需的时间。
    一般来说,在压缩方面,GZIP比ZIP要好得多,特别是在压缩大量文件时候。
  • GZIP的常见做法是在压缩之前将所有文件存档到一个tarball中。在ZIP文件中,单个文件被压缩,然后添加到存档中。
  • 当想从ZIP中提取单个文件时候,只需先提取它,然后解压缩即可。使用GZIP,需要先解压缩整个文件,然后才能从存档中提取所需的文件。
  • 从10GB存档中提取1MB文件时,肯定GZIP比ZIP需要更长的时间。
  • 由于GZIP中的压缩算法压缩一个大文件而不是多个小文件,因此它可以利用文件中的冗余进一步减小文件大小。
  • 如果你使用ZIP和GZIP归档和压缩10个相同的文件,则ZIP文件将比生成的GZIP文件大10倍以上。
    语法:
gzip [options] [filenames]
gzip mydoc.txt

该命令将创建一个名为mydoc.txt.gz的压缩文件并删除原始文件。
可选项

  • 1.-f:有时候无法压缩文件。也许你正在尝试压缩一个名为“myfile1”的文件,但已经有一个名为“myfile1.gz"的文件。在这种情况下,"gzip"命令通常不起作用。要强制"gzip"命令执行其操作,只需要使用-f选项:
gzip -f myfile1.txt

这将强制压缩名为myfile1.txt的文件,即使已经存在名为myfile1.txt.gz的文件。

  • 2.-k:默认情况下,当你使用gzip命令压缩文件时候,你最终会得到一个扩展名为.gz的新文件。如果想压缩文件并保留原始文件,则必须使用gzip命令的-k选项:
gzip -k mydoc.txt

上面的命令最终会生成一个名为mydoc.txt.gz和mydoc.txt的文件。

  • 3.-r选项:此选项可以压缩文件夹及其子文件夹中的每个文件。此选项不会创建名为foldername.gz的文件。相反,它遍历目录结构并压缩该文件夹结构中的每个文件。
gzip -r testfolder

这将压缩testfolder中存在的所有文件。

  • 4.[1-9]选项:它允许更改压缩级别。可以以不同方式压缩文件。例如,你可以选择较小的压缩,你也可以选择较大的压缩。
gzip -1 mydoc.txt  # 这将以最慢的速度获得最大的压缩
gzip -9 mydoc.txt  # 这将以最快的速度会的最小的压缩
  • 5.-v选项:此选项显示压缩或解压缩的每个文件的名称和减少百分比。
gzip -v mydoc.txt
# new.txt  18.2% -- replaced with new.txt.gz
  • 6.-d选项:此选项允许使用gzip命令解压文件
gzip -d mydoc.txt.gz

此命令将解压缩名为mydoc.txt.gz的压缩文件。
我们也可以使用gunzip来解压缩文件:

gunzip mydoc.txt.gz

4.bzip2

bzip2与gzip非常相似,但是用了不同的压缩算法。使用bzip2压缩的文件将以.bz2扩展名结尾。
就像我说的,bzip2的用法和gzip几乎一样。只需要将上述示例中的gzip替换为bzip2,将gunzip替换为bunzip2,将zcat替换为bzcat等等。

bzip2 mydoc.txt
# 如果不想替换原始文件,请使用-c标志并将输出写入新文件
bzip2 -c mydoc.txt > mydoc.txt.bz2
# 解压
bzip2 -d mydoc.txt.bz2
# or
bunzip2 mydoc.txt.bz2
# 要在不解压的情况下查看压缩文件的内容:
bunzip2 -c mydoc.txt.bz2
# or
bzcat mydoc.txt.bz2

参考目录

geeksforgeeks.org/gzip-command-linux

linux压缩和解压缩命令tar,zip,gzip相关推荐

  1. Linux文件的压缩和解压命令tar

    压缩文件扩展名 打包并压缩文件 tar的参数 语法:tar [参数] 压缩包名 一个或多被打包的文件 功能 作用 压缩一个或多个文件 -c 必须,创建一个压缩包 -v 可选,显示压缩的详细信息 -z ...

  2. Linux常用的压缩和解压命令gzip,gunzip,tar,zip, unzip和bzip2,bunzip2

    Linux常用的压缩和解压命令 1.压缩解压gzip和gunzip 特点: 压缩比例大概为6:1 该命令只能压缩文件,不能压缩目录 压缩或者解压后不保留源文件 压缩示例:gzip 需要压缩的文件 解压 ...

  3. Linux文件压缩和解压命令【gzip、gunzip、zip、unzip、tar】【详细总结】

    解压和压缩 gzip/gunzip gzip 压缩文件 gunzip 解压缩文件 zip/unzip zip 命令语法 命令选项 实例 unzip 语法: 命令选项 实例 tar 语法 实例 例一:将 ...

  4. Linux中的压缩和解压缩命令zip|tar

    一. zip 1. 使用zip压缩文件 若使用zip来将文件夹a压缩为a.zip,那么它的语法应该为 语法:zip -q -r [压缩文件名] [被压缩文件或文件夹] 示例:zip -q -r a.z ...

  5. linux为什么用tar压缩,linux下tar压缩和解压命令用法详解

    linux下tar压缩和解压命令用法详解 2017-03-25 14:06 分享人:老牛 将/usr/local/test目录下所有文件仅打包,不压缩到 /usr/local/auto_bak/目下 ...

  6. Linux压缩和解压缩命令汇总(tar命令汇总)

    linux 中压缩文件非常常见,以下为本人对Linux压缩和解压缩命令进行了简单汇总,具体如下: 第一:打包+解包 打包命令(注意打包文件大小并没有压缩) tar -cvf xxx.tar +要打包的 ...

  7. linux zip压缩包大小,Linux中巧用zip命令压缩和解压缩文件

    在Windows中,我们用得最多的解压缩软件就是WinRAR了,这个软件对我们实现解压缩非常方便.但是如果在Linux系统中,我们还可以尝试用命令来实现对文件的解压缩,这篇文章主要介绍在Linux中用 ...

  8. Linux常用命令: zip、unzip 压缩和解压缩命令

    Linux常用命令: zip.unzip 压缩和解压缩命令 zip的用法 基本用法是: zip [参数] [打包后的文件名] [打包的目录路径] 常用参数: -a 将文件转成ASCII模式 -F 尝试 ...

  9. Linux命令——压缩和解压缩

    Linux命令--压缩和解压缩 尽管文件后缀名在Linux中没什么用,但还是来看看: .gz:表示由gzip压缩工具压缩的文件 .bz2:表示由bzip2压缩工具压缩的文件 .tar:表示由tar打包 ...

最新文章

  1. NASM学习之Windows下编写16位程序
  2. 《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——Minimax策略...
  3. cmw500综合测试仪使用_高端示波器是德MSOX4154A示波器-产品使用操作说明书【二手示波器吧】...
  4. C# WinForm开发系列 - DataGridView
  5. 工业交换机的四种安装方式图解
  6. mysql identity sql,SQL Server的Identity字段使用/复制/重设
  7. 白帽子发现美军网站SQL注入漏洞,可获取敏感数据
  8. 【华为云技术分享】Entity Framework Core 捕获数据库变动
  9. 软件测试面试题(每日一刷)
  10. iOS-----------关于UDID
  11. windows 环境变量设置
  12. Internet 的50年口述历史七.摩登时代上
  13. 《iOS取证实战:调查、分析与移动安全》一3.6 iPhone操作系统
  14. linux中完全卸载oracle,Linux 完整卸载oracle和grid软件
  15. 注册登录后才可以下载的源码_专注爬虫:20个精心总结爬虫项目,爬虫技术这里强(附源码)...
  16. 经典sql语句 行专列 统计部门男女人数 统计员工入职时常 根据出生日期计算年龄
  17. Graham算法解决凸包问题
  18. 服务器规范名字与IP地址的转换
  19. 英雄联盟7月23日维修服务器,LOL7月23日更新维护结束时间 7月23日什么时候可以上线 LOL7月23日更新维护内容_蚕豆网新闻...
  20. 仅300员工却垄断全球,几亿一台还供不应求

热门文章

  1. HPUX 系统安全MC
  2. rtx3060和2070的区别 rtx3060和2070性能差距大吗
  3. Ubuntu连不上网时,怎么安装包
  4. FTP retrieveFile 失败遇到的一个小坑
  5. 无法找到来自源 mysql 的事件 id 100 的描述_更新到1709版本下会出现:无法找到来自源 nvlddmkm 的事件 ID 14 的描述 的问题...
  6. DeepID人脸识别算法之三代
  7. 道路曲折,J4105核显直通实验成功了
  8. 使用html+css实现一个静态页面(厦门旅游网站制作6个页面) 旅游网页设计制作 HTML5期末考核大作业,网站——美丽家乡。 学生旅行 游玩 主题住宿网页
  9. 我的世界黏土服务器怎么新注册,我的世界clay粘土服务器数字ip | 手游网游页游攻略大全...
  10. 当游戏直播也要授权的背后:利益之争让各路人马杀红眼