Skip to content
← 返回文件与文本处理列表
文件与文本处理任务与配置

命令与脚本:压缩、归档与备份 · 创建和解开目录归档 ​

返回分篇目录

命令与脚本:压缩、归档与备份 ​

创建和解开目录归档 ​

目录打包从 tar、zip 或 7z 选择;7za、7zr 的格式支持不同,保留对应示例。已有压缩包再按格式选择解包器。

tar · 归档实用程序 ​

通常与压缩方法结合使用,例如 gzip 或 bzip2。 更多信息:https://www.gnu.org/software/tar/manual/tar.html。

  • 创建存档并将其写入文件:
bash
tar cf {{目标文件.tar}} {{路径/到/文件1 路径/到/文件2 ...}}
  • 创建一个 gzip 压缩文件并将其写入文件:
bash
tar czf {{目标文件.tar.gz}} {{路径/到/文件1 路径/到/文件2 ...}}
  • 使用相对路径从目录创建一个 gzip 压缩文件:
bash
tar czf {{目标文件.tar.gz}} {{[-C|--directory]}} {{路径/到/目录}} .
  • 详细地将(压缩的)存档文件提取到当前目录中:
bash
tar xvf {{源文件.tar.ext}}
  • 将(压缩的)存档文件解压缩到目标目录中:
bash
tar xf {{源文件.tar.ext}} {{[-C|--directory]}} {{目标目录}}
  • 创建压缩存档并将其写入文件,使用文件扩展名自动确定压缩程序:
bash
tar caf {{目标文件.tar.xz}} {{路径/到/文件1 路径/到/文件2 ...}}
  • 详细列出 tar 文件的内容:
bash
tar tvf {{源文件.tar}}
  • 从存档文件中提取与模式匹配的文件:
bash
tar xf {{源文件.tar}} --wildcards "{{*.html}}"

zip · 将文件打包并压缩(存档)为 zip 文件 ​

另请参阅:unzip。 更多信息:https://manned.org/zip。

  • 将文件/目录添加到指定存档中:
bash
zip {{[-r|--recurse-paths]}} {{路径/到/压缩文件.zip}} {{路径/到/文件或目录1 路径/到/文件或目录2 ...}}
  • 从指定存档中删除文件/目录:
bash
zip {{[-d|--delete]}} {{路径/到/压缩文件.zip}} {{路径/到/文件或目录1 路径/到/文件或目录2 ...}}
  • 存档文件/目录,排除指定的文件/目录:
bash
zip {{[-r|--recurse-paths]}} {{路径/到/压缩文件.zip}} {{路径/到/文件或目录1 路径/到/文件或目录2 ...}} {{[-x|--exclude]}} {{路径/到/排除的文件或目录}}
  • 以指定的压缩级别存档文件/目录(0 - 最低,9 - 最高):
bash
zip {{[-r|--recurse-paths]}} -{{0..9}} {{路径/到/压缩文件.zip}} {{路径/到/文件或目录1 路径/到/文件或目录2 ...}}
  • 创建一个加密的存档:
bash
zip {{[-re|--recurse-paths --encrypt]}} {{路径/到/压缩文件.zip}} {{路径/到/文件或目录1 路径/到/文件或目录2 ...}}
  • 将文件/目录存档为多段分割的 zip 存档(例如每部分 3 GB):
bash
zip {{[-rs|--recurse-paths --split-size]}} {{3g}} {{路径/到/压缩文件.zip}} {{路径/到/文件或目录1 路径/到/文件或目录2 ...}}
  • 列出指定 ZIP 的成员信息(zipinfo 说明见下方同名条目):
bash
zipinfo {{路径/到/压缩文件.zip}}

unzip · 从 Zip 压缩包中提取文件或目录 ​

另请参阅:zip。 更多信息:https://manned.org/unzip。

  • 将指定压缩包中的所有文件和目录提取到当前目录下:
bash
unzip {{路径/到/压缩文件.zip}}
  • 将压缩包中的所有文件和目录提取到指定目录下:
bash
unzip {{路径/到/压缩文件.zip}} -d {{路径/到/输出目录}}
  • 从压缩包中提取文件或目录到 stdout(标准输出),并附带文件名:
bash
unzip -c {{路径/到/压缩文件.zip}}
  • 使用支持 -O 扩展的 unzip 构建读取指定文件名编码;该选项非所有构建均支持。示例包含非 ASCII(例如中文或日文字符)命名的文件:
bash
unzip -O {{gbk}} {{路径/到/压缩文件.zip}}
  • 在不进行解压缩的情况下,列出指定压缩包中的内容:
bash
unzip -l {{路径/到/压缩文件}}.zip
  • 从指定压缩包中提取特定文件到当前目录(-j 去掉成员目录层级):
bash
unzip -j {{路径/到/压缩文件}}.zip {{路径/到/文件1 路径/到/文件2 ...}}

7z · 一个高压缩率的文件归档器 ​

更多信息:https://manned.org/7z。

  • 归档一个文件或目录:
bash
7z a {{归档文件.7z}} {{文件或目录}}
  • 对已存在的归档文件加密(包括文件名):
bash
7z a {{加密文件.7z}} -p{{密码}} -mhe=on {{归档文件.7z}}
  • 提取一个已存在的 7z 文件,并保持原来的目录结构:
bash
7z x {{归档文件.7z}}
  • 提取一个归档文件到指定的输出目录:
bash
7z x {{归档文件.7z}} -o{{输出目录}}
  • 提取一个归档文件到标准输出:
bash
7z x {{归档文件.7z}} -so
  • 使用指定的类型来归档文件:
bash
7z a -t{{7z|bzip2|gzip|lzip|tar|zip}} {{归档文件}} {{文件或目录}}
  • 列出一个归档文件的内容:
bash
7z l {{归档文件.7z}}
  • 设置压缩级别(数字越高表示压缩越多,但速度更慢):
bash
7z a {{归档文件.7z}} -mx={{0|1|3|5|7|9}} {{文件或目录}}

7za · 一个高压缩率的文件归档器 ​

类似于 7z,支持的文档类型更少但跨平台。 更多信息:https://manned.org/7za。

  • 归档一个文件或目录:
bash
7za a {{归档文件.7z}} {{文件或目录}}
  • 加密一个已存在的归档文件(包括文件名):
bash
7za a {{加密文件.7z}} -p{{密码}} -mhe={{on}} {{归档文件.7z}}
  • 提取一个已存在的 7z 文件,并保持原来的目录结构:
bash
7za x {{归档文件.7z}}
  • 提取一个归档文件到指定目录:
bash
7za x {{归档文件.7z}} -o{{输出目录}}
  • 提取一个归档文件到标准输出:
bash
7za x {{归档文件.7z}} -so
  • 使用指定的类型来归档文件:
bash
7za a -t{{7z|bzip2|gzip|lzip|tar|...}} {{归档文件.7z}} {{文件或目录}}
  • 列出一个归档文件的内容:
bash
7za l {{归档文件.7z}}
  • 设置压缩级别(数字越高表示压缩越多,但速度更慢):
bash
7za a {{归档文件.7z}} -mx={{0|1|3|5|7|9}} {{文件或目录}}

7zr · 一个高压缩率的文件归档器 ​

类似于 7z,只支持 7z 文件。 更多信息:https://manned.org/7zr。

  • 归档一个文件或目录:
bash
7zr a {{归档文件.7z}} {{文件或目录}}
  • 加密一个已存在的归档文件(包括文件名):
bash
7zr a {{加密文件.7z}} -p{{密码}} -mhe={{on}} {{归档文件.7z}}
  • 提取一个已存在的 7z 文件,并保持原来的目录结构:
bash
7zr x {{归档文件.7z}}
  • 提取一个归档文件到指定的输出目录:
bash
7zr x {{归档文件.7z}} -o{{输出目录}}
  • 提取一个归档文件到标准输出:
bash
7zr x {{归档文件.7z}} -so
  • 列出一个归档文件的内容:
bash
7zr l {{归档文件.7z}}
  • 设置压缩级别(数字越高表示压缩越多,但速度更慢):
bash
7zr a {{归档文件.7z}} -mx={{0|1|3|5|7|9}} {{文件或目录}}

unar · 从归档文件中提取内容 ​

更多信息:https://manned.org/unar。

  • 提取一个归档文件到当前目录:
bash
unar {{归档文件}}
  • 提取一个归档文件到指定目录:
bash
unar {{[-o|-output-directory]}} {{路径/到/目录}} {{归档文件}}
  • 如果要提取的文件已经存在,则总是覆盖:
bash
unar {{[-f|-force-overwrite]}} {{归档文件}}
  • 如果要提取的文件已经存在,则总是重命名:
bash
unar {{[-r|-force-rename]}} {{归档文件}}
  • 如果要提取的文件已经存在,则总是跳过:
bash
unar {{[-s|-force-skip]}} {{归档文件}}

unrar · 提取 RAR 压缩档案 ​

更多信息:https://manned.org/unrar。

  • 提取文件并保留原始目录结构:
bash
unrar x {{路径/到/压缩包.rar}}
  • 将文件提取到指定路径,并保留原始目录结构:
bash
unrar x {{路径/到/压缩包.rar}} {{路径/到/解压目录}}
  • 提取文件到当前目录,但不保留档案中的目录结构:
bash
unrar e {{路径/到/压缩包.rar}}
  • 测试档案内每个文件的完整性:
bash
unrar t {{路径/到/压缩包.rar}}
  • 列出档案内的文件并不解压:
bash
unrar l {{路径/到/压缩包.rar}}

unp · 解压任意归档文件 ​

需要安装相关的解压程序,例如 RAR 文件需要安装 unrar。 更多信息:https://manned.org/unp。

  • 解压一个归档文件:
bash
unp {{路径/到/归档文件.zip}}
  • 解压多个归档文件:
bash
unp {{路径/到/归档文件1.tar.gz}} {{路径/到/归档文件2.rar}}

zpaq · 增量日志式备份工具和归档程序 ​

更多信息:https://mattmahoney.net/dc/zpaqdoc.html。

  • 将文件或目录添加到新的或已有的归档中:
bash
zpaq {{[a|add]}} {{路径/到/归档.zpaq}} {{路径/到/文件或目录}}
  • 创建或添加到加密的归档:
bash
zpaq {{[a|add]}} -k{{密码}} {{路径/到/归档.zpaq}} {{路径/到/文件或目录}}
  • 解压文件的最新版本:
bash
zpaq {{[x|extract]}} {{路径/到/归档.zpaq}}
  • 列出归档内容:
bash
zpaq {{[l|list]}} {{路径/到/归档.zpaq}}
  • 设置压缩级别(级别越高,压缩率越高但速度越慢):
bash
zpaq {{[a|add]}} {{路径/到/归档.zpaq}} -m{{1|2|3|4|5}} {{路径/到/文件或目录}}
  • 从归档中解压不晚于指定日期的指定文件:
bash
zpaq {{[x|extract]}} {{路径/到/归档.zpaq}} {{归档/中/要/解压/的/路径}} -to {{路径/到/输出}} -until {{YYYY-MM-DD}}

继续阅读