<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="Linux 打包压缩 tar、gzip、bzip2、xz、zip、unzip 使用说明">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2023-09-28 10:04<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
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 &gt; glibc.gz           #保留老文件

    gzip -d glibc.gz                   #解压缩不保留包文件

    gzip -dc glibc.gz &gt; /root/glibc    #保留老文件并指定目录

    cat file1 file2 | gzip &gt; foo.gz    #压缩多个文件

    gzip -cd old.gz | gzip &gt; 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 &gt; /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  &gt;  /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)




#将当前目录所有打包为 glibc.tar（过滤掉 dir 目录，扩展名为 png,jpg 的文件）




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=&quot;*/*&quot;  -tvf glibc.tar.bz2




#只打包隐藏文件 (文件名第一个是. 第二个是非.)




XML/HTML代码


    tar -cvf /tmp/aaa.tar .[!.]*




#打包全部（包含隐藏文件）ls -A 不会列出. .. 两个目录




XML/HTML代码


    tar -cvf /tmp/bbb.tar `ls -A`




#配合 find 有时候更容易，比如只打包.c .h 文件：




XML/HTML代码


    find ./ -name &quot;*.c&quot; -o -name &quot;*.h&quot; | xargs tar -cvjf /tmp/xxx.tar.bz2







#内容太大还是不行 (打包出来不准确或者报 argument line too long)，可以分两步，先存文件，然后打包文件里指定的路径




XML/HTML代码


    find ./ -name &quot;*.c&quot; -o -name &quot;*.h&quot; &gt; 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&lt;范本样式&gt;       压缩时排除符合条件的文件。

    -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           #交互设置密码 (安全)




#设置压缩比 -0 不压缩，-9 最高压缩，默认为-6




XML/HTML代码


    zip test.zip test.txt -6




 unzip




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




#只查看 zip 包里第 1 级文件或目录：




XML/HTML代码


    unzip -l test.zip -x '*/*/*' 




具体命令自己灵活使用，以上仅供参考。
</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
