2019-04-21 11:50:48 +08:00

57 lines
6.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<h1 id="xz">xz</h1>
<p>POSIX 平台开发具有高压缩率的工具。</p>
<h2 id="补充说明">补充说明</h2>
<p><strong>xz命令</strong> XZ Utils 是为 POSIX 平台开发具有高压缩率的工具。它使用 LZMA2 压缩算法,生成的压缩文件比 POSIX 平台传统使用的 gzip、bzip2 生成的压缩文件更小,而且解压缩速度也很快。最初 XZ Utils 的是基于 LZMA-SDK 开发,但是 LZMA-SDK 包含了一些 WINDOWS 平台的特性,所以 XZ Utils 为以适应 POSIX 平台作了大幅的修改。XZ Utils 的出现也是为了取代 POSIX 系统中旧的 LZMA Utils。</p>
<h3 id="语法">语法</h3>
<pre><code class="language-bash">xz(选项)(参数)
xz [OPTION]... [FILE]...</code></pre>
<h3 id="选项">选项</h3>
<div class="sourceCode" id="cb2"><pre><code class="language-bash"><a class="sourceLine" id="cb2-1" data-line-number="1"><span class="ex">-z</span>, --compress 强制压缩</a>
<a class="sourceLine" id="cb2-2" data-line-number="2"><span class="ex">-d</span>, --decompress, --uncompress</a>
<a class="sourceLine" id="cb2-3" data-line-number="3"> <span class="ex">force</span> decompression</a>
<a class="sourceLine" id="cb2-4" data-line-number="4"><span class="ex">-t</span>, --test 测试压缩文件的完整性</a>
<a class="sourceLine" id="cb2-5" data-line-number="5"><span class="ex">-l</span>, --list 列出有关.xz文件的信息</a>
<a class="sourceLine" id="cb2-6" data-line-number="6"><span class="ex">-k</span>, --keep 保留(不要删除)输入文件</a>
<a class="sourceLine" id="cb2-7" data-line-number="7"><span class="ex">-f</span>, --force 强制覆盖输出文件和(解)压缩链接</a>
<a class="sourceLine" id="cb2-8" data-line-number="8"><span class="ex">-c</span>, --stdout, --to-stdout</a>
<a class="sourceLine" id="cb2-9" data-line-number="9"> 写入标准输出,不要删除输入文件</a>
<a class="sourceLine" id="cb2-10" data-line-number="10"><span class="ex">-0</span> ... -9 压缩预设<span class="kw">;</span> 默认为<span class="ex">6</span><span class="kw">;</span> 取压缩机<span class="ex">*</span>和*</a>
<a class="sourceLine" id="cb2-11" data-line-number="11"> 使用<span class="ex">7-9</span>之前解压缩内存使用量考虑在内!</a>
<a class="sourceLine" id="cb2-12" data-line-number="12"><span class="ex">-e</span>, --extreme 尝试通过使用更多的CPU时间来提高压缩比<span class="kw">;</span></a>
<a class="sourceLine" id="cb2-13" data-line-number="13"> 要求不影响解压缩存储器</a>
<a class="sourceLine" id="cb2-14" data-line-number="14"><span class="ex">-T</span>, --threads=NUM 最多使用NUM个线程<span class="kw">;</span> 默认值为<span class="ex">1</span><span class="kw">;</span> <span class="kw">set</span> <span class="ex">to</span> 0</a>
<a class="sourceLine" id="cb2-15" data-line-number="15"> 设置为<span class="ex">0</span>,使用与处理器内核一样多的线程</a>
<a class="sourceLine" id="cb2-16" data-line-number="16"><span class="ex">-q</span>, --quiet 抑制警告<span class="kw">;</span> 指定两次以抑制错误</a>
<a class="sourceLine" id="cb2-17" data-line-number="17"><span class="ex">-v</span>, --verbose 冗长<span class="kw">;</span> 指定两次更详细</a>
<a class="sourceLine" id="cb2-18" data-line-number="18"><span class="ex">-h</span>, --help 显示这个简洁的帮助并退出</a>
<a class="sourceLine" id="cb2-19" data-line-number="19"><span class="ex">-H</span>, --long-help 显示更多帮助(还列出了高级选项)</a>
<a class="sourceLine" id="cb2-20" data-line-number="20"><span class="ex">-V</span>, --version 显示版本号并退出</a></code></pre></div>
<h3 id="参数">参数</h3>
<ul>
<li>源文件:指定连接的源文件。</li>
<li>目标文件:指定源文件的目标连接文件。</li>
</ul>
<h3 id="实例">实例</h3>
<p>压缩一个文件 test.txt压缩成功后生成 test.txt.xz, 原文件会被删除。</p>
<div class="sourceCode" id="cb3"><pre><code class="language-bash"><a class="sourceLine" id="cb3-1" data-line-number="1">$ <span class="fu">xz</span> test.txt</a>
<a class="sourceLine" id="cb3-2" data-line-number="2">$ <span class="fu">ls</span> test.txt*</a>
<a class="sourceLine" id="cb3-3" data-line-number="3"></a>
<a class="sourceLine" id="cb3-4" data-line-number="4"><span class="ex">test.txt.xz</span></a></code></pre></div>
<p>解压 test.txt.xz 文件,并使用参数 -k 保持原文件不被删除</p>
<div class="sourceCode" id="cb4"><pre><code class="language-bash"><a class="sourceLine" id="cb4-1" data-line-number="1">$ <span class="fu">xz</span> -d -k test.txt.xz</a>
<a class="sourceLine" id="cb4-2" data-line-number="2">$ <span class="fu">ls</span> test.txt*</a>
<a class="sourceLine" id="cb4-3" data-line-number="3"></a>
<a class="sourceLine" id="cb4-4" data-line-number="4"><span class="ex">test.txt.xz</span> test.txt</a></code></pre></div>
<p>使用参数 -l 显示 .xz 文件的基本信息。基本信息包括压缩率、数据完整性验证方式等。也可以和参数 -v 或 -vv 配合显示更详尽的信息。</p>
<div class="sourceCode" id="cb5"><pre><code class="language-bash"><a class="sourceLine" id="cb5-1" data-line-number="1"><span class="fu">xz</span> -l index.txt.xz</a>
<a class="sourceLine" id="cb5-2" data-line-number="2"><span class="co"># Strms Blocks Compressed Uncompressed Ratio Check Filename</span></a>
<a class="sourceLine" id="cb5-3" data-line-number="3"><span class="co"># 1 1 768 B 1,240 B 0.619 CRC64 index.txt.</span></a></code></pre></div>
<p>使用参数 -0, -1, -2, … -6, … -9 或参数 fast, best 设定压缩率。xz 命令的默认为 -6 ,对于大多数系统来说,甚至是一些较旧的系统,-4 … -6 压缩率预设值都不错的表现。</p>
<pre><code class="language-bash">$ xz -k7 xz_pipe_decomp_mini.c
$ xz -k --fast xz_pipe_decomp_mini.c</code></pre>
<p>使用参数 -H 显示 xz 命令所有 options. 参数 -H 比使用参数 help 显示的内容更详细。</p>
<pre><code class="language-bash">$ xz -H | more</code></pre>
<p>借助 xargs 命令并行压缩多文件。下面的命令行可以将 /var/log 目录下所有的扩展名为 .log 的文件压缩。通过 xargs 命令同时运行多个 xz 进行压缩。</p>
<div class="sourceCode" id="cb8"><pre><code class="language-bash"><a class="sourceLine" id="cb8-1" data-line-number="1"><span class="co"># 运行此命令须有 root 权限。</span></a>
<a class="sourceLine" id="cb8-2" data-line-number="2"><span class="fu">find</span> /var/log -type f -iname <span class="st">&quot;*.log&quot;</span> -print0 <span class="kw">|</span> <span class="fu">xargs</span> -P4 -n16 xz -T1</a></code></pre></div>