8.9 压缩和解压

zip

在使用 zip 压缩中文或非英文字符时出现乱码是正常现象,因为编码方式不同。一般国产操作系统(如 UOS、Ubuntu Kylin)通过打补丁解决了此问题。关于该补丁未提交到上游的原因,如有了解者可提交 PR。

安装 zip

  • 使用 pkg

# pkg install zip
  • 使用 ports

# cd /usr/ports/archivers/zip/
# make install clean

zip 压缩

$ zip test.zip test # 压缩成 zip 文件

zip 解压

zip 文件解压时,系统通常自带 unzip 工具,无需额外安装。

$ unzip test.zip # 解压 zip 文件到当前路径
$ unzip test.zip -d /home/ykla/test # 解压到指定路径,-d 即 directory,目录的意思

tar

基本系统自带 tar,不用安装。

tar 是“tape archive”(磁带归档)的缩写,最初用于在磁带上进行文件存储。

思考题

归档文件包是指压缩率为 0 的文件集合,即将多个文件或目录打包成单一文件以便存储。单纯使用 tar 只进行打包而不压缩。压缩的本质是通过算法减小文件占用的存储空间,而不是针对目录本身。因此,常见压缩软件通常先将目录归档为文件,然后再进行压缩。

如何理解归档与压缩的关系?

tar 压缩

tar 解压

  • x:Extract 解压的意思

  • v:verbose 输出详细信息模式

  • f:file 指定文件

  • Ccd 的意思,即指定路径

xz

基本系统自带 xzunxz,同样也不用安装。

xz 压缩

unxz 解压

7z

在 FreeBSD 操作系统中,7z 命令可通过安装 archivers/7-zip 包使用。

安装 7-zip

  • 使用 pkg:

  • 通过 Ports:

7z 压缩

-a 表示 add,将要压缩的文件添加到 test.7z。

7z 解压

-o 即 Output,指定输出路径。

警告

-o/home/ykla/下载/test-o 与路径之间没有空格,这并非拼写错误,而是 7z 命令的设计方式。如有意者可提交 PR 改进。

rar

rar 是 Windows 上常见的压缩工具。

安装 rar

  • 通过 pkg 安装:

  • 通过 Ports:

rar 压缩

-a 表示 add(添加),将文件添加到 archive.rar

rar 解压

zstd

基本系统内置 zstd,无需安装。参见 Add support for zstd-compressed user and kernel core dumps.

zstd 压缩

  • 使用 zstd 压缩单个文件

  • 使用 zstd 压缩文件夹

zstd 不直接支持压缩文件夹(参见 How can I compress a directory?),因此需要先将文件夹打包为 tar 文件。

思考题

zstd 为什么不支持压缩文件夹?有哪些可能性。

再将 test.tar 压缩成 test.tar.zst

zstd 解压

解压到当前路径

注意

这样解压出来的是 test.tar,还需要再使用 tar 解压一遍。

解压到指定路径

注意

这样解压出来的是 test.tar,还需要再使用 tar 解压一遍。

最后更新于

这有帮助吗?