linux 命令:tar 详解

  • Post author:
  • Post category:linux


名称

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



版权声明:本文为yspg_217原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。