归档与压缩
(重定向自 Tar)
传统的 Unix 归档和压缩工具根据 Unix 哲学 分离。
这些工具通常按顺序使用,首先创建归档文件,然后对其进行压缩。
当然,也有一些 同时执行这两项操作的工具,这些工具往往还提供加密、错误检测和恢复功能。
仅归档
名称 | 软件包 | 手册 | 描述 |
---|---|---|---|
GNU tar | tar | tar(1), info | 核心实用程序,用于操作无处不在的 tar 归档文件(tarball)。 |
libarchive | libarchive | bsdtar(1) bsdcpio(1) |
tar 和 cpio 的实现,也提供库。被 pacman 和 mkinitcpio 使用。 |
ar | binutils | ar(1) | tar 之前的传统 Unix 归档器。如今仅用于创建 静态库 文件。 |
GNU cpio | cpio | cpio(1). info | 通过 stdin/stdout 的文件归档器,支持 cpio 和 tar 格式。 |
提示: GNU 和 BSD tar 都自动为 bzip2、compress、gzip、lzip、lzma、lzop、zstd 和 xz 压缩归档文件执行解压缩委托。只有 BSD tar 本机支持 lz4(但 GNU tar 可以使用
--use-compress-program=lz4
/-Ilz4
实现等效功能)。在创建归档文件时,两者都支持 -a
开关,以根据文件扩展名自动通过正确的压缩程序过滤创建的归档文件。虽然 BSD tar 根据格式识别压缩格式,但 GNU tar 仅根据文件扩展名猜测。另请参见 #仅归档用法。
压缩工具
仅压缩
这些压缩程序实现它们自己的文件格式。
名称 | 软件包 | 手册 | 扩展名 | Tar 扩展名 | 描述 | 并行实现 |
---|---|---|---|---|---|---|
bzip2 | bzip2 | bzip2(1) | .bz2, .bz | .tbz2, .tbz | 使用 Burrows–Wheeler 算法。 | lbzip2, pbzip2 |
bzip3 | bzip3 | bzip3(1) | .bz3 | .tbz3 | 使用 Burrows–Wheeler 算法。 | |
gzip | gzip | gzip(1) | .gz, .z | .tgz, .taz | GNU zip,基于 DEFLATE 算法。 | pigz, bgzip(1) (属于 htslibAUR 的一部分), crabzAUR, python-rapidgzipAUR |
lrzip | lrzip | lrzip(1) | .lrz | rzip 的改进版本,使用多种算法。 | 默认情况下为多线程 | |
LZ4 | lz4 | lz4(1) | .lz4 | 用 C 编写,专注于压缩和解压缩速度。 | 默认情况下为多线程。有关替代方案,请参见 https://lz4.org/。 | |
lzip | lzip | lzip(1) | .lz | 使用 LZMA。 | plzipAUR | |
lzop | lzop | lzop(1) | .lzo | .tzo | 使用 LZO 库 (lzo)。 | |
xz | xz | xz(1) | .xz, .lzma | .txz, .tlz | 使用 LZMA2。GNU coreutils 和内核归档文件的默认设置。 | 默认情况下为多线程。替代方案是 pixz。 |
zstd | zstd | zstd(1) | .zst | 使用 Zstandard 算法。 | 为多线程 |
- 并行实现通过使用多个 CPU 核心来提高速度。
- Tar 扩展名指的是使用
tar
和压缩工具的压缩归档文件,例如.tzo
是.tar.lzo
。 - 另请参见 #仅压缩用法。
归档与压缩
名称 | 软件包 | 手册 | 扩展名 | 描述 |
---|---|---|---|---|
7-Zip | 7zip | 官方手册 | .7z | 具有高压缩率的文件归档器。 |
DAR | darAUR | dar(1) | .dar | 用于备份大型实时文件系统的归档器,处理硬链接、扩展属性、稀疏文件和 inode 类型。 |
tar | tar | tar(1), info | .tar.压缩类型 | tar 具有内置的压缩选项。请参阅 tar(1) § Compression_options。 |
RAR | rarAUR, unrar | rar(1) | .rar | 格式和 rar 实用程序都是专有的。 |
t2sz | t2szAUR | .tar.zst .tzst | C 语言 tar 归档实用程序,具有成员对齐的 zstd 压缩 | |
tarlz | tarlzAUR | tarlz(1) | .tar.lz .tlz | C++ 语言 tar 归档实用程序,具有成员对齐的 lzip 压缩 |
ZIP | zip, unzip | zip(1), unzip(1) | .zip | 在 Linux 世界之外被广泛使用。 |
Unarchiver | unarchiver | unar(1), lsar(1) | many | Mac 应用程序的命令行工具,支持 40 多种归档格式。 |
ZPAQ | zpaqAUR | zpaq(1) | .zpaq | 用 C++ 编写的高压缩率归档器,使用多种算法。 |
LHa | lhasa, lhaAUR | lha(1) | .lzh (在 Amiga 上: .lha) | LZH/LHA 归档器,支持 lh7 方法。 |
WinAce | unace | unace(1) | .ace | ACE 文件格式和归档工具都是专有的。 |
另请参见 #归档与压缩用法。
功能图表
上面的某些工具能够处理多种格式,从而减少了已安装软件包的数量。
解压缩
名称 | 文件 | 归档 | |||||||
---|---|---|---|---|---|---|---|---|---|
gzip | bzip2 | LZMA | xz | zstd | ZIP | RAR | 7z | CAB | |
gzip | 是 | 否 | 否 | 否 | 否 | 部分1 | 否 | 否 | 否 |
7zip | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
unarchiver | 是 | 是 | 是 | 是 | 否 | 是 | 是 | 是 | 是 |
zstd | 是 | 否 | 是 | 是 | 是 | 否 | 否 | 否 | 否 |
- gzip 的 gunzip 只能解压缩单成员 ZIP 文件。
用法比较
仅归档用法
名称 | 创建归档 | 提取归档 | 列出内容 |
---|---|---|---|
tar(1) | tar cfv archive.tar file1 file2 |
tar xfv archive.tar |
tar -tvf archive.tar
|
cpio(1) | ls file1 file2 | cpio -o > archive.cpio |
cpio -i -vd < archive.cpio |
cpio -t < archive.cpio
|
仅压缩用法
名称 | 压缩 | 解压缩 | 解压缩到 stdout |
---|---|---|---|
bzip2(1) | bzip2 file |
bzip2 -d file.bz2 |
bzcat file.bz2
|
gzip(1) | gzip file |
gzip -d file.gz |
zcat file.gz
|
lrzip(1) | lrzip file lrztar folder |
lrzip -d file.lrz lrztar -d folder.tar.lrz |
lrzcat file.lrz
|
lz4(1) | lz4 file |
lz4 file.lz4 |
lz4cat file.lz4
|
xz(1) | xz file |
xz -d file.xz |
xzcat file.xz
|
zstd(1) | zstd file |
zstd -d file.zst |
zstdcat file.zst
|
归档与压缩用法
名称 | 压缩 | 解压缩 | 解压缩到 stdout | 列出内容 |
---|---|---|---|---|
7z | 7z a archive.7z file1 file2 |
7z x archive.7z |
7z e -so archive.7z file1 |
7z l archive.7z
|
dar(1) | dar -c archive -g file1 -g file2 |
dar -x archive |
dar -l archive
| |
tar(1) | tar acvf archive.format file1 file2 |
tar xfv archive.format |
tar xfvO archive.format |
tar tvf archive.format
|
rar(1) | rar a archive.rar file1 file2 |
rar x archive.rar |
rar p -inul archive.rar file1 |
rar l archive.rar
|
zip(1), unzip(1) | zip archive.zip file1 file2 |
unzip archive.zip |
unzip -p archive.zip file1 |
unzip -l archive.zip
|
lha(1) | lha ao7 archive.lzh file1 file2 |
lha x archive.lzh |
最小化:lha l archive.lzh 详细: lha v archive.lzh |
便捷工具
- atool — 用于管理各种类型的归档文件的脚本。
- dtrx — 一种智能归档提取工具。
- J7Z — 用于 Linux 的 Java GUI,旨在简化数据压缩和备份。它可以创建 7z、BZip2、Zip、GZip、Tar 归档文件。
- http://j7z.xavion.name || j7zAUR
- ouch — 一个命令行实用程序,用于轻松压缩和解压缩文件和目录
- python-unp — 可以轻松解包归档文件的命令行工具。
- unp — 用于解包各种归档格式的脚本。
- unpack — 用于处理多种归档格式的包装脚本。
- patool — 允许创建、提取、测试、列出、比较、搜索和重新打包各种归档类型。
确定归档格式
要提取归档文件,需要确定其文件格式。如果文件已正确命名,您可以从文件扩展名推断其格式。
深奥、罕见或已弃用的工具
名称 | 软件包 | 扩展名 | 描述 |
---|---|---|---|
ARC | arcAUR | .arc, .ark | 在拨号 BBS 的早期非常流行。已被 ZIP 取代。 |
ARJ | arj | .arj | 1990 年代中期在 DOS/Windows 上使用的归档器。这是一个开源克隆。 |
Cabinet | cabextract, unshield | .cab, .exe | Windows 中的各种安装技术都使用 CAB 格式。 |
compress | ncompress | .Z | 事实上的标准 UNIX 压缩实用程序,在 gzip 成为主流之前,成功取代了基于 Huffman 的 pack(1)。 |
Inno Setup | innoextract | .exe | 由 Inno Setup 创建的安装程序。 |
PAR2 | par2cmdline | .par2 | 用于提高数据完整性的奇偶校验归档器。另请参见 Parchive。 |
shar | sharutils | .shar | 创建作为有效 shell 脚本的自解压归档文件。 |
Zoo | zooAUR | .zoo | 在 PKZIP 流行之前,主要在 OpenVMS 操作系统上流行。 |
文件系统压缩
一些 文件系统 支持对文件数据进行即时压缩
设备映射器压缩
正在进行将开源 VDO 项目(在 Linux 内核项目中集成)主线化的工作,该项目提供重复数据删除和压缩设备映射器层,以提高存储效率。以下软件包可用
- vdo — 用于管理 VDO 卷的用户空间工具
- kvdo — 一对内核模块,提供重复数据删除和/或压缩块存储池
- https://github.com/dm-vdo/kvdo || kvdo-dkmsAUR[链接失效:软件包未找到]
压缩库
- Brotli — 使用 LZ77 算法、Huffman 编码和二阶上下文建模的数据流压缩算法。
- libzip — 提供 ZIP 文件的创建和提取。KDE 和 Deepin 使用它来代替 zip/unzip 工具。
- zlib — 实现了 gzip 和 PKZIP 中使用的 deflate 压缩方法的压缩库。
- Zopfli — 来自 Google 的高压缩率文件压缩器,使用名为 zopfli 的 deflate 兼容算法。
故障排除
提取时文件名乱码
参见 字符编码#故障排除。