Linux tar.gz、tar、bz2、zip 等解压缩、压缩命令详解
Linux 常用的压缩与解压缩命令有:tar、gzip、gunzip、bzip2、bunzip2、compress 、uncompress、 zip、 unzip、rar、unrar 等。
1. 概览
Linux下常见的压缩包格式有5种:
zip
tar.gz
tar.bz2
tar.xz
tar.Z
tar是打包格式,来源于最初打包程序被设计的目的:将文件备份到磁带上(tape archive)。tar命令本身只有打包作用,并不会进行压缩。
**tar.**后的内容指的是压缩方式,常见的压缩方式有:
- gz:gzip格式(GUNZip)
- bz2:bzip2格式(basic leucine-zipper 2)
2. 对目录(文件夹)进行压缩/解压
不管使用何种压缩方法,都必须首先对目录进行打包操作,因此需要使用tar。需要说明的是,可能是由于tar 命令更多地受到古老的 UNIX 风格影响, 以下tar 命令中的连接符 - 不是必须的,可以省略。
压缩方式以gzip为例(如使用bz2,只需把参数中的g替换成j即可。)
2.1 tar相关参数
主选项:
- -c: create,建立压缩档案
- -x:extract,从文件中提取(即解压)
- -t:list,查看目标tar包中目录和文件列表
- -r:append,向压缩归档文件末尾追加文件
- -u:update,更新原压缩包中的文件
注意:以上5个命令是互斥的,使用了其中1个便不能再同时使用其他的4个命令。
辅助选项:
- -f:file,使用档案文件或设备,这个选项在如今通常是必选的
- -m:modification time,把所有文件的修改时间设定为现在
- -v:verbose,在压缩或解压缩过程中显示正在处理的文件名
- -w:interaction,进行每一步都需要确认
- -N: newer,比后面接的日期更新的文件才会被打包
- -p:preserve-permissions,保留压缩包内所有文件的属性、权限
- -z:tar.gz,用gzip来压缩或解压
- -Z:tar.Z,用compress来压缩或解压
- -j:tar.bz2,用bzip2来压缩或解压
- -J:tar.xz,用xz来压缩或解压
需要使用多个参数时,除了f需要放在最后,其他不做要求。
2.2 实例
以目录 /myexample
为例。
1 | #压缩tar.gz |
其他一些可能常用的操作:
1 | #查阅myexample.tar.gz中有哪些文件 |
2.3 注意事项
1.关于tar的详细命令可以使用如下命令:
1 | tar --help |
2.事实上, 从1.15版本开始tar就可以自动识别压缩的格式,故不需人为区分压缩格式就能正确解压:
1 | tar -xvf filename.tar.gz |
3 对文件进行压缩/解压
以example.py
为例。
3.1 gzip zcat
- -c :stdout,以标准输出书写,并保留源文件
- -d :decompress,解压缩参数
- -t :test,检验一个压缩档的一致性,看看文件有无错误;
- -# :压缩等级,-1 最快,压缩比最差;-9 最慢,压缩比最好;默认为-6
1 | #压缩.gz |
3.2 bzip2, bzcat
- -c :stdout,以标准输出书写,并保留源文件
- -d :解压缩的参数
- -z :压缩的参数
- -# :压缩等级,-1 最快,压缩比最差;-9 最慢,压缩比最好;默认为-6
1 | #压缩bz2 |
4. zip压缩、unzip解压缩命令的使用详解
4.1 zip 压缩
zip 压缩主要参数
- -f 更新现有的文件
- -u 与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中
- -d 指定文件解压缩后所要存储的目录
- -m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中
- -r 将指定的目录下的所有子目录以及文件一起处理
- -j 不处理压缩文件中原有的目录路径
- -0 只存储,不压缩
- -l 显示压缩文件内所包含的文件
- -1 较快速度的压缩
- -9 较高质量的压缩
- -q 安静模式,在压缩的时候不显示指令的执行过程
- -v 执行时显示详细的信息
- -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换
- -z 仅显示压缩文件的备注文字
- -@ 从标准输入中读取名称,一个路径名称用一行
- -o 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间
- -x 指定不要处理.zip压缩文件中的哪些文件
- -i 只压缩符合条件的文件
- -F 尝试修复损坏的压缩文件
- -D 压缩文件内不建立目录名称
- -A 调整可执行的自动解压缩文件
- -J 删除可执行文件,留下一个普通的 zip 归档文件
- -T 检查备份文件内的每个文件是否正确无误
- -X 解压缩时同时回存文件原来的 UID/GID
- -y 直接保存符号连接,而非该连接所指向的文件,本参数仅在 UNIX 之类的系统下有效
- -e 加密
- -n 不压缩具有特定字尾字符串的文件
- -h2 显示更多帮助
zip 压缩实例
1 | #压缩zip |
4.2 unzip 解压缩
unzip 解压缩主要参数
- -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换
- -p 与 -c 参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
- -l 显示压缩文件内所包含的文件
- -f 更新现有的文件
- -t 检查压缩文件是否正确,但不解压
- -u 与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中
- -z 仅显示压缩文件的备注文字
- -v 执行时显示详细的信息。或查看压缩文件目录,但不解压
- -T 将压缩文件内的所有文件的最新变动时间设为解压缩时候的时间
- -x 指定不要处理 .zip 压缩文件中的哪些文件
- -d 指定文件解压缩后所要存储的目录
- -n 解压缩时不要覆盖原有的文件
- -q 安静模式,执行时不显示任何信息
- -o 不必先询问用户,unzip 执行后覆盖原有文件
- -a 对文本文件进行必要的字符转换
- -j 不处理压缩文件中原有的目录路径
- -aa 把所有的文件目录当作文本处理
- -U use escapes for all non-ASCII Unicode
- -UU 忽略 Unicode 编码字符
- -C 压缩文件中的文件名称区分大小写
- -L 将压缩文件中的全部文件名改为小写
- -X 解压缩时同时回存文件原来的 UID/GID
- -V 保留 VMS 的文件版本信息
- -K 保留文件的 setuid/setgid/tacky 属性
- -M 将输出结果送到 more 程序处理
- -O 指定字符编码为 DOS,Windows 和 OS/2
- -I 指定字符编码为 UNIX
unzip 解压缩实例
1 | #解压zip |
https://www.jianshu.com/p/1ea9920beecc
https://www.jb51.net/article/138120.htm
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 月星塘!