1.命令作用
命令tar将许多文件一起保存到单个磁带或磁盘存档中,并且可以从存档中恢复单个文件(GNU 'tar' saves many files together into a single tape or disk archive, and can restore individual files from the archive.)。
2.命令语法
Usage: tar [OPTION...] [FILE]...
2.简单举例
tar -cf archive.tar foo bar,将文件foo和bar,创建一个tar格式的归档(archive.tar)。
tar -tvf archive.tar,详细列出archive.tar中的所有文件。
tar -xf archive.tar,从archive.tar中提取所有文件。
3.参数详解
OPTION:
①主要运行方式:
- -A, --catenate, --concatenate,将tar文件附加到另一个tar文件(归档文件)中,需与-f 参数一起使用;仅可一个一个tar文件附加,不可多个tar文件一次性附加;
- -c, --create,创建一个新的归档文件,需与-f 参数一起使用;
- -d, --diff, --compare,查找归档中文件和系统上解压后的文件之间的差异,系统上解压后的文件多了不会输出,如果解压后的文件少了则会输出提示,需与-f、-v 参数一起使用;
- --delete,从存档中删除文件或者目录,删除的文件和目录可以使用tar -tf 查看;
- -r, --append,将文件追加到存档文件末尾,需与-f 参数一起使用;
- -t, --list,列出存档的内容列表,需与-f 参数一起使用;
- --test-label,测试归档卷标签并退出,用于自动化脚本验证归档的存在和卷标是否符合要求;
- -u, --update,只追加比归档文件中比列表文件更新的文件,需与-f、-v 参数一起使用;使用-tf 查看更新后的归档文件列表,是追加方式,即列表中存在多个不同版本但相同名称的文件;注意解压后仅只保留版本最新的文件;
- -x, --extract, --get,从存档中提取全部文件,或者指定文件名称进行提取,通常与-f、-v 参数一起使用
②操作修饰符:
- --check-device,在创建或增量存档时,检查设备(默认)
- -g, --listed-incremental=FILE,处理新GNU格式的增量归档,需要保留所有的归档,增量归档解压需要指定快照文件,全量归档加多个增量归档可以进行备份;
- -G, --incremental,处理旧GNU格式增量备份,与-g用法类似
- --ignore-failed-read,解压归档时,当归档中有不可读的文件(归档存在损坏情况),不会因为非零退出,而是继续提取归档中获取文件,对损坏的归档解压场景很有用;默认情况下遇到错误直接退出;简而言之即忽略错误继续解压,默认遇到错误直接退出;
- --level=NUMBER,指定全量归档的增量归档文件的转储级别,全量为--level=0,增量依次为1、2、3、...,通常与-g参数一起使用;
- -n, --seek,归档可查找,tar -cn ...tar显示tar文件中所有文件内容;
- --no-check-device,在创建或增量归档时,不检查设备;
- --no-seek,归档不可查;
- --occurrence[=NUMBER],只处理存档中每个文件的第number次出现;此选项仅在与子命令---delete、--diff、--extract或--list一起使用时有效,并且当在命令行上或通过-T选项给出文件列表时有效;NUMBER默认为1
- --sparse-version=MAJOR[.MINOR],设置要使用的稀疏格式的版本(暗含--sparse)
- -S, --sparse,有效地处理稀疏文件
③输入控制覆盖寄存器:
- -k, --keep-old-files,提取时不提取系统中已存在的现有文件,将其视为错误
- --keep-directory-symlink,提取时保留到目录的现有符号链接,tar默认会保留符号链接,与--dereference参数相反
- --keep-newer-files,提取时不提取系统中现有文件,比归档中文件版本新,或者与归档中文件版本一致的文件;即如果归档中有新版本的文件会被提取覆盖系统中的现有文件;
- --no-overwrite-dir,提取归档时,保留已存在目录的元数据(比如用户和读写权限);只有系统上存在多层目录时才有效,且对最内层目录无效;可使用stat dir查看,其中Access、Modify、Change时间会有所变化;
- --overwrite,提取归档时,覆盖已存在的文件;
- --overwrite-dir,提取归档时,覆盖已存在目录的元数据(默认),与--no-overwrite-dir效果相反;
- --recursive-unlink,在提取目录之前去除目录递归(删除目录文件夹),无明显效果,与默认差不多;
- --remove-files,将文件添加到存档后删除文件;同样适用于目录归档
- --skip-old-files,提取时不要替换现有文件,静默地跳过它们;与-k类似;
- -U, --unlink-first,在对每个文件进行提取之前先删除它;
- -W, --verify,在写入归档文件后尝试验证它;
④选择输出流:
- --ignore-command-error,忽略命令错误而导致执行退出;主要处理外部压缩工具gzip、bzip2时的错误怎么处理,启动参数会跳过错误继续执行,未启动参数报错后立即终止压缩/解压;
- --no-ignore-command-error,将非零退出视为错误,与--ignore-command-error相反;
- -O, --to-stdout,将文件提取到标准输出
- --to-command=COMMAND,管道提取文件到另一个程序
⑤文件属性的处理:
- --atime-preserve[=METHOD],保留对转储文件的访问时间,或者通过恢复读取后的时间(METHOD='replace',默认)或不首先设置时间(METHOD='system');测试无效果;
- --delay-directory-restore,将解压目录的修改次数和权限设置延迟到解压结束,无效果;
- --group=NAME,创建归档时,强制NAME作为添加文件的组权限名称;
- --mode=CHANGES,强制(符号)模式,对新增文件的更改;无法使用,没说明模式可设置哪些参数;
- --mtime=DATE-OR-FILE,创建归档时,设置归档中文件的mtime为DATE-OR-FILE;
- -m, --touch,不提取文件修改时间;
- --no-delay-directory-restore,取消--delay-directory-restore选项的效果,无效果;
- --no-same-owner,按照自己的方式提取文件,即强制文件归属当前用户(默认为普通用户);
- --no-same-permissions,在从归档文件中提取权限时应用用户的umask(默认为普通用户);
- --numeric-owner,始终使用数字作为用户/组名;
- --owner=NAME,创建归档时,强制NAME作为添加文件的所有者;
- -p, --preserve-permissions, --same-permissions,提取有关文件权限的信息(默认为超级用户),测试无效果;
- --preserve,和-p和-s一样,提示已经不再使用;
- --same-owner,尝试提取与存档中存在的所有权相同的文件(默认为超级用户)
- -s, --preserve-order, --same-order,成员参数的列出顺序与存档中的文件相同,测试无效果;
⑥扩展文件属性的处理(通常不会使用到):
- --acls,启用POSIX acl支持
- --no-acls,关闭POSIX acl支持
- --no-selinux,禁用SELinux上下文支持
- --no-xattrs,禁用扩展属性支持
- --selinux,启用SELinux上下文支持
- --xattrs,启用扩展属性支持
- --xattrs-exclude=MASK,指定xattr键的排除模式
- --xattrs-include=MASK,为xattr键指定包含模式
⑦设备选择和切换:
- -f, --file=ARCHIVE,使用归档文件或归档设备
- --force-local,归档文件是本地的,即使它有冒号;通常冒号是远程文件的书写格式,使用该参数,强制将带有冒号的文件名称视为本地文件;
- -F, --info-script=NAME, --new-volume-script=NAME,在每个磁带的末尾运行脚本(暗含-M)
- -L, --tape-length=NUMBER,写入NUMBER * 1024字节后更改磁带
- -M, --multi-volume,创建/列表/提取多卷存档
- --rmt-command=COMMAND,使用给定的rmt命令而不是rmt
- --rsh-command=COMMAND,使用远程命令代替rsh
- --volno-file=FILE,使用/update文件中的卷号
⑧装置块Device blocking:
- -b, --blocking-factor=BLOCKS,BLOCKS x每条记录512字节
- -B, --read-full-records,读取时重新阻塞(4.2BSD管道)
- -i, --ignore-zeros,忽略归档中的归零块(意味着EOF)
- --record-size=NUMBER,每条记录的字节数,512的倍数
⑨档案格式选择:
- -H, --format=FORMAT,创建给定格式的存档;FORMAT是下列选项之一:
- gnu GNU tar 1.13.x format(默认格式,支持长文件名、大文件及扩展元数据)
- oldgnu GNU format as per tar <= 1.12
- pax POSIX 1003.1-2001 (pax) format
- posix same as pax(跨平台兼容性好,但功能限制多)
- ustar POSIX 1003.1-1988 (ustar) format
- v7 old V7 tar format
- --old-archive, --portability,与--format=v7相同
- --pax-option=keyword[[:]=value][,keyword[[:]=value]]...,控制pax的关键字,需要与--format=pax一起使用,keyword=value可设置为"charset=UTF-8"、"mtime:=%s.%N"、"delete=uid"、"delete=gid"
- --posix,与--format=posix相同
- -V, --label=TEXT,创建归档时定义一个标签为TEXT;在查看归档内容(-t)和提取归档时显示标签TEXT内容;
⑩压缩选项:
- -a, --auto-compress,使用归档后缀来确定压缩程序
- -I, --use-compress-program=PROG,通过PROG压缩方式归档(必须接受-d),简言之通过-l指定压缩方式,PROG可取值bzip2、xz、lzip;
- -j, --bzip2,通过bzip2压缩归档文件,归档命名后缀为.tar.bz2
- -J, --xz,通过xz压缩归档文件,归档命名后缀为.tar.xz
- --lzip,通过lzip压缩归档文件,归档命名后缀为.tar.lz;测试报错
- --lzma,通过lzma压缩归档文件,归档命名后缀为.tar.lzma;测试报错
- --lzop,通过lzma压缩归档文件,归档命名后缀为.tar.lzo
- --no-auto-compress,不使用归档后缀来确定压缩程序,与-a参数相反
- -z, --gzip, --gunzip, --ungzip,通过gzip压缩归档文件,归档命名后缀为.tar.gz
- -Z, --compress, --uncompress,通过compress压缩归档文件,归档命名后缀为.tar.Z
⑪本地文件选择:
- --add-file=FILE,将给定的文件添加到存档(如果其名称以破折号开头,则很有用);测试发现不是追加,是替换效果
- --backup[=CONTROL],删除前备份,选择版本控制;提取压缩归档时,系统已存在文件进行版本控制和备份,CONTROL可取值有none / off(不备份直接覆盖,默认值)、numbered / t(创建带数字的后缀备份)、nil / existing(如之前有带数字的后缀就继续数字备份,否者使用简单后缀)、never / simple(简单后缀)
- -C, --directory=DIR,更改为目录DIR,而不是默认的当前目录
- --exclude=PATTERN,排除文件,以PATTERN形式给出(创建/提取归档都适用)
- --exclude-backups,排除备份和锁定文件
- --exclude-caches,排除包含CACHEDIR的目录内容。TAG,除了标记文件本身
- --exclude-caches-all,排除包含CACHEDIR.TAR的目录
- --exclude-caches-under,排除包含CACHEDIR.TAR目录下的所有内容
- --exclude-tag=FILE,排除包含FILE的目录的内容,除了FILE本身
- --exclude-tag-all=FILE,排除包含FILE的目录
- --exclude-tag-under=FILE,排除包含FILE的目录下的所有内容
- --exclude-vcs,排除版本控制系统目录;归档时会自动跳过.git .svn .hg等版本控制目录及其目录下所有的文件和目录
- -h, --dereference,创建归档时,将软链接转储为它们指向的实际文件;即软链接会变成实际的文件或者目录;
- --hard-dereference,创建归档时,将硬链接转储为它们所引用的文件;即硬链接会变成实际的文件或者目录;
- -K, --starting-file=MEMBER-NAME,提取归档时,从MEMBER-NAME开始提取;MEMBER-NAME名称可以通过tar -tf查看,-tf查看时也可以使用该参数;
- --newer-mtime=DATE,仅比较数据更改时的日期和时间
- --no-null,-T参数使用时,指定文件命令列表的分隔方式,该方式为换行\n,为默认值


4492

被折叠的 条评论
为什么被折叠?



