tar 命令
用途
处理归档。
语法
X/Open Standards:
Berkeley Standards:
描述
- ustar 头格式允许不受限制的 (2^64 -1) 文件大小。
- tar 命令不会保留稀疏分配的任何文件的稀疏性质。 任何在恢复前原是稀疏的文件,将按文件大小在文件系统内分配其所有空间。
tar 命令通过将文件写入归档存储介质或将文件从介质中取回,来处理归档。 由 tar 命令使用的文件通过 File 参数来表示。 如果 File 参数引用一个目录,那么引用该目录并递归引用该目录下全部的文件和目录。
tar 命令在缺省设备 (通常是磁带) 上查找归档,除非使用 -f Archive 标志指定另一个设备。 当为美国磁带归档程序(USTAR)格式指定大于 100 个字符的路径名称时,请记住路径名称是由一个前缀缓冲区、一个 /(斜杠)和一个名称缓冲区组成的。
从 AIX 7.3.1开始, tar 命令可以对可移植归档交换 (PAX) 格式的文件进行归档,并可从 PAX 格式的 tar 文件中抽取文件。 必须指定 --format=pax 标志以生成 PAX 格式的 tar 文件。
path+filename 的长度只有在小于系统定义的 PATH_MAX 限制时,才受 tar 命令支持。 只要 path+filename 输入的长度大于 PATH_MAX 限制,就不会归档
当写入归档时,tar 命令使用一个临时文件(/tmp/ tar* 文件),并在内存中维护一个包含多链接文件的表。 如果 tar 命令不能创建临时文件,或者没有足够的可用内存来放置链接表,您会接收到错误消息。
tar 命令有两组标志:必需标志和可选标志。 必需标志控制 tar 命令的操作,包括 -c、-r、-t、-u 和 -x 标志。 要执行 tar 命令至少要选择一个必需标志。 选择了必需标志后,您可以选择一个可选标志,但它们对控制 tar 命令都不是必要的。
- 当存储设备是普通文件或块特殊文件时, -u 和 -r 会标记退格。 然而,原始磁带设备不支持退格。 因此,当存储设备是原始磁带时, -u 和 -r 标志将倒带,打开磁带,然后再次读取磁带。
- 记录在块磁带上是一个块长,但它们通常小于原始磁带上的密度的一半。 因此,尽管按块记录原始磁带必须被读取两边,但磁带运动总量比从块式磁带读取一遍单块记录还少。
- 流式磁带设备的结构不支持在磁带最后增加信息。 因此,当存储设备是流式磁带时, -u 和 -r 标志是无效选项。 尝试使用这些标志会导致以下错误消息:
tar: Update and Replace options not valid for a streaming tape drive. - 磁带错误无法恢复。
- 通过更改默认块大小,可以提高IBM磁带单元 12 型的tar命令性能。 要更改块大小,请在命令行输入下列命令:
chdev -1 <device_name> -a block_size=32k
要了解更多有关使用磁带设备的信息,请参阅 rmt 特殊文件。
标志
tar 命令的标志有两组,必需的和可选的。 必须提供至少一个必需标志来控制 tar 命令。
| 必需的标志 | 描述 |
|---|---|
| -c | 创建新的归档,并将由一个或多个 File 参数所指定的文件写入归档的开头。 |
| -r | 将由一个或多个 File 参数所指定的文件写入归档的最后。 这个标志不是对任何磁带设备都有效,因为有些设备不支持在磁带的最后添加信息。 |
| -t | 按照文件在归档中的顺序列出文件。 文件可能会多次列出。 |
| -U | 只有当文件不在归档中,或写入归档后被修改过,才将这些文件(由一个或多个 File 参数所指定)写入归档的最后。 -u 标志不是对任何磁带设备都有效,因为有些磁带设备不支持在磁带的最后添加信息。 |
| -U | 允许对扩展属性进行归档和抽取。 扩展属性还包括访问控制表 (ACL)。 |
| -x | 从归档中抽取一个或多个 File 参数指定的文件。 如果 File 参数是指一个目录, tar 命令递归地从归档中抽取那个目录。 如果您未指定 File 参数,tar 命令从归档中抽取所有的文件。 如果归档中包含同一文件的多个副本,最后抽取的副本覆盖所有以前抽取的副本。 如果被抽取的文件在系统中不存在,那么创建该文件。 如果您有适当的许可权,tar 命令用与磁带上的相同所有者和组标识恢复所有文件和目录。 如果您没有适当的许可权,将以您的所有者标识和组标识恢复文件和目录。 只能请求文件最后出现的版本。 |
| 可选标志 | 描述 |
|---|---|
| -B | 输入分块和输出分块强制为每个记录 20 块。 使用这个选项,tar 命令可在那些可能未维护分块的通信信道间执行。 |
| -b 块 | 指定每个记录的 512 字节块数。 缺省值和最大值都是 20,这是对磁带记录适当的数目。 由于记录间隙大小的原因,用大的分块因子写的磁带可以比每个记录只有一块的磁带保存更多的数据。 读取磁带时将自动确定块大小 ( -x 或 -t 函数标志)。 使用 -u 和 -r 函数更新归档时,将使用现有记录大小。 仅当使用 -c 标志创建新归档时, tar 命令才使用 Blocks 参数的指定值来写入归档。 对于带有 -f 标志的普通文件的输出,可以使用与磁盘块大小相匹配的分块因子来节省磁盘空间 (例如, -b4 标志,用于 2048 字节磁盘块)。 |
| -C 目录 | 使 tar 命令对 Directory 变量指定的目录执行 chdir 子例程。 使用 -C 标志时,允许使用简短的相对路径名将不通过靠近的公共父目录相关的目录归档。 例如,要将 /usr/include 和 /etc 目录中的文件归档,可以使用以下命令: tar c -C /usr/include File1 File2 -C /etc File3 File4
当您将归档中的文件解压缩时,可以使用多个 -C 选项。 使用多个 -C 选项时, -C Directory 的每个实例都相对于在命令中列出的实例。 例如,第二个 -C Directory 与第一个 -C Directory 相关。 如果归档中包含一个具有绝对路径名(例如,/home/dir1/filename)的文件,那么会将该文件解压缩到由 -C Directory 指定的目录,并除去文件路径或文件名中的前导斜杠 (/)。 -C Directory 标志必须在所有其他标志后出现,也可以在给定的文件名列表中出现。 |
| -D | 指定目录时,禁止递归处理。 |
| -d | 为块文件、特殊字符文件以及先进先出(FIFO)管道进程创建单独条目。 通常,tar 命令不会归档这些特殊文件。 当使用 -d 标志写入归档时, tar 命令使用 -x 标志恢复空目录,特殊文件和先进先出 (FIFO) 管道进程成为可能。 限制: 虽然任何人都可以归档特殊文件,但只有具有 root 用户权限的用户才能从归档中抽取这些文件 (FIFO 也可以由非 root 用户抽取)。
|
| -E | 在将文件添加到新的或现有的归档的过程中,避免截断较长的用户和组名。 |
| -f | 在归档前检查文件类型。 源代码控制系统(SCCS),修订控件系统(RCS),名为 core、errs 和 a.out 的文件,以及以 .o(点 o)结束的文件不归档。 |
| -f 归档 | 使用 Archive 变量表示要读或写的归档。 当未指定这个标志,tar 命令使用一个针对特定系统的缺省文件名(格式为 /dev/rmt0)。 如果指定的 Archive 变量是 -(减号),tar 命令写到标准输出或从标准输入中读取。 如果写入标准输出,那么必须使用 -c 标志。 |
| -- format=pax | 以 PAX/POSIX 格式创建归档文件。 如果未指定此标志,那么缺省情况下将以 USTAR/GNU 格式创建 tar 文件。 |
| -h | 强制 tar 命令监视符号链接,就好象它们是常规文件或目录。 通常,tar 命令不监视符号链接。 |
| -i | 忽略头校验和的错误。 tar 命令在归档中写入一个文件头,它包含每个文件的校验和。 如果未指定这个标志,系统通过重新计算校验和来验证头块的内容,并在发生不匹配时,停止并报目录校验和错误。 如果指定这个标志,tar 命令将记录错误,然后向前扫描直到查找到一个有效的头块。 这就允许从多卷归档的后面的卷中恢复文件,而不需读取前面的卷。 |
| -L InputList | -L 选项的 Inputlist 参数应该始终是列出需要归档或解压缩的文件和目录的文件名。 |
| -l | 对于每个带有链接数大于 1 的文件,而其相应的链接却未归档,写错误消息到标准输出。 例如,如果 file1 和 file2 是用硬链接链接在一起,而只有 file1 存放在归档中,那么 -l 标志将发出错误消息。 如果未指定 -l 标志,将不显示错误消息。 |
| -M | 使用抽取时间作为修改时间。 缺省是保留文件的修改时间。 |
| -N 块 | 当 tar 命令处理流式磁带归档时,允许它使用很大的块的集群。 然而请注意,在输入时,如果用这个标志创建了非常长的块大小,tar 命令将不能自动确定磁带的块大小。 没有 -N Blocks 标志时,tar 命令可以自动确定的最大块大小为 20 块。 |
| -O | 向后兼容旧版本(非AIX)的tar命令。 当使用这个标志进行读取时,被抽取的文件使用运行程序的用户的用户标识和组标识(UID 和 GID),而不是归档中的用户标识和组标识。 这是对于普通用户的缺省行为。 |
| -p | 恢复字段到它们的原始方式,忽略现有的用户权限屏蔽位(umask)。 setuid、setgid 和 tacky 位许可权也恢复给拥有 root 用户权限的用户。 此标志会将文件和目录恢复为它们的原始方式。 |
| -R | 指定目录时,使用递归。 与-D 选项一起使用时忽略。 |
| -s | 如果 tar 命令未能使用 -s 标志成功尝试链接(常规链接)两个文件,请试着创建符号链接。 |
| -S 块 b, -S Feet, -S 英尺@密度 | 指定每个卷 512 KB 块的数量 (第一个格式) ,与磁带分块因子无关。 您也可以使用第二种格式,用英尺来指定磁带大小,在这种情况下,tar 命令假定一个缺省的 Density 变量。 第三种格式允许您指定磁带长度和密度。 英尺被保守地假定为 11 英寸长。 这个标志让您更容易处理多卷磁带归档,这时 tar 命令必须能够确定每卷能放入多少块。 注意:
|
| -U | 对命名的扩展属性和 ACL 进行归档或恢复。 列出时,此选项将显示任何命名的扩展属性的名称和任何与每个文件相关的 ACL 类型,它们是归档图像的一部分。 |
| -v | 在处理每个文件时,列出它们的名称。 使用 -t 标志, -v 提供有关磁带条目的更多信息,包括文件大小,上次修改时间,用户号 (UID) ,组号 (GID) 和许可权。 |
| -w | 显示要进行的操作,跟着是文件名,然后等候用户确认。 如果回答是肯定的,那么执行操作。 如果回答不是肯定的,那么忽略文件。 |
| -编号 | 使用 /dev/rmtNumber 文件,而不是缺省值。 例如,-2 标志 和 -f/dev/rmt2 文件是相同的。 |
| -X ExcludeList | 从正在创建、抽取或列出的 tar 归档排除 ExcludeList 给定的文件名或目录。 ExcludeList 的每一行应该只包含一个文件名或目录,这些文件名或目录将从正在创建、抽取或列出的 tar 归档排除出去。 可以多次指定 -X 选项,它优先于所有其他选项。 |
| -Z | 归档加密文件或目录的加密文件系统(EFS)信息。 缺省情况下,抽取 EFS 信息。 当指定 -t 和 -v 标志以及 -Z 标志时,将在用 -Z 标志归档的加密文件和目录的文件方式之后显示 e 指示符,并且在其他文件的文件方式之后显示连字符(-)。 限制: 使用 -Z 标志创建的归档只能在 AIX 6.1 或更高发行版上复原。
|
退出状态
本命令返回以下退出值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功完成。 |
| > 0 | 发生错误。 |
安全性
示例
- 要编写file1和 file2文件到缺省磁带机上的新归档,请输入: tar -c file1 file2
- 要抽取 /tmp上的归档文件中的目录/dev/rmt2并使用提取时间作为修改时间,请输入:
tar -xm -f/dev/rmt2 /tmp - 要创建包含以下内容的新归档文件:file1file and pass the archive file to the 德 command to be written to the/dev/rmt1设备,输入:
tar -cvf - file1 | dd of=/dev/rmt1 conv=sync - 要显示文件的名称,请在out.tar当前目录上的磁盘归档文件,请输入:
tar -vtf out.tar - 要展开压缩的 tar 归档文件,fil.tar.z,将该文件传递到 tar 命令,并从展开的 tar 归档文件中抽取所有文件,请输入:
zcat fil.tar.Z | tar -xvf - - 要归档以下项的内容:/usr/include和/usr/bin使用短相对路径名的文件,请输入:
cd /usr tar -cvf/dev/rmt0 -C./include . -C ../bin .要求:在使用相对路径名称指定多个 -C标志实例时,用户必须考虑前一个-C标志请求。 - 要在使用 -S 标志时归档到 8 毫米磁带设备,请输入:
tar -cvf /dev/rmt0 -S 4800000b /usr限制: 归档到 8-mm 设备时,请避免使用 -S 脚 和 -S 脚@密度 标志,因为 8-mm 设备在写入磁带时不使用密度概念。 - 要归档所有项的列表C通过 -L 选项的 InputList 参数在文件中列出的文件,请输入:位置fl_list是由所有列表组成的文件.c文件。 这可以通过以下命令获得:
tar -cvf fl.tar -L fl_listls *.c > fl_list - 要归档所有项的列表C通过使用 -L 选项设置变量,输入:
ls *.c > fl_list fl=fl_list tar -cvf var.tar -L $fl - 要在创建归档过程中避免截断较长的用户或组名,请输入:
tar -cvEf file.tar file - 要新建包含带有 ACL 和 EA 的
file1文件的归档文件,请输入:tar -cvUf /tmp/tar.ar file1 - 要创建包含
file1文件的新的 PAX 格式归档文件,请输入以下命令:tar -c --format=pax -f result.tar file1
Berkeley 选项
以下是使用 tar 命令的 Berkeley 选项的示例:
tar cvfbL test.tar 20 infile其中 test.tar 是归档 tar 文件,20 是块的数目,infile 是此归档的 Inputlist。- 要将输入列表文件 infile 中列出的所有目录和完整文件名归档到 ar.tar中,请输入:
其中 infile 包含要归档的文件的路径名。tar cvfL ar.tar infile - 要将输入列表文件 infile 中列出的目录中的文件归档到 ar.tar中,请输入:
tar cvRfL ar.tar infile - 要从名为 ar.tar的归档中抽取目录并完成输入列表文件 infile 中指定的文件,请输入:
tar xvfL ar.tar infile - 要从目录中抽取文件并从名为 ar.tar的归档中完成输入列表文件 infile 中指定的文件,请输入:
tar xvRfL ar.tar infile
文件
| 项 | 描述 |
|---|---|
| /dev/rmt0 | 指定缺省磁带设备。 |
| /bin/tar | 指定 tar 命令的符号链接。 |
| /usr/bin/tar | 包含 tar 命令。 |
| /tmp/tar* | 指定临时文件。 |