linux压缩命令 linux 最快的压缩命令

linux压缩命令 linux 最快的压缩命令

linux 文件压缩命令
.Z 使用 compress 压缩文件.zip 使用 zip 压缩文件.gz 使用 gzip 压缩文件.bz2 使用 bzip2 压缩文件.xz 使用 xz 压缩文件.tar 使用 tar 工具打包归档,没有压缩文件.tar.gz 使用 tar 归档 在 gz 压缩文件.tar.bz2 使用 tar 归档在 bz2 压缩文件.tar.xz 使用 tar 归档在 xz 压缩文件

其中,compress 已经过时了,因为太老,个别版本的 linux 已经不支持了,linux 下的压缩工具还是以 gzip 和 bzip2 以及后加入的 xz 作为主力,但是由于这些工具,最早不能压缩目录,只能针对单一文件进行压缩,所以在日常使用中,他们都是配合着 tar 这个打包工具,由 tar 把目录中的很多文件打包成一个文件,再经由对应的工具进行压缩,所以我们会看上面的那些 tar.*的压缩包。好了我们先来学习下这些压缩工具如何使用

压缩文件的优点如下
文件更小,便于网络传输,效率更高;避免杂乱,可以减少文件个数,多个文件一起压缩;有些文件不能直接传输,比如安装程序,压缩后就可以传输了压缩工具使用
compress
-d   解压压缩文件-c   保留源文件,标准输出-b   指定压缩率 9-16 之间,值越大压缩效率越高-f   强制解压覆盖源文件-r   递归处理,将指定目录下的所有文件及子目录一并处理-v   压缩统计信息
# 压缩文件[root@ym test]# compress bigfile[root@ym test]# ls bigfile.Z bigfile.Z# -d 加压缩[root@ym test]# compress -d bigfile.Z[root@ym test]# ls1test.sh  2test.sh  bigfile  --delete  file  passwd  test.sh# -c 保留源文件[root@ym test]# compress -c bigfile > bigfile.Z[root@ym test]# ls bigfile*bigfile  bigfile.Z# -f 强制压缩文件不管是否存在[root@ym test]# ls bigfile*bigfile  bigfile.Z[root@ym test]# compress -f bigfile[root@ym test]# ls bigfile*bigfile.Z# -b 指定压缩率[root@ym test]# compress -d bigfile.Z# -r 递归压缩文件[root@ym tmp]# compress -r ym[root@ym tmp]# ls ym/test1test.sh.Z  2test.sh.Z  bigfile.Z  --delete.Z  file.Z  passwd.Z
uncompress
-d   解压压缩文件-c   保留源文件,标准输出-b   指定压缩率 9-16 之间,值越大压缩效率越高-f   强制解压覆盖源文件-r   递归处理,将指定目录下的所有文件及子目录一并处理-v   压缩统计信息
gzip
[root@ym ~]# gzip -hUsage: gzip [OPTION]... [FILE]...  -c, --stdout     保留源文件,把压缩后的文件输出到标准输出设备  -d, --decompress 解压缩文件  -f, --force      强制压缩文件,不管是什么类型的文件及是否存在  -h, --help       在线帮助  -k, --keep       保留源文件不删除文件  -l, --list       列出压缩文件的相关信息  -L, --license    显示版本与版权信息  -n, --no-name    压缩文件时,不保存原来的文件名称及时间戳记  -N, --name       压缩文件时,保存原来的文件名称及时间戳记  -q, --quiet      不显示警告信息  -r, --recursive  递归处理,将指定目录下的所有文件及子目录一并处理  -S, --suffix=SUF <压缩字尾字符串>或----suffix<压缩字尾字符串>  更改压缩字尾字符串  -t, --test        测试压缩文件是否正确无误  -v, --verbose     显示指令执行过程  -V, --version     显示版本信息  -1, --fast        此参数的效果和指定"-1"参数相同  -9, --best        此参数的效果和指定"-9"参数相同
[root@ym test]# tar -c passwd > passwd.gz # 将 passwd 内容通过>标准输出到 passwd.gz [root@ym test]# ls1test.sh  2test.sh  file.gz  passwd  passwd.gz  test.sh[root@ym test]# gzip -d file.gz  # -d 选项 将压缩文件 file.gz 解压成 file 文件[root@ym test]# ls1test.sh  2test.sh  file  passwd  passwd.gz  test.sh[root@ym test]# gzip -k file # -k 选项压缩文件同时保留源文件[root@ym test]# ls1test.sh  2test.sh  file  file.gz  passwd  passwd.gz  test.sh[root@ym test]# gzip -l file.gz # 查看压缩率信息         compressed        uncompressed  ratio uncompressed_name               1055                2660  61.2% file#使用 dd 命令生成一个 10M 的文件[root@ym test]# dd if=/dev/zero of=./bigfile bs=1M count=10 记录了 10+0 的读入记录了 10+0 的写出 10485760 bytes (10 MB, 10 MiB) copied, 0.00384293 s, 2.7 GB/s# 使用-9 压缩率最高[root@ym test]# gzip -9 bigfile[root@ym test]# gzip -l bigfile.gz          compressed        uncompressed  ratio uncompressed_name              10216            10485760  99.9% bigfile# 解压并使用压缩率最低重新压缩查看[root@ym test]# gzip -d bigfile.gz [root@ym test]# gzip -1 bigfile [root@ym test]# gzip -l bigfile.gz          compressed        uncompressed  ratio uncompressed_name              45780            10485760  99.6% bigfile [root@ym ~]# gzip -r test # 压缩目录下所有文件 [root@ym ~]# cd test[root@ym test]# ls1test.sh.gz  2test.sh.gz  bigfile.gz  file.gz  passwd.gz  test.sh.gz
zcat:不解压显示文件按内容
[root@ym test]# zcat 1test.sh.gz #!/bin/shseq 1 5 > /tmp/test.log#exec < /tmp/test.logcat /tmp/test.logwhile read linedo    echo $line    doneecho "ok"
bzip2
[root@ym ~]# bzip2 -h   -h --help           打印帮助信息   -d --decompress     强制解压文件   -z --compress       强制压缩文件   -k --keep           保留源文件不删除文件   -f --force          覆盖输出文件   -t --test           测试压缩文件   -c --stdout         输出到标准输出   -q --quiet          不显示警告信息   -v --verbose        显示指令执行过程   -L --license        显示版本   -V --version        显示版本信息   -s --small          使用最小内存   --fast              -1 快速压缩,压缩比例最低   --best              -9 压缩比例最高,压缩速度慢
[root@ym test]# bzip2 -z file # 压缩文件[root@ym test]# ls1test.sh  2test.sh  bigfile  file.bz2  passwd  test.sh[root@ym test]# bzip2 -d file.bz2 #加压文件[root@ym test]# bzip2 -k file # 保留源文件并压缩[root@ym test]# ls1test.sh  2test.sh  bigfile  file  file.bz2  passwd  test.sh# 使用 -f 压缩文件会覆盖目录下同名的文件[root@ym test2]# lsfile  file.bz2[root@ym test2]# bzip2 -f file[root@ym test2]# lsfile.bz2# -c 使用管道符重定向到一个文件[root@ym test2]# bzip2 -c file > file.bz2[root@ym test2]# lsfile  file.bz2
bzcat:不解压显示文件内容
[root@ym test2]# bzcat file.bz2 hello shellhello python
xz
[root@ym ~]# xz --helpUsage: xz [OPTION]... [FILE]...  -z, --compress      压缩文件  -d, --decompress    解压文件  -t, --test          测试压缩文件  -l, --list          列出信息关于 xz 文件  -k, --keep          保留原文不删除  -f, --force         覆盖解压  -c, --stdout        将信息输出  -0 ... -9           指定压缩级别                       -e, --extreme       使用大量 CPU 快速压缩                      -T, --threads=NUM   使用多线程压缩                      -q, --quiet         不显示警告信息  -v, --verbose       显示执行过程  -h, --help          查看帮助  -H, --long-help     更详细帮助信息  -V, --version       像是版本信息
[root@ym test2]# xz -z file # -z 压缩文件 file 位 file.xz[root@ym test2]# lsfile.bz2  file.xz# -d 解压 file.xz 位 file[root@ym test2]# xz -d file.xz [root@ym test2]# lsfile  file.bz2# -f 覆盖源文件压缩[root@ym test2]# xz -f file[root@ym test2]# lsfile.bz2  file.xz# -l 显示压缩文件内容[root@ym test2]# xz -l file.xzStrms  Blocks   Compressed Uncompressed  Ratio  Check   Filename    1       1         84 B         26 B  3.231  CRC64   file.xz# -e 会消耗大量 cpu 压缩文件[root@ym test2]# xz -e file[root@ym test2]# lsfile.bz2.xz  file.xz# -T 指定使用的线程数解压[root@ym test2]# xz -d file.xz[root@ym test2]# xz -T 4 file[root@ym test2]# lsfile.bz2.xz  file.xz# -C 压缩文件[root@ym test2]# xz -d file.xz[root@ym test2]# xz -c file > file.xz[root@ym test2]# lsfile  file.bz2.xz  file.xz[root@ym test2]# xz -l file.xzStrms  Blocks   Compressed Uncompressed  Ratio  Check   Filename    1       1         84 B         26 B  3.231  CRC64   file.xz
xzcat:不显示解压的前提下查看文件内容
[root@ym test2]# xzcat file.xzhello shellhello python
zip
-q:不显示执行过程-v:显示执行过程-r:递归处理,将指定目录下的所有文件和子目录一并处理-d:从压缩文件中删除指定文件
[root@ym test2]# zip file.zip file  adding: file (deflated 12%)[root@ym test2]# lsfile  file.bz2.xz  file.xz  file.zip# -q 不显示压缩过程[root@ym test2]# zip -q file1.zip file[root@ym test2]# lsfile  file1.zip  file.bz2.xz  file.xz  file.zip# -r 递归压缩目录问价 zip -r test test.zipzip error: Nothing to do! (try: zip -r test . -i test.zip)[root@ym ~]# zip -r abc.zip test  adding: test/ (stored 0%)  adding: test/1test.sh (deflated 29%)  adding: test/2test.sh (deflated 31%)  adding: test/bigfile (deflated 100%)  adding: test/passwd (deflated 61%)  adding: test/test.sh (deflated 14%)  adding: test/file (deflated 61%)  adding: test/file.bz2 (stored 0%)# -v 显示压缩过程[root@ym test2]# zip -rv test.zip test  adding: test/ (in=0) (out=0) (stored 0%)  adding: test/1test.sh (in=122) (out=87) (deflated 29%)  adding: test/2test.sh (in=203) (out=141) (deflated 31%)  adding: test/bigfile .    (in=10485760) (out=10190) (deflated 100%)  adding: test/file (in=2660) (out=1032) (deflated 61%)  adding: test/passwd   (in=2660) (out=1032) (deflated 61%)  adding: test/test.sh  (in=37) (out=32) (deflated 14%)total bytes=10491442, compressed=12514 -> 100% savings
unzip
-c:将解压缩的结果显示到屏幕上,并对字符做适当的转换-d:指定解压路径-l:显示压缩文件内所包含的文件-v:执行时显示详细的信息-q:不显示解压过程
# -c 显示解压内容到屏幕,并不解压文件按[root@ym test2]# unzip -c test.zipArchive:  test.zip extracting: test/                     inflating: test/1test.sh           #!/bin/shseq 1 5 > /tmp/test.log#exec < /tmp/test.logcat /tmp/test.logwhile read linedo    echo $line    doneecho "ok"........省略# -d 指定解压路径[root@ym test2]# unzip test.zip -d /tmp/Archive:  test.zip   creating: /tmp/test/  inflating: /tmp/test/1test.sh        inflating: /tmp/test/2test.sh        inflating: /tmp/test/bigfile         inflating: /tmp/test/file            inflating: /tmp/test/passwd          inflating: /tmp/test/test.sh# -l 显示解压信息,并不解压文件[root@ym test2]# unzip -l test.zipArchive:  test.zip  Length      Date    Time    Name---------  ---------- -----   ----        0  07-08-2022 21:10   test/      122  07-04-2022 00:11   test/1test.sh      203  07-04-2022 00:17   test/2test.sh 10485760  07-08-2022 19:40   test/bigfile     2660  07-08-2022 19:30   test/file     2660  07-08-2022 18:55   test/passwd       37  07-08-2022 18:59   test/test.sh---------                     ------- 10491442                     7 files[root@ym test2]# unzip -q test.zip
tar
[root@ym test2]# tar --helptar [选项...] [FILE]...-c: 创建归档文件-f:使用归档文件-z: 压缩成 gzip 格式的归档文件-j:压缩成 bzip2 格式归档文件-J:压缩 xz 格式归档文件-C:指定解压文件的位置-r: 添加文件到归档末尾-u: --update 仅追加比归档中副本更新的文件-t: 列出存档中文件的目录-k: 保留源文件-x: 解压归档文件-P: 保留路径符号-v: 解压详细信息--delete:从存档中删除
# 创建 tar 归档文件操作# -c 创建归档文件 -f 使用归档文件[root@ym test]# tar cf passwd.tar passwd[root@ym test]# ls1test.sh  2test.sh  bigfile  file  passwd  passwd.tar  test.sh# -rf 添加文件到归档文件中去[root@ym test]# tar rf passwd.tar file[root@ym test]# tar ft passwd.tarpasswdfile# 创建 tar.gz 归档压缩文件# cfz 创建归档压缩文件格式:.tar.gz[root@ym test]# tar cfz passwd.tar.gz passwd[root@ym test]# ls1test.sh  2test.sh  bigfile  file  passwd  passwd.tar  passwd.tar.gz  test.sh# cfj 创建归档压缩文件格式:.tar.bz[root@ym test]# tar cfj passwd.tar.bz passwd[root@ym test]# ls1test.sh  bigfile  passwd      passwd.tar.bz  test.sh2test.sh  file     passwd.tar  passwd.tar.gz# cfx 创建归档压缩文件:tar.xz[root@ym test]# tar cfJ passwd.tar.xz passwd[root@ym test]# ls passwd.tar.xzpasswd.tar.xz# 解压归档文件并指定保存位置[root@ym test]# tar xfz passwd.tar.gz -C /tmp/[root@ym test]# tar xfj passwd.tar.bz -C /tmp/[root@ym test]# tar xfJ passwd.tar.xz -C /tmp/# --delete 从归档文件中删除指定文件[root@ym test]# tar --delete file -f passwd.tar[root@ym test]# tar tf passwd.tarpasswd# -P 保留归档中的文件路径(大写)[root@ym ~]# tar cfP test.tar /tmp/ym/test[root@ym a]# tar tfP test.tar /tmp/ym/test//tmp/ym/test/passwd.tar/tmp/ym/test/1test.sh/tmp/ym/test/2test.sh/tmp/ym/test/bigfile/tmp/ym/test/file/tmp/ym/test/passwd/tmp/ym/test/test.sh/tmp/ym/test/passwd.tar.xz/tmp/ym/test/passwd.tar.gz/tmp/ym/test/passwd.tar.bz/tmp/ym/test/passwd.gar.xz/tmp/ym/test/--delete