最近改了以下 VPS 备份脚本,发现脚本中 tar 压缩部分参数有错,一直使用 .tar.xz 后缀,但是压缩参数却没有 J……找到一篇文章:linux 打包压缩 tar、gzip、bzip2、xz、zip、unzip,才改过来了。
「Linux 打包压缩 tar、gzip、bzip2、xz、zip、unzip 使用说明:https://0xo.net/426」下面把文章贴过来备忘:
gzip
gzip 是为了取代 compress 并提供更好的压缩比,zcat/zmore/zless 用来查看压缩文件
「Linux 打包压缩 tar、gzip、bzip2、xz、zip、unzip 使用说明:https://0xo.net/426」-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 最快!
使用示例:
「Linux 打包压缩 tar、gzip、bzip2、xz、zip、unzip 使用说明:https://0xo.net/426」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
配合上述压缩可以对文件目录进行打包并压缩
「Linux 打包压缩 tar、gzip、bzip2、xz、zip、unzip 使用说明:https://0xo.net/426」常用命令选项:
-c #打包
-x #解包解压缩
-t #查看
-v #显示详细信息
--exclude #排除
-C #指定目录
-T #从文件里获取需要打包的文件路径集合
3 种压缩格式,压缩率从低到高:
#一般选用 bzib2 足已,xz 压缩率高但是压缩速度偏慢
-z gzip
-j bzib2
-J xz
使用示例:
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
#只查看第一层文件目录
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 '*/*/*'
任何服务、机场均有跑路风险,大小机场也没有绝对好坏,请注意甄别防范!!备用节点参考:大哥云官网、万城专线官网、飞机云官网、搬瓦工JMS、极客云官网……解压及网盘密码 1024