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
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
linux tar命令详解 tar命令 tar能为文件和目录创建档案。利用tar,用户能为某一特定文件创建档案(备份文件),也能在档案中改动文件,或向档案中加入新的文件。tar最初被用来在磁带上创建档案,目前,用户能在所有设备上创建档案,如软盘。利用tar命令,能把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。 语法:tar [主选项+辅选项] 文件或目录 使用该命令时,主选项是必须要有的,他告诉tar要做什么事情,辅选项是辅助使用的,能选用。 主选项: c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。 r 把要存档的文件追加到档案文件的未尾。例如用户已作好备份文件,又发现更有一个目录或是一些文件忘记备份了,这时能使用该选项,将忘记的目录或文件追加到备份文件中。 t 列出档案文件的内容,查看已备份了哪些文件。 u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中未找到要更新的文件,则把他追加到备份文件的最后。 x 从档案文件中释放文件。 辅助选项: b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512 bytes)。 f 使用档案文件或设备,这个选项通常是必选的。 k 保存已存在的文件。例如我们把某个文件还原,在还原的过程中,遇见相同的文件,不会进行覆盖。 m 在还原文件时,把所有文件的修改时间设定为目前。 M 创建多卷的档案文件,以便在几个磁盘中存放。 v 周详报告tar处理的文件信息。如无此选项,tar不报告文件信息。 w 每一步都需求确认。 z 用gzip来压缩/解压缩文件,加上该选项后能将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。 Linux下的压缩文件剖析 对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕。别个不说,单单就压缩文件为例,我们知道在视窗系统下最常见的压缩文件就只有两种,一是,zip,另一个是.rap。可是Linux就不同了,他有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也能在Linux下使用,不过在Linux使用.zip和.rar的人就太少了。本文就来对这些常见的压缩文件进行一番小结,希望你下次遇见这些文件时不至于被搞晕:)   在具体总结各类压缩文件之前呢,首先要 弄清两个概念:打包和压缩。打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这两个概念呢?其实这源于Linux中的非常多压缩程式只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另他的工具将这一大堆文件先打成一个包,然后再就原来的压缩程式进行压缩。   Linux下最常用的打包程式就是tar了,使用tar程式打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就能用其他的程式来进行压缩了,所以首先就来讲讲tar命令的基本用法:   tar命令的选项有非常多(用man tar能查看到),但常用的就那么几个选项,下面来举例说明一下:   # tar -cf all.tar *.jpg   这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。   # tar -rf all.tar *.gif   这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。 # tar -uf all.tar logo.gif   这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。   # tar -tf all.tar   这条命令是列出all.tar包中所有文件,-t是列出文件的意思   # tar -xf all.tar   这条命令是解出all.tar包中所有文件,-t是解开的意思   以上就是tar的最基本的用法。为了方便用户在打包解包的同时能压缩或解压文件,tar提供了一种特别的功能。这就是tar能在打包或解包的同时调用其他的压缩程式,比如调用gzip、bzip2等。   1) tar调用gzip   gzip是GNU组织研发的一个压缩程式,.gz结尾的文件就是gzip压缩的结果。和gzip相对的解压程式是gunzip。tar中使用-z这个参数来调用gzip。下面来举例说明一下:   # tar -czf all.tar.gz *.jpg   这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,包名为all.tar.gz   # tar -xzf all.tar.gz   这条命令是将上面产生的包解开。   2) tar调用bzip2   bzip2是个压缩能力更强的压缩程式,.bz2结尾的文件就是bzip2压缩的结果。和bzip2相对的解压程式是bunzip2。tar中使用-j这个参数来调用gzip。下面来举例说明一下:   # tar -cjf all.tar.bz2 *.jpg   这条命令是将所有.jpg的文件打成一个tar包,并且将其用bzip2压缩,生成一个bzip2压缩过的包,包名为all.tar.bz2   # tar -xjf all.tar.bz2   这条命令是将上面产生的包解开。 3)tar调用compress   compress也是个压缩程式,不过好象使用compress的人不如gzip和bzip2的人多。.Z结尾的文件就是bzip2压缩的结果。和compress相对的解压程式是uncompress。tar中使用-Z这个参数来调用gzip。下面来举例说明一下:   # tar -cZf all.tar.Z *.jpg   这条命令是将所有.jpg的文件打成一个tar包,并且将其用compress压缩,生成一个uncompress压缩过的包,包名为all.tar.Z   # tar -xZf all.tar.Z   这条命令是将上面产生的包解开   有了上面的知识,你应该能解开多种压缩文件了,下面对于tar系列的压缩文件作一个小结:   1)对于.tar结尾的文件   tar -xf all.tar   2)对于.gz结尾的文件   gzip -d all.gz   gunzip all.gz   3)对于.tgz或.tar.gz结尾的文件   tar -xzf all.tar.gz   tar -xzf all.tgz   4)对于.bz2结尾的文件   bzip2 -d all.bz2   bunzip2 all.bz2   5)对于tar.bz2结尾的文件   tar -xjf all.tar.bz2   6)对于.Z结尾的文件   uncompress all.Z   7)对于.tar.Z结尾的文件   tar -xZf all.tar.z   另外对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压他们:   1)对于.zip   linux下提供了zip和unzip程式,zip是压缩程式,unzip是解压程式。他们的参数选项非常多,这里只做简单介绍,依旧举例说明一下其用法:   # zip all.zip *.jpg   这条命令是将所有.jpg的文件压缩成一个zip包 # unzip all.zip   这条命令是将all.zip中的所有文件解压出来   2)对于.rar   要在linux下处理.rar文件,需要安装RAR for Linux,能从网上下载,但要记住,RAR for Linux 不是免费的;然后安装:   # tar -xzpvf rarlinux-3.2.0.tar.gz   # cd rar   # make   这样就安装好了,安装后就有了rar和unrar这两个程式,rar是压缩程式,unrar是解压程式。他们的参数选项非常多,这里只做简单介绍,依旧举例说明一下其用法:   # rar a all *.jpg   这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程式会将.rar 扩展名将自动附加到包名后。   # unrar e all.rar   这条命令是将all.rar中的所有文件解压出来   到此为至,我们已介绍过linux下的tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、 zip、unzip、rar、unrar等程式,你应该已能够使用他们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip、.rar这10种压缩文件进行解压了,以后应该不必为下载了一个软件而不知道怎么在Linux下解开而烦恼了。而且以上方法对于Unix也基本有效。   本文介绍了linux下的压缩程式tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、zip、 unzip、rar、unrar等程式,及怎么使用他们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip、.rar这10种压缩文件进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值