tar - 一个归档工具
概要
传统用法
tar {A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo] [参数...]
UNIX 风格用法
tar -A [选项] -f 存档 存档...
tar -c [-f 存档] [选项] [文件...]
tar -d [-f 存档] [选项] [文件...]
tar -r [-f 存档] [选项] [文件...]
tar -t [-f 存档] [选项] [成员...]
tar -u [-f 存档] [选项] [文件...]
tar -x [-f 存档] [选项] [成员...]
GNU 风格用法
tar --catenate|--concatenate [选项] --file 存档 存档...
tar --create [--file 存档] [选项] [文件...]
tar --diff|--compare [--file 存档] [选项] [文件...]
tar --delete [--file 存档] [选项] [成员...]
tar --append [--file 存档] [选项] [文件...]
tar --list [--file 存档] [选项] [成员...]
tar --test-label [--file 存档] [选项] [标签...]
tar --update [--file 存档] [选项] [文件...]
tar --extract|--get [--file 存档] [选项] [成员...]
注意
本 man 页面是对 GNU tar 的简短描述。 有关详细讨论,包括示例 和使用建议,请参阅 GNU Tar 手册,该手册以 texinfo 格式提供。 如果 info 阅读器和 tar 文档已正确安装在您的系统上,则命令
info tar
应该可以访问完整的手册。
您还可以使用 emacs(1) 中的 info 模式查看手册,或者在以下网址找到各种格式的手册:
https://www.gnu.org/software/tar/manual
如果本 man 页面和 GNU Tar 手册之间存在任何差异,则后者应被视为具有权威性的来源。
描述
GNU tar 是一个归档程序,旨在将多个文件存储在一个文件中(一个归档), 并且可以操作这些归档。 归档可以是普通文件或设备(例如, 磁带驱动器,因此该程序被称为“tape archiver”),并且可以位于 本地或远程机器上。
选项样式
GNU tar 的选项可以使用三种不同的样式提供。 在传统样式中,第一个参数是一组选项字母,所有后续参数都提供需要这些选项的参数。 参数的读取顺序与选项字母的顺序相同。 任何在处理完所有选项后剩余的命令行词都将被视为非选项 参数:文件或归档成员名称。
例如,c 选项需要创建归档,v 选项请求详细操作,f 选项采用一个参数,该参数设置要操作的归档的名称。 以下命令以传统样式编写,指示 tar 将目录 /etc 中的所有文件存储到归档文件 etc.tar 中,并详细列出正在归档的文件:
tar cfv etc.tar /etc
在 UNIX 或短选项风格中,每个选项字母都以前缀单个破折号,就像其他命令行实用程序一样。如果一个选项需要参数,则该参数紧随其后,要么作为单独的命令行单词,要么紧跟在选项之后。但是,如果该选项需要可选参数,则该参数必须紧随选项字母之后,中间没有任何空格,例如 -g/tmp/snar.db。
可以把不需要参数的任意数量的选项组合在一起,放在单个破折号之后,例如 -vkp。一个需要参数的选项(无论是必需参数还是可选参数)都可以出现在这样的组合的末尾,例如 -vkpf a.tar。
上面的示例命令以短选项风格编写,如下所示:
tar -cvf etc.tar /etc
或者
tar -c -v -f etc.tar /etc
在 GNU 或长选项风格中,每个选项以两个破折号开头,并具有一个有意义的名称,该名称由小写字母和破折号组成。使用时,长选项可以缩写为它的首字母,前提是这样做不会产生歧义。长选项的参数可以通过以下两种方式提供:要么作为单独的命令行单词,紧随选项之后;要么通过等号分隔,中间没有空格。可选参数必须始终使用后一种方法。
以下是几种以这种风格编写示例命令的方法:
tar --create --file etc.tar --verbose /etc
或者(缩写一些选项):
tar --cre --file=etc.tar --verb /etc
所有三种风格的选项可以混合使用,尽管不建议与旧选项混合使用。
操作模式
下面的表中列出的选项告诉 GNU tar 要执行的操作。必须提供其中一个选项。非选项参数的含义取决于所请求的操作模式。
-A, --catenate, --concatenate
将存档附加到另一个存档的末尾。参数被视为要附加的存档名称。所有存档必须与它们所附加的存档具有相同的格式,否则,生成的存档可能无法与非 GNU 的 tar 实现一起使用。请注意,当给出多个存档时,除第一个存档之外的其他存档中的成员只有在使用 -i (--ignore-zeros) 选项时,才能在生成的存档中访问。
不能连接压缩的存档。
-c, --create
创建一个新的存档。参数提供要存档的文件的名称。目录以递归方式存档,除非给出了 --no-recursion 选项。
-d, --diff, --compare
查找存档和文件系统之间的差异。参数是可选的,并且指定要比较的存档成员。如果未提供,则假定为当前工作目录。
--delete
从存档中删除。参数提供要删除的存档成员的名称。 必须提供至少一个参数。
此选项不适用于压缩存档。没有与之等效的短选项。
-r, --append
将文件附加到存档的末尾。参数的含义与 -c (--create) 选项相同。
-t, --list
列出存档的内容。参数是可选的。如果提供,则它们指定要列出的存档成员的名称。
--test-label
测试存档卷标并退出。如果未使用参数,则它会打印卷标(如果有),并以状态 0 退出。如果提供一个或多个命令行参数,则 tar 会将卷标与每个参数进行比较。如果找到匹配项,则以代码 0 退出;否则,以代码 1 退出。除非与 -v (--verbose) 选项一起使用,否则不会显示任何输出。
此选项没有与之等效的短选项。
-u, --update
附加比存档中相应副本更新的文件。参数的含义与 -c 和 -r 选项相同。请注意,较新的文件不会替换其旧的存档副本,而是附加到存档的末尾。因此,生成的存档可以包含具有相同名称的多个成员,对应于同一文件的不同版本。
-x, --extract, --get
从存档中提取文件。参数是可选的。如果提供,则它们指定要提取的存档成员的名称。
--show-defaults
显示各种 tar 选项的内置默认值并退出。
-?, --help
显示简短的选项摘要并退出。
--usage
显示可用选项的列表并退出。
--version
打印程序版本和版权信息并退出。
选项
操作修饰符
--check-device
在创建增量存档时检查设备号(默认)。
-g, --listed-incremental=FILE
处理新的 GNU 格式增量备份。FILE 是快照文件的名称,tar 将在其中存储附加信息,这些信息用于确定自上一个增量转储以来哪些文件已更改,因此必须再次转储。如果创建存档时 FILE 不存在,则会创建它,并且所有文件都将添加到生成的存档中(级别 0 转储)。要创建非零级别 N 的增量存档,您需要上一个级别 N-1 创建的快照文件的副本,并将其用作 FILE。
在列出或提取时,不会检查 FILE 的实际内容,它仅由于语法要求而需要。因此,通常的做法是在其位置使用 /dev/null。
--hole-detection=METHOD
使用 METHOD 检测稀疏文件中的空洞。此选项意味着 --sparse。METHOD 的有效值是 seek 和 raw。默认值为 seek,并在不适用时回退到 raw。
-G, --incremental
处理旧的 GNU 格式增量备份。
--ignore-failed-read
不要因为无法读取的文件而以非零状态退出。
--level=NUMBER
为创建的增量列表存档设置转储级别。目前,只有 --level=0 才有意义:它指示 tar 在转储之前截断快照文件,从而强制执行级别 0 的转储。
-n, --seek
假定存档是可寻址的。通常,tar 会自动确定存档是否可以寻址。此选项用于在自动识别失败的情况下。它仅在打开存档以进行读取时生效(例如,使用 --list 或 --extract 选项)。
--no-check-device
在创建增量存档时,不要检查设备编号。
--no-seek
假定存档不可寻址。
--occurrence[=N]
仅处理存档中每个文件的第 N 次出现。此选项仅在与以下子命令之一一起使用时有效:--delete、--diff、--extract 或 --list,并且在通过命令行或通过 -T 选项提供文件列表时。默认 N 为 1。
--restrict
禁用某些可能有害选项的使用。
--sparse-version=MAJOR[.MINOR]
设置要使用的稀疏格式的版本。此选项意味着 --sparse。有效的参数值为 0.0、0.1 和 1.0。有关稀疏格式的详细讨论,请参阅 GNU Tar 手册,附录 D,“稀疏格式”。使用 info 阅读器,可以通过运行以下命令来访问它:info tar 'Sparse Formats'。
-S, --sparse
高效处理稀疏文件。文件系统中某些文件可能具有从未写入的段(通常是 DBM 等系统创建的数据库文件)。如果给定此选项,tar 会尝试在存档之前确定文件是否为稀疏文件,如果是,则通过不转储文件中未使用的部分来减小生成的存档大小。
覆盖控制
这些选项控制 tar 在提取文件时对磁盘上现有副本的操作。
-k, --keep-old-files
提取时不要替换现有文件。
--keep-newer-files
不要替换比存档副本更新的现有文件。
--keep-directory-symlink
提取时不要替换现有的目录符号链接。
--no-overwrite-dir
保留现有目录的元数据。
--one-top-level[=DIR]
将所有文件提取到 DIR 中,或者,如果不带参数使用,则提取到一个子目录中,该子目录的名称为存档的基本名称(减去 --auto-compress 可以识别的标准压缩后缀)。
--overwrite
提取时覆盖现有文件。
--overwrite-dir
覆盖现有目录的元数据(默认)。
--recursive-unlink
在提取目录之前,递归删除目录中的所有文件。
--remove-files
在将文件添加到存档后,从磁盘中删除文件。
--skip-old-files
提取时不要替换现有文件,而是静默地跳过它们。
-U, --unlink-first
在提取之前删除每个文件。
-W, --verify
在写入后验证归档文件。
输出流选择
--ignore-command-error
忽略子进程的退出代码。
--no-ignore-command-error
将子进程的非零退出代码视为错误(默认)。
-O, --to-stdout
将文件提取到标准输出。
--to-command=COMMAND
将提取的文件通过管道传输到 COMMAND。 参数是外部程序的路径名,可以选择性地带有命令行参数。 该程序将被调用,并且正在提取的文件的内容将通过其标准输入提供给它。 还会通过以下环境变量提供其他数据:
TAR_FILETYPE
文件类型。 这是一个单字符,具有以下含义:
f 普通文件
d 目录
l 符号链接
h 硬链接
b 块设备
c 字符设备
当前仅支持普通文件。
TAR_MODE
文件模式,一个八进制数字。
TAR_FILENAME
文件的名称。
TAR_REALNAME
文件中存储的文件的名称。
TAR_UNAME
文件所有者的名称。
TAR_GNAME
文件所有者组的名称。
TAR_ATIME
上次访问的时间。 这是一个十进制数字,表示自 Epoch 以来的秒数。
如果归档文件提供具有纳秒精度的时序,则纳秒将作为十进制点之后的附加项添加到时间戳中。
TAR_MTIME
上次修改的时间。
TAR_CTIME
上次状态更改的时间。
TAR_SIZE
文件的大小。
TAR_UID
文件所有者的 UID。
TAR_GID
文件所有者组的 GID。
此外,以下变量包含关于 tar 操作模式和正在处理的归档文件的信息:
TAR_VERSION
GNU tar 版本号。
TAR_ARCHIVE
tar 正在处理的归档文件的名称。
TAR_BLOCKING_FACTOR
当前的阻塞因子,即单个记录中 512 字节块的数量。
TAR_VOLUME
tar 正在处理的卷的序号(如果正在读取多卷归档文件,则设置)。
TAR_FORMAT
正在处理的归档文件的格式。 可能是:gnu、oldgnu、posix、ustar、v7。
TAR_SUBCOMMAND
描述 tar 正在执行的操作的短选项(带有前导破折号)。
文件属性处理
--atime-preserve[=METHOD] 保留转储文件的访问时间,可以通过在读取后恢复时间(METHOD=replace,这是默认值),也可以通过一开始就不设置时间(METHOD=system)。
--delay-directory-restore 延迟设置提取目录的修改时间和权限,直到提取结束。 当从具有不寻常成员顺序的归档文件中提取时,使用此选项。
--group=NAME[:GID] 强制将 NAME 设置为添加文件的组。 如果未提供 GID,则 NAME 可以是用户名或数字 GID。 在这种情况下,将从当前主机的组数据库中推断出缺少的部件(GID 或名称)。
与 --group-map=FILE 结合使用时,仅影响 FILE 中未列出的所有者组的文件。
--group-map=FILE 从 FILE 读取组转换映射。 忽略空行。 注释以 # 符号开头,并延伸到行尾。 FILE 中的每一行定义单个组的转换。 它必须包含两个字段,由任意数量的空格分隔:
OLDGRP NEWGRP[:NEWGID]
OLDGRP 既可以是有效的组名,也可以是以 + 开头的 GID。 除非提供了 NEWGID,否则 NEWGRP 也必须是有效的组名或以 + 开头的 GID。 否则,NEWGRP 和 NEWGID 都不需要列在系统组数据库中。
因此,每个具有所有者组 OLDGRP 的输入文件都将以所有者组 NEWGRP 和 GID NEWGID 存储在归档文件中。
--mode=CHANGES
强制使用符号模式 CHANGES 处理添加的文件。
--mtime=DATE-OR-FILE
为添加的文件设置 mtime。 DATE-OR-FILE 可以是几乎任意格式的日期/时间,也可以是现有文件的名称。 在后一种情况下,将使用该文件的 mtime。
-m, --touch
不提取文件修改时间。
--no-delay-directory-restore
取消先前 --delay-directory-restore 选项的效果。
--no-same-owner
将文件提取为当前用户(普通用户的默认设置)。
--no-same-permissions
提取权限时,应用用户的 umask(普通用户的默认设置)。
--numeric-owner
始终对用户/组名使用数字。
--owner=NAME[:UID]
强制将 NAME 设置为添加文件的所有者。 如果未提供 UID,则 NAME 可以是用户名或数字 UID。 在这种情况下,将从当前主机的用户数据库中推断出缺少的条目(UID 或名称)。
与 --owner-map=FILE 一起使用时,仅影响那些所有者未在 FILE 中列出的文件。
--owner-map=FILE
从 FILE 读取所有者转换映射。 忽略空行。 注释以 # 符号开头,并扩展到行尾。 FILE 中的每个非空行定义单个 UID 的转换。 它必须由两个字段组成,由任意数量的空格分隔:
OLDUSR NEWUSR[:NEWUID]
OLDUSR 既可以是有效的用户名,也可以是以 + 开头的 UID。 除非提供了 NEWUID,否则 NEWUSR 也必须是有效的用户名或以 + 开头的 UID。 否则,NEWUSR 和 NEWUID 都不需要列在系统用户数据库中。
因此,每个由 OLDUSR 拥有的输入文件都将以所有者名称 NEWUSR 和 UID NEWUID 存储在归档文件中。
-p, --preserve-permissions, --same-permissions
将提取文件的权限设置为归档文件中记录的权限(超级用户的默认设置)。
--same-owner
尝试以与归档中存在的相同的所有权提取文件(超级用户的默认设置)。
-s, --preserve-order, --same-order
告诉 tar 处理的文件名列表的顺序与归档中的文件顺序相同。
--sort=ORDER
在创建归档时,根据 ORDER 对目录条目进行排序,ORDER 可以是 none、name 或 inode。
默认值为 --sort=none,它以操作系统返回的相同顺序存储归档成员。
使用 --sort=name 可确保创建的归档中成员的顺序是统一且可重现的。
使用 --sort=inode 选项可以减少创建归档时磁盘寻道次数,从而显著提高归档速度。只有底层系统提供必要的信息时,才支持这种排序方式。
扩展文件属性
^ -acls 启用 POSIX ACL 支持。
^ -no-acls 禁用 POSIX ACL 支持。
^ -selinux 启用 SELinux 上下文支持。
^ -no-selinux 禁用 SELinux 上下文支持。
^ -xattrs 启用扩展属性支持。
^ -no-xattrs 禁用扩展属性支持。
^ -xattrs-exclude=PATTERN 指定用于排除的 xattr 键模式。PATTERN 是一个 glob 模式,例如 --xattrs-exclude='user.\*',仅包含 user 命名空间中的属性。
^ -xattrs-include=PATTERN 指定用于包含的 xattr 键模式。PATTERN 是一个 glob 模式。
设备选择和切换
^ f, --file=ARCHIVE 使用归档文件或设备 ARCHIVE。如果未提供此选项,tar 首先会检查环境变量 TAPE。如果已设置,则将其值用作归档名称。否则,tar 将假定编译时的默认值。可以通过使用 --show-defaults 选项,或在 tar --help 输出的末尾检查默认值。
归档名称中包含冒号表示远程机器上的文件或设备。冒号之前的部分用作机器名称或 IP 地址,冒号之后的部分用作文件或设备路径名,例如:
^ -file=remotehost:/dev/sr0
可选地,可以在主机名前面加上用户名,并用 @ 符号分隔它们。
默认情况下,通过 rsh(1) 命令访问远程主机。现在通常使用 ssh(1)。可以通过提供以下命令行选项来执行此操作:
^ -rsh-command=/usr/bin/ssh
远程机器应安装 rmt(8) 命令。如果其路径名与 tar 的默认路径名不匹配,可以使用 --rmt-command 选项告知 tar 正确的路径名。
^ -force-local 即使归档文件包含冒号,也将其视为本地文件。
^ F, --info-script=COMMAND, --new-volume-script=COMMAND 在每个磁带的末尾运行 COMMAND(暗示 -M)。该命令可以包含参数。
启动时,它将继承 tar 的环境,以及以下变量:
^ AR_VERSION
GNU tar 版本号。
^ AR_ARCHIVE
^ ar 正在处理的归档名称。
^ AR_BLOCKING_FACTOR
当前块大小,即一个记录中的 512 字节块数。
^ AR_VOLUME
^ ar 正在处理的卷的序号(如果正在读取多卷归档,则设置)。
^ AR_FORMAT
正在处理的归档的格式。可以是以下之一:gnu、oldgnu、posix、ustar、v7。
^ AR_SUBCOMMAND
描述 tar 正在执行的操作的简短选项(带有前导破折号)。
^ AR_FD 可以用于将新卷名称传递给 tar 的文件描述符。
如果信息脚本失败,tar 将退出;否则,它将开始写入下一个卷。
-L, --tape-length=N
在写入 Nx1024 字节后更换磁带。如果 N 后面跟着一个大小后缀(参见下面的“大小后缀”小节),则该后缀指定要使用的乘数因子,而不是 1024。
此选项隐含 -M。
-M, --multi-volume
创建/列出/提取多卷归档文件。
--rmt-command=COMMAND
使用 COMMAND 代替 rmt 来访问远程归档文件。请参阅上面 -f 选项的描述。
--rsh-command=COMMAND
使用 COMMAND 代替 rsh 来访问远程归档文件。请参阅上面 -f 选项的描述。
--volno-file=FILE
当此选项与 --multi-volume 选项一起使用时,tar 将跟踪它正在处理的多卷归档文件的哪个卷,并将信息保存在 FILE 中。
设备分块
-b, --blocking-factor=BLOCKS
将记录大小设置为 BLOCKSx512 字节。
-B, --read-full-records
在列出或提取时,接受文件末尾标记后的不完整输入记录。
-i, --ignore-zeros
忽略归档文件中的零块。通常,连续两个包含零的 512 字节块表示 EOF,tar 在遇到它们后停止读取。此选项指示它继续读取,这在使用 -A 选项创建的归档文件时很有用。
--record-size=NUMBER
设置记录大小。NUMBER 是每个记录的字节数。它必须是 512 的倍数。可以使用大小后缀,例如 --record-size=10K,表示 10 千字节。请参阅“大小后缀”小节,以获取有效的后缀列表。
归档格式选择
-H, --format=FORMAT
创建具有给定格式的归档文件。有效的格式是:
gnu GNU tar 1.13.x 格式
oldgnu 类似于 tar <= 1.12 的 GNU 格式。
pax, posix
POSIX 1003.1-2001 (pax) 格式。
ustar POSIX 1003.1-1988 (ustar) 格式。
v7 旧 V7 tar 格式。
--old-archive, --portability
与 --format=v7 相同。
--pax-option=keyword[[:]=value][,keyword[[:]=value]]...
控制创建 PAX 归档文件(-H pax)时使用的 pax 关键字。此选项等效于 pax(1) 实用程序中的 -o 选项。
--posix
与 --format=posix 相同。
-V, --label=TEXT
创建带有卷标签 TEXT 的归档文件。在列出或提取时,将 TEXT 作为卷名称的模式匹配。
压缩选项
-a, --auto-compress
使用归档文件后缀来确定压缩程序。
-I, --use-compress-program=COMMAND
通过 COMMAND 过滤数据。它必须接受 -d 选项,用于解压缩。该参数可以包含命令行选项。
-j, --bzip2
通过 [bzip2]({filename}bzip2.md)(1) 过滤归档文件。
-J, --xz
通过 [xz]({filename}../../xz)(1) 过滤归档文件。
--lzip 通过 lzip(1) 过滤归档文件。
--lzma 通过 lzma(1) 过滤归档文件。
--lzop 通过 lzop(1) 过滤归档文件。
--no-auto-compress
不使用归档文件后缀来确定压缩程序。
-z, --gzip, --gunzip, --ungzip
通过 [gzip]({filename}../../gzip)(1) 过滤归档文件。
-Z, --compress, --uncompress
通过 compress(1) 过滤归档文件。
--zstd 通过 zstd(1) 过滤存档。
本地文件选择
--add-file=FILE
将 FILE 添加到存档中(如果其名称以破折号开头时很有用)。
--backup[=CONTROL]
备份,然后再删除。 如果提供了 CONTROL 参数,则它会控制备份策略。 其有效值为:
none, off
从不进行备份。
t, numbered
进行编号备份。
nil, existing
如果存在编号备份,则进行编号备份;否则进行简单备份。
never, simple
始终进行简单备份。
如果未提供 CONTROL,则该值将从 VERSION_CONTROL 环境变量中获取。 如果未设置,则假定为 existing。
-C, --directory=DIR
在执行任何操作之前,更改到 DIR。 此选项对顺序敏感,即它会影响所有后续选项。
--exclude=PATTERN
排除与 PATTERN 匹配的文件,这是一个 glob(3) 样式的通配符模式。
--exclude-backups
排除备份文件和锁文件。
--exclude-caches
排除包含文件 CACHEDIR.TAG 的目录的内容,但不包括该标记文件本身。
--exclude-caches-all
排除包含文件 CACHEDIR.TAG 的目录和该文件本身。
--exclude-caches-under
排除包含 CACHEDIR.TAG 的目录下的所有内容。
--exclude-ignore=FILE
在转储目录之前,检查它是否包含 FILE。 如果是,则从该文件中读取排除模式。 这些模式仅影响该目录本身。
--exclude-ignore-recursive=FILE
与 --exclude-ignore 相同,但 FILE 中的模式会影响目录及其所有子目录。
--exclude-tag=FILE
排除包含 FILE 的目录的内容,但不包括 FILE 本身。
--exclude-tag-all=FILE
排除包含 FILE 的目录。
--exclude-tag-under=FILE
排除包含 FILE 的目录下的所有内容。
--exclude-vcs
排除版本控制系统目录。
--exclude-vcs-ignores
排除与从 VCS 特定忽略文件中读取的模式匹配的文件。 支持的文件包括:.cvsignore、.gitignore、.bzrignore 和 .hgignore。
-h, --dereference
跟随符号链接;存档并转储它们指向的文件。
--hard-dereference
跟随硬链接;存档并转储它们引用的文件。
-K, --starting-file=MEMBER
从存档中的给定成员开始。
--newer-mtime=DATE
仅处理数据在 DATE 之后更改的文件。 如果 DATE 以 / 或 . 开头,则将其视为文件名;该文件的 mtime 将用作日期。
--no-null
禁用上一个 --null 选项的效果。
--no-recursion
避免自动进入目录。
--no-unquote
不要取消引用输入文件或成员名称。
--no-verbatim-files-from
将从文件中读取的每一行视为命令行中提供的字符串。 也就是说,删除前导和尾随空格,如果生成的字符串以破折号开头,则将其视为 tar 命令行选项。
这是默认行为。 --no-verbatim-files-from 选项提供了一种方法,可以在使用 --verbatim-files-from 选项之后恢复它。
此选项是位置相关的:它会影响命令行中其后出现的所有 --files-from 选项,直到出现 --verbatim-files-from 选项或行尾,以两者中较早者为准。
它由 --no-null 选项隐式启用。
--null 指示后续的 `-T` 选项以空字符分隔的名称进行逐字读取(禁用对以破折号开头的名称的特殊处理)。
请参阅 --verbatim-files-from。
-N, --newer=DATE, --after-date=DATE
仅存储比 DATE 更新的文件。 如果 DATE 以 / 或 . 开头,则将其视为文件名;该文件的 mtime 用作日期。
--one-file-system
在创建存档时停留在本地文件系统中。
-P, --absolute-names
在创建存档时,不要从文件名中删除前导斜杠。
--recursion
递归进入目录(默认)。
--suffix=STRING
在删除之前进行备份,覆盖通常的后缀。 默认后缀为 ~,除非由环境变量 SIMPLE_BACKUP_SUFFIX 覆盖。
-T, --files-from=FILE
从 FILE 获取要提取或创建的名称。
除非另有说明,FILE 必须包含一个由 ASCII LF(即每行一个名称)分隔的名称列表。 读取的名称以与命令行参数相同的方式进行处理。 它们会进行引号删除和单词拆分,并且任何以 . 开头的字符串都将被视为 tar 命令行选项。
如果这种行为不可取,可以使用 --verbatim-files-from 选项将其关闭。
^ -null 选项指示 tar,FILE 中的名称由 ASCII NUL 字符分隔,而不是 LF。 如果列表由 find(1) -print0 谓词生成,则此选项非常有用。
--unquote
取消引用文件名或成员名称(默认)。
--verbatim-files-from
将从文件列表中获取的每一行都视为文件名,即使它以破折号开头。 文件列表通过 --files-from (-T) 选项提供。 默认行为是将文件列表中提供的名称视为在命令行中键入的名称,即,所有以破折号开头的名称都将被视为 tar 选项。 --verbatim-files-from 选项会禁用此行为。
此选项会影响命令行中其后出现的所有 --files-from 选项。 它的效果可以通过 --no-verbatim-files-from 选项撤销。
此选项由 --null 选项隐式启用。
请参阅 --add-file。
-X, --exclude-from=FILE
排除与 FILE 中列出的模式匹配的文件。
文件名转换
--strip-components=NUMBER
提取时从文件名中删除 NUMBER 个前导组件。
--transform=EXPRESSION, --xform=EXPRESSION
使用 sed 替换 EXPRESSION 来转换文件名。
文件名匹配选项
这些选项会影响排除和包含模式。
--anchored
模式匹配文件名开头。
--ignore-case
忽略大小写。
--no-anchored
模式匹配任何 / 之后(排除的默认设置)。
--no-ignore-case
区分大小写的匹配(默认)。
--no-wildcards
逐字字符串匹配。
--no-wildcards-match-slash
通配符不匹配 /。
--wildcards
使用通配符(排除的默认设置)。
--wildcards-match-slash
通配符匹配 /(用于排除,默认)。
信息性输出
--checkpoint[=N]
每 N 个记录显示进度消息(默认 10)。
--checkpoint-action=ACTION
对每个检查点运行 ACTION。
--clamp-mtime
仅当文件比通过 --mtime 给定的时间更新时,才设置时间。
--full-time
以其完整分辨率打印文件时间。
--index-file=FILE
将详细输出发送到 FILE。
-l, --check-links
如果不是所有链接都已转储,则打印消息。
--no-quote-chars=STRING
禁用字符串 STRING 中的字符的引用。
--quote-chars=STRING
此外,引用字符串 STRING 中的字符。
--quoting-style=STYLE
设置文件和成员名称的引用样式。 STYLE 的有效值为:literal、shell、shell-always、c、c-maybe、escape、locale、clocale。
-R, --block-number
在每条消息中显示存档中的块号。
--show-omitted-dirs
在列出或提取时,列出每个不匹配搜索条件的目录。
--show-transformed-names, --show-stored-names
显示通过 --strip 和 --transform 选项转换后的文件或存档名称。
--totals[=SIGNAL]
处理存档后,打印总字节数。 如果提供了 SIGNAL,则在发送此信号时打印总字节数。 允许的信号是:SIGHUP、SIGQUIT、SIGINT、SIGUSR1 和 SIGUSR2。 可以省略 SIG 前缀。
--utc
以 UTC 格式打印文件修改时间。
-v, --verbose
详细列出处理的文件。 命令行中此选项的每个实例都会使详细程度增加 1。 最大详细程度为 3。 有关各种详细程度级别如何影响 tar 输出的详细讨论,请参阅 GNU Tar 手册的 2.5.2 节“'--verbose' 选项”。
--warning=KEYWORD
启用或禁用由 KEYWORD 标识的警告消息。 如果 KEYWORD 前面有 no-,则禁用消息;否则,启用消息。
多个 --warning 选项会累积。
控制通用 tar 操作的关键字:
all
启用所有警告消息。 这是默认设置。
none
禁用所有警告消息。
filename-with-nuls
"%s: 文件名包含空字符"
alone-zero-block
"在 %s 处有一个单独的零块"
适用于 tar --create 的关键字:
cachedir
"%s: 包含缓存目录标签 %s;%s"
file-shrank
"%s: 文件缩小了 %s 字节;用零填充"
xdev
"%s: 文件位于不同的文件系统上;未转储"
file-ignored
"%s: 未知文件类型;文件已忽略"
"%s: socket 已忽略"
"%s: door 已忽略"
file-unchanged
"%s: 文件未更改;未转储"
ignore-archive
"%s: 存档不能包含自身;未转储"
file-removed
"%s: 在我们读取它之前,文件已被删除"
file-changed
"%s: 在我们读取它时,文件已更改"
failed-read
抑制有关无法读取的文件或目录的警告。 此关键字仅在与 --ignore-failed-read 选项一起使用时适用。
适用于 tar --extract 的关键字:
existing-file
"%s: 跳过现有文件"
timestamp
"%s:时间戳过于久远 %s"
"%s:时间戳 %s 提前了 %s 秒"
contiguous-cast
“正在将连续文件提取为普通文件”
symlink-cast
“尝试将符号链接提取为硬链接”
unknown-cast
"%s:未知文件类型 '%c',提取为普通文件"
ignore-newer
“当前 %s 较新或年龄相同”
unknown-keyword
“忽略未知的扩展头关键字 '%s'”
decompress-program
控制对尝试运行替代解压缩程序时发生的故障进行详细描述。默认情况下,此警告被禁用(除非使用 --verbose)。使用此警告时,你可能会得到如下示例:
$ tar --warning=decompress-program -x -f archive.Z
tar (子进程):无法运行 compress:没有这样的文件或目录
tar (子进程):正在尝试 gzip
这意味着 tar 首先尝试使用 compress 解压缩 archive.Z,当失败时,切换到 gzip。
record-size
“记录大小 = %lu 个块”
控制增量提取的关键字:
rename-directory
"%s:目录已从 %s 重命名"
"%s:目录已重命名"
new-directory
"%s:目录是新的"
xdev "%s:目录位于不同的设备上:不进行清除"
bad-dumpdir
“Malformed dumpdir:'X' 从未使用过”
-w, --interactive, --confirmation
为每个操作请求确认。
兼容性选项
-o 在创建时,与 --old-archive 相同。在提取时,与 --no-same-owner 相同。
大小后缀
后缀 单位 字节等效值
b 块 SIZE x 512
B 千字节 SIZE x 1024
c 字节 SIZE
G 千兆字节 SIZE x 1024^3
K 千字节 SIZE x 1024
k 千字节 SIZE x 1024
M 兆字节 SIZE x 1024^2
P 拍字节 SIZE x 1024^5
T 太字节 SIZE x 1024^4
w 字 SIZE x 2
返回值
Tar 的退出代码指示它是否能够成功执行请求的操作,如果不能,则指示发生了什么类型的错误。
0 成功终止。
1 某些文件不同。如果使用 --compare(--diff, -d)命令行选项调用 tar,则表示存档中的某些文件与其磁盘对应文件不同。如果 tar 提供了 --create、--append 或 --update 选项之一,则此退出代码表示在存档过程中某些文件已被更改,因此生成的存档不包含文件的确切副本。
2 严重错误。这意味着发生了一些严重且无法恢复的错误。
如果由 tar 调用的子进程以非零退出代码退出,则 tar 本身也以该代码退出。例如,如果使用了压缩选项(例如 -z),并且外部压缩程序失败,则可能会发生这种情况。另一个示例是在备份到远程设备期间 rmt 失败。
参见
bzip2(1)、compress(1)、gzip(1)、lzma(1)、lzop(1)、rmt(8)、symlink(7)、xz(1)、zstd(1)。
完整的 tar 手册:运行 info tar 或使用 emacs(1) info 模式来阅读它。
GNU tar 文档的各种格式的在线副本可以在以下网址找到:
https://www.gnu.org/software/tar/manual
错误报告
请将错误报告发送至 <__>。
版权
版权所有 © 2023 自由软件基金会。 许可证 GPLv3+:GNU GPL 第 3 版或更高版本 [http://gnu.org/licenses/gpl.html] 这是一个自由软件:您可以自由地修改和重新分发它。在法律允许的范围内,不提供任何保证。