linux 命令:tar 详解

名称

        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

你可能感兴趣的:(linux命令详解,linux,运维,服务器)