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