Linux 打包压缩 tar、gzip、bzip2、xz、zip、unzip 使用说明
gzip
gzip 是为了取代 compress 并提供更好的压缩比,zcat/zmore/zless 用来查看压缩文件
XML/HTML代码
- -c :将压缩的数据输出到屏幕上,可通过数据流重导向来处理;
- -d :解压缩的参数;
- -t :可以用来检验一个压缩文件的一致性~看看文件有无错误;
- -v :可以显示出原文件/压缩文件的压缩比等信息;
- -# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6
XML/HTML代码
- gzip glibc #不保留老文件
- gzip glibc -c > glibc.gz #保留老文件
- gzip -d glibc.gz #解压缩不保留包文件
- gzip -dc glibc.gz > /root/glibc #保留老文件并指定目录
- cat file1 file2 | gzip > foo.gz #压缩多个文件
- gzip -cd old.gz | gzip > new.gz #重新压缩
bzip2
bzip2 比 gzip 提供更好的压缩比,bzcat/bzmore/bzless/bzgrep 用来查看压缩文件
XML/HTML代码
- -c :将压缩的过程产生的数据输出到屏幕上!
- -d :解压缩的参数
- -k :保留原始文件,而不会删除原始的文件喔!
- -z :压缩的参数(默认值,可以不加)
- -v :可以显示出原文件/压缩文件的压缩比等信息;
- -# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!
XML/HTML代码
- bzip2 glibc
- bzip2 -k glibc #保留原来
- bzip2 -dc glibc.bz2 > /root/glibc #解压缩保留原来并重定向到文件
xz
虽然 bzip2 已经具有很棒的压缩比,不过显然某些自由软件开发者还不满足,因此后来还推出了 xz 这个压缩比更高的软件,但是这个压缩命令压缩速度偏慢,如果不是对压缩率有特别需求,使用 bzip2 就够了!这个软件的用法也跟 gzip/bzip2 几乎一模一样。
XML/HTML代码
- -d :解压缩!
- -t :测试压缩文件的完整性,看有没有错误
- -l :列出压缩文件的相关信息
- -k :保留原本的文件不删除~
- -c :同样的,就是将数据由屏幕上输出的意思!
- -# :同样的,也有较佳的压缩比的意思!
XML/HTML代码
- xz glibc
- xz -k glib c#保留原来
- xz -dc glibc.bz2 > /root/glibc #解压缩保留原来并重定向到文件
tar
配合上述压缩可以对文件目录进行打包并压缩
常用命令选项:
XML/HTML代码
- -c #打包
- -x #解包解压缩
- -t #查看
- -v #显示详细信息
- --exclude #排除
- -C #指定目录
- -T #从文件里获取需要打包的文件路径集合
3 种压缩格式,压缩率从低到高:
#一般选用 bzib2 足已,xz 压缩率高但是压缩速度偏慢
XML/HTML代码
- -z gzip
- -j bzib2
- -J xz
XML/HTML代码
- tar -cvf glibc.tar * #打包当前目录 (注意不会打包隐藏文件如.ssh)
XML/HTML代码
- tar -cvf glibc.tar * --exclude dir --exclude '*.png' --exclude '*.jpg'
XML/HTML代码
- tar -cvzf glibc.tar.gz glibc a.txt #打包并以 gzip 压缩 glibc,a.txt
- tar -cvjf glibc.tar.bz2 glibc a.txt #打包并以 bzib2 压缩 glibc,a.txt
- tar -cvJf glibc.tar.xz glibc b.txt #打包并以 xz 压缩 glibc,a.txt
#解包--解压缩到/root 目录
XML/HTML代码
- tar -zxvf glibc.tar.gz -C /root #gzip
- tar -jxvf glibc.tar.bz2 -C /root #bzib2
- tar -Jxvf glibc.tar.xz -C /root #xz
- tar -xvf glibc.tar.xx -C /root #自动判断
XML/HTML代码
- tar -tvf glibc.tar.bz2
#只查看第一层文件目录
XML/HTML代码
- tar --exclude="*/*" -tvf glibc.tar.bz2
XML/HTML代码
- tar -cvf /tmp/aaa.tar .[!.]*
XML/HTML代码
- tar -cvf /tmp/bbb.tar `ls -A`
XML/HTML代码
- find ./ -name "*.c" -o -name "*.h" | xargs tar -cvjf /tmp/xxx.tar.bz2
#内容太大还是不行 (打包出来不准确或者报 argument line too long),可以分两步,先存文件,然后打包文件里指定的路径
XML/HTML代码
- find ./ -name "*.c" -o -name "*.h" > out.txt
- tar -cvjf /tmp/xxx.tar.bz2 -T out.txt
zip
zip 命令为打包压缩命令,一般为了跟 windows 交互才会用的,不涉及 windows 推荐使用 tar 配合 gzip, bzip2, xz
#常用命令选项:
XML/HTML代码
- -d 从压缩文件内删除指定的文件。
- -m 把文件移到压缩文件中。
- -0-9 压缩比
- -r 递归处理,所有文件和子目录一并处理。
- -x<范本样式> 压缩时排除符合条件的文件。
- -c 交互为每一个文件设置注释
- -z 交互多行注释, 英文句话. 来表示结束
- -e 交互设置密码
- -P 直接设置密码
XML/HTML代码
- zip test.zip test.txt #添加压缩文件
- zip test.zip test1.txt #移动文件到压缩包
- zip -d test.zip test.txt #删除 test.txt
- zip -r test.zip ./* #压缩当前全部文件到 test.zip
- zip test2.zip test2/* #打包目录
- zip test3.zip tests/* -x tests/ln.log #压缩目录, 除了 tests/ln.log
- zip -r test.zip ./* -P 123 #设置密码 (明文设置密码不太安全)
- zip -r test.zip ./* -e #交互设置密码 (安全)
XML/HTML代码
- zip test.zip test.txt -6
XML/HTML代码
- -d 指定目录
- -n 解压时不覆盖
- -o 不询问直接覆盖
- -l 显示压缩文件内所包含的文件。
- -v 显示压缩文件内所包含的文件。
- -x 指定不要处理哪些文件。
- -P 解压缩密码
XML/HTML代码
- unzip -o test1.zip
XML/HTML代码
- unzip test1.zip -d /tmp/
XML/HTML代码
- unzip test1.zip inc abc
#查看 zip 包里所有文件:
XML/HTML代码
- unzip -l test.zip
XML/HTML代码
- unzip -l test.zip -x '*/*/*'