tar - 归档工具
传统用法:tar {A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo] [ARG...]
Unix风格用法:
tar -A [OPTIONS] ARCHIVE ARCHIVE
tar -c [-f ARCHIVE] [OPTIONS] [FILE...]
tar -d [-f ARCHIVE] [OPTIONS] [FILE...]
tar -t [-f ARCHIVE] [OPTIONS] [MEMBER...]
tar -r [-f ARCHIVE] [OPTIONS] [FILE...]
tar -u [-f ARCHIVE] [OPTIONS] [FILE...]
tar -x [-f ARCHIVE] [OPTIONS] [MEMBER...]
GNU风格用法:
tar {--catenate|--concatenate} [OPTIONS] ARCHIVE ARCHIVE
tar --create [--file ARCHIVE] [OPTIONS] [FILE...]
tar {--diff|--compare} [--file ARCHIVE] [OPTIONS] [FILE...]
tar --delete [--file ARCHIVE] [OPTIONS] [MEMBER...]
tar --append [-f ARCHIVE] [OPTIONS] [FILE...]
tar --list [-f ARCHIVE] [OPTIONS] [MEMBER...]
tar --test-label [--file ARCHIVE] [OPTIONS] [LABEL...]
tar --update [--file ARCHIVE] [OPTIONS] [FILE...]
tar --update [-f ARCHIVE] [OPTIONS] [FILE...]
tar {--extract|--get} [-f ARCHIVE] [OPTIONS] [MEMBER...]
GNU tar 是一个归档程序,旨在将多个文件存储在一个文件(归档)中,并处理 这些归档。 存档可以是常规文件或设备(例如磁带驱动器,因此程序的名称,代 表磁带存档器),它可以位于本地或远程机器上。
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
将存档附加到另一个存档的末尾。参数被视为要附加的档案的名称。所有档 案必须与它们所附加的档案具有相同的格式,否则生成的档案可能无法用于 tar 的非 GNU 实现。另请注意,当提供多个存档时,只有使用 -i (--ignore-zeros) 选项时,才能在生成的存档中访问第一个存档以外的存档中 的成员。不能连接压缩档案。
-c,--create
创建一个新的存档。参数提供要归档的文件的名称。目录以递归方式归档, 除非提供了 --no-recursion 选项。
-d,--diff,--compare
找到归档和文件系统之间的区别。参数是可选的,并指定要比较的归档成 员,如果未给出,假定为当前目录。
--delete
从归档中删除。参数提供要删除的存档成员的名称。至少要给定一个参数。 这个选项不会操作压缩的归档。没有短选项。
-r,--append
将文件追加到归档的最后。参数和 -c 选项的参数的意义相同。
-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。
-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
子进程的非零退出码视为错误(默认)。
-0,--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
文件属主的用户ID。
TAR_GID
文件属组的组ID。
此外,以下变量包含有关 tar 操作模式和正在处理的归档的信息:
TAR_VERSION
GNU tar 版本号。
TAR_ARCHIVE
tar 正在处理的归档名。
TAR_BLOCKING_FACTOR
当前块因子,即记录中 512 字节块的数量。
TAR_VOLUME
正在处理的卷 tar 的序号(如果读取多卷存档则设置)。
TAR_FORMAT
正在处理的存档的格式。其中之一:gnu、oldgnu、posix、ustar、v7。 TAR_SUBCOMMAND 描述正在执行的操作的简短选项(带前导破折 号)。
--atime-preserve[=METHOD]
保留转储文件的访问时间,通过在读取后恢复时间(METHOD=replace,这 是默认值)或首先不设置时间(METHOD=system)。
--delay-directory-restore
延迟设置提取目录的修改时间和权限,直到提取结束。从具有异常成员排序 的归档中提取时使用此选项。
--group=NAME[:GID]
强制 NAME 作为添加文件的组。如果未提供组ID,则 NAME 可以是用户名 或数字组ID。在这种情况下,将从当前主机的组数据库中推断出缺失的部分 (组ID 或名称)。与 --group-map=FILE 一起使用时,仅影响属组未在 FILE 中列出的文件。
--group-map=FILE
从 FILE 中读取组翻译映射。空行被忽略。注释以 # 符号引入并扩展到行 尾。FILE 中的每个非空行都定义了单个组的翻译。它必须由两个字段组成, 由任意数量的空格分隔:
OLDGRP NEWGRP[:NEWGID]
OLDGRP 是有效的组名或以 + 为前缀的组ID。除非提供 NEWGID,否则 NEWGRP 还必须是有效的组名或 +组ID。 否则,不需要在系统组数据库中 列出 NEWGRP 和 NEWGID。因此,属组为 OLDGRP 的每个输入文件都将 存储在属组为 NEWGRP 和 GID NEWGID 的归档中。
--mode=CHANGES
对添加的文件强制符号模式更改。
--mtime=DATE-OR-FILE
为添加的文件设置 mtime。DATE-OR-FILE 是几乎任意格式的日期/时间,或 者是现有文件的名称。在后一种情况下,将使用该文件的 mtime。
-m,--touch
不提取文件修改时间。
--no-delay-directory-restore
取消前边 --deley-directory-restore 选项。
--no-same-owner
自己提取文件(默认普通用户)。
--no-same-permissions
从归档中提取权限时应用用户的 umask(默认普通用户)。
--numeric-owner
始终使用数字作为用户/组名称。
--owner=NAME[:UID]
强制 NAME 作为添加文件的属主。如果未提供 UID,则 NAME 可以是用户 名或数字用户ID。在这种情况下,将从当前主机的用户数据库中推断出缺失 的部分(用户ID 或名称)。与 --owner-map=FILE 一起使用时,仅影响属主 未在 FILE 中列出的那些文件。
--owner-map=FILE
从 FILE 读取属主翻译映射。空行被忽略。注释以 # 符号引入并扩展到行 尾。FILE 中的每个非空行都定义了单个用户ID 的转换。它必须由两个字段组 成,由任意数量的空格分隔:
OLDUSR NEWUSR[:NEWUID]
OLDUSR 是有效的用户名或带有 + 前缀的用户ID。除非提供 NEWUID,否 则 NEWUSR 还必须是有效的用户名或 +用户ID。 否则,不需要在系统用户 数据库中列出 NEWUSR 和 NEWUID。因此,OLDUSR 拥有的每个输入文 件都将存储在归档中,属主名称为 NEWUSR 和 UID NEWUID。
-p,--preserve-permissions,--same-permissions
提取文件权限信息(默认 superuser)。
--same-owner
尝试提取与归档中存在的权限相同的文件(默认 superuser)。
-s,--preserve-order,--same-order
对要提取的名称进行排序以匹配归档。
--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 是一个 POSIX 正则表达式,例如 --xattrs-exclude='^user.',从用户命名空间中排除属性。
--xattrs-include=PATTERN
指定 xattr 键的包含模式。PATTERN 是一个 POSIX 正则表达式。
-f,--file=ARCHIVE
使用归档文件或设备 ARCHIVE。如果没有给出这个选项,tar 将首先检查环 境变量“TAPE”。如果已设置,则其值将用作存档名称。否则,tar 将采用编译 后的默认值。可以使用 --show-defaults 选项或在 tar --help 输出的末尾检查 默认值。包含冒号的存档名称指定远程机器上的文件或设备。冒号前的部分 为机器名或IP地址,冒号后的部分为文件或设备路径名,例如:
--file=remotehost:/dev/sr0
一个可选的用户名可以作为主机名的前缀,在它们之间放置一个@ 符号。默 认情况下,远程主机是通过 rsh 命令访问的。现在通常使用 ssh 代替。您可 以通过提供以下命令行选项来执行此操作:
--rsh-command=/usr/bin/ssh
远程机器应该安装了 rmt 命令。如果它的路径名与 tar 的默认值不匹配,您 可以使用 --rmt-command 选项通知 tar 正确的路径名。
--force-local
即使有冒号,强制归档文件为本地文件。
-F,--info-script=COMMAND,--new-volume-script=COMMAND
在每个磁带的末尾运行 COMMAND(暗示 -M)。命令可以包含参数。启动 时,它将继承 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 的简短选项(带前导破折号)。
TAR_FD
可用于将新卷名传达给 tar 的文件描述符。
如果 info 脚本失败,则 tar 退出;否则,它将开始写入下一卷。
-L,--tape-length=N
写入 Nx1024 字节后更换磁带。如果 N 后跟尺寸后缀(请参阅下面的尺寸后 缀小节),则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,--blockding-factor=BLOCKS
将记录大小设置为 BLOCKSx512 字节。
-B,--read-full-records
列出或提取时,在文件结束标记后接受不完整的输入记录。
-i,--ignore-zeros
忽略归档中为零的块。通常两个连续的 512 块填充零意味着 EOF,tar 在遇 到它们后停止读取。 此选项指示它进一步阅读,并且在阅读使用 -A 选项创 建归档时很有用。
--record-size=NUMBER
设置记录大小。NUMBER 是每条记录的字节数。它必须是 512 的倍数。它 可以带有尺寸后缀,例如 --record-size=10K,表示 10 KB。有关有效后缀的 列表,请参阅尺寸后缀小节。
-H,--format=FORMAT
创建指定格式的归档:
gnu GNU tar 1.13.x 格式
oldgnu 1.12 版本以前的 GNU tar 格式
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 归档时控制 pax 关键字 (-H pax)。 此选项等效于 pax 命令的 -o 选 项。
--posix
等于 --format=posix
-V,--label=TEXT
创建卷名为 TEXT 的归档。如果列出或提取,请使用 TEXT 作为卷名称的通 配模式。
-a,--auto-compress
根据归档的后缀决定压缩程序。
-I,--use-compress-program=COMMAND
通过 COMMAND 过滤数据。它必须接受 -d 选项以进行解压缩。参数可以包 含命令行选项。
-j,--bzip2
通过 bzip2 过滤归档。
-J,--xz
通过 xz 过滤归档。
--lzip
通过 lzip 过滤归档。
--lzma
通过 lzma 过滤归档。
--lzop
通过 lzop 过滤归档。
--no-auto-compress
不根据归档的后缀决定压缩程序。
-z,--gzip,--gunzip,--ungzip
通过 gzip 过滤归档。
-Z,--compress,--uncompress
通过 compress 过滤归档。
--zstd
通过 zstd 过滤归档。
--add-file=FILE
将 FILE 添加到归档中(如果其名称以破折号开头,则很有用)。
--backup[=CONTROL]
删除前备份。CONTROL 参数(如果提供)控制备份策略。 其有效值为:
none,off 永不创建备份。
t,numbered 创建编号的备份。
nil,existing 如果存在编号备份,则创建编号备份,否则创建简单备份
never,simple 总是创建简单备份。
如果没有给定 CONTROL,这个参数可以从 VERSION_CONTROL 环境变量 拿到。如果 VERSION_CONTROL 没有配置,则默认值是 existing。
-C,--direction=DIR
在任何操作之前切换工作目录到 DIR。此选项是顺序敏感的,即它会影响后 面的所有选项。
--exclude=PATTERN
不包括匹配 PATTERN 的文件,通配符风格。
--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
从归档中的给定的 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 以 / 或 . ,它被认为是一个文件 名; 该文件的 ctime 用作日期。
--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 文件中的名称由 ASCII NUL 字符分隔,而不 是 LF。 如果列表是由 find -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 个记录展示进程信息(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
详细列出已处理的文件。命令行上此选项的每个实例都会将详细级别增加一 级。最大详细级别为 3。
--warning=KEYWORD
启用或禁用由 KEYWORD 标识的警告消息。如果 KEYWORD 以 no- 为前 缀,则消息将被抑制,否则启用。
多个 --warning 消息累积。
控制一般 tar 操作的关键字:
all 允许所有警告信息(默认)。
none 不展示警告信息。
filename-with-nuls "%s: 读取的文件名包含空字符"
alone-zero-block “在 %s 的单独零块”
适合 tar --create 的关键词:
casedir "%s: 包含缓存目录标记 %s; %s"
file-shrank “%s:文件缩小了 %s 个字节;用零填充”
xdev "%s: 文件在不同的文件系统上;未转储"
file-ignored "%s: 未知文件类型;文件被忽略"
"%s: 套接字被忽略"
“%s:门被忽略”
file-unchanged "%s: 文件未更改;未转储"
ignore-archive “%s:文件是归档;未转储”
file-removed “%s:文件在我们阅读之前被删除”
file-changed “%s:文件在我们读取时改变了”
failed-read 禁止有关不可读文件或目录的警告。此关键字仅在与 --ignore-failed-read 选项一起使用时才适用。
适合 tar --extract 的关键词:
existing-file "%s: 跳过现有文件"
timstamp “%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 (child): 无法运行 compress: 没有那个文件或目录
tar (child): 尝试 gzip
这意味着 tar 首先尝试使用 compress 解压缩 archive.Z,然后在失败时切换到 gzip。
record-size “记录大小 = %lu 块”
控制增量提取的关键词:
rename-directory "%s: 目录已重命名为 %s"
"%s: 目录已被重命名"
new-directory "%s: 目录是新的"
xdev “%s:目录在不同的设备上:没有清除”
bad-dumpdir “格式错误的转储目录:从未使用过‘X’”
-w,--interactive,--confirmation
要求对每项操作进行确认。
-o 创建时等于 --old-archive。提取时等于 --no-same-owner。
Suffix Units Byte Equivalent
b Blocks SIZE x 512
B Kilobytes SIZE x 1024
c Bytes SIZE
G Gigabytes SIZE x 1024^3
K Kilobytes SIZE x 1024
k Kilobytes SIZE x 1024
M Megabytes SIZE x 1024^2
P Petabytes SIZE x 1024^5
T Terabytes SIZE x 1024^4
w Words SIZE x 2
0 成功退出。
1 有些文件不同。如果使用 --compare (--diff, -d) 命令行选项调用 tar,这意味着存 档中的某些文件与其磁盘对应文件不同。如果 tar 被赋予 --create、--append 或 --update 选项之一,则此退出代码意味着某些文件在存档时已更改,因此生成的 存档不包含文件集的确切副本。
2 严重错误。
如果 tar 调用的子进程以非零退出码退出,则 tar 本身也会以该码退出。例如,如果使 用了压缩选项(例如 -z)并且外部压缩程序失败,就会发生这种情况。另一个示例是备 份到远程设备期间的 rmt 故障。
使用示例:
1. 归档基本操作:
[root@server dir]# cd tar_dir/
[root@server tar_dir]# ll
总用量 0
[root@server tar_dir]# touch {a..z}
[root@server tar_dir]# cd ../
## 创建归档
[root@server dir]# tar cf test.tar tar_dir
[root@server dir]# ll | grep test.tar
-rw-r--r-- 1 root root 20480 12月 27 16:54 test.tar
## 查看归档内容
[root@server dir]# tar tf test.tar
tar_dir/
tar_dir/t
tar_dir/h
tar_dir/b
tar_dir/d
tar_dir/u
tar_dir/a
tar_dir/e
tar_dir/s
tar_dir/n
tar_dir/p
tar_dir/y
tar_dir/m
tar_dir/k
tar_dir/x
tar_dir/q
tar_dir/w
tar_dir/i
tar_dir/c
tar_dir/l
tar_dir/r
tar_dir/z
tar_dir/v
tar_dir/f
tar_dir/o
tar_dir/j
tar_dir/g
## 追加文件到归档
[root@server dir]# tar rf test.tar filee
[root@server dir]# tar tf test.tar
tar_dir/
tar_dir/t
tar_dir/h
tar_dir/b
tar_dir/d
tar_dir/u
tar_dir/a
tar_dir/e
tar_dir/s
tar_dir/n
tar_dir/p
tar_dir/y
tar_dir/m
tar_dir/k
tar_dir/x
tar_dir/q
tar_dir/w
tar_dir/i
tar_dir/c
tar_dir/l
tar_dir/r
tar_dir/z
tar_dir/v
tar_dir/f
tar_dir/o
tar_dir/j
tar_dir/g
filee
## 从归档提取文件
[root@server dir]# tar xf test.tar
## 从归档中删除指定文件
[root@server dir]# tar -f test.tar --delete filee
[root@server dir]# tar tf test.tar
tar_dir/
tar_dir/t
tar_dir/h
tar_dir/b
tar_dir/d
tar_dir/u
tar_dir/a
tar_dir/e
tar_dir/s
tar_dir/n
tar_dir/p
tar_dir/y
tar_dir/m
tar_dir/k
tar_dir/x
tar_dir/q
tar_dir/w
tar_dir/i
tar_dir/c
tar_dir/l
tar_dir/r
tar_dir/z
tar_dir/v
tar_dir/f
tar_dir/o
tar_dir/j
tar_dir/g
## 指定不添加到归档的文件
[root@server dir]# rm test.tar -f
[root@server dir]# tar -cf test.tar tar_dir/ --exclude={a..c}
[root@server dir]# tar -tf test.tar
tar_dir/
tar_dir/t
tar_dir/h
tar_dir/d
tar_dir/u
tar_dir/e
tar_dir/s
tar_dir/n
tar_dir/p
tar_dir/y
tar_dir/m
tar_dir/k
tar_dir/x
tar_dir/q
tar_dir/w
tar_dir/i
tar_dir/l
tar_dir/r
tar_dir/z
tar_dir/v
tar_dir/f
tar_dir/o
tar_dir/j
tar_dir/g
2. 压缩相关操作:
[root@server dir]# tar zcf test.tar.gz tar_dir
[root@server dir]# tar jcf test.tar.bz tar_dir
[root@server dir]# tar Jcf test.tar.xz tar_dir
[root@server dir]# ll | grep test.tar
-rw-r--r-- 1 root root 273 12月 27 17:05 test.tar.bz
-rw-r--r-- 1 root root 404 12月 27 16:54 test.tar.gz
-rw-r--r-- 1 root root 328 12月 27 17:03 test.tar.xz