Unix和类Unix系统上的压缩打包工具,可以将多个档案合併为一个档案,打包后的档案名称亦为“tar”。tar档案格式已经成为POSIX标準,最初是POSIX.1-1988,当前是POSIX.1-2001。本程式最初的设计目的是将档案备份到磁带上(tape archive),因而得名tar。
基本介绍
- 外文名:Tar
- 格式:tar [主选项+辅选项] 档案或目录
- 所属系统:Unix/Linux系统
- 类型:备份档案的可靠方法
版本
常用的tar是自由软体基金会开发的GNU版,稳定版本是1.28,发布于2014年7月27日
同时,它有多个压缩率不同的版本,如tar.xz和tar.gz,前者的压缩率更高,但可能有兼容性问题。
作用
tar命令是Unix/Linux系统中备份档案的可靠方法,几乎可以工作于任何环境中,它的使用许可权是所有用户。
缩写
tar代表未压缩的tar档案。已压缩的tar档案则附加压缩档案的扩展名,如经过gzip压缩后的tar档案,扩展名为“.tar.gz”。由于受到DOS8.3档案名称格式的限制,常使用下列缩写:
- .tgz等价于.tar.gz
- .tbz与tb2等价于.tar.bz2
- .taz等价于.tar.Z
- .tlz等价于.tar.lzma
- .txz等价于.tar.xz
GNU tar的用法
命令格式是:tar 功能 选项 档案
可以将代表功能和选项的单个字母合併;当使用单个字母时,可以不用在字母前面加“-”。某些版本的tar要求严格按照功能字、选项字的顺序,而有些版本的tar并不在意这个顺序。
功能
- -c,--create 创建新的tar档案
- -x,--extract,--get 解开tar档案
- -t,--list 列出tar档案中包含的档案的信息
- -r,--append 附加新的档案到tar档案中
- -u,--update 用已打包的档案的较新版本更新tar档案
- -A,--catenate,--concatenate 将tar档案作为一个整体追加到另一个tar档案中
- -d,--diff,--compare 将档案系统里的档案和tar档案里的档案进行比较
- --delete 删除tar档案里的档案。注意,这个功能不能用于已保存在磁带上的tar档案。
常用选项
- -v,--verbose 列出每一步处理涉及的档案的信息,只用一个“v”时,仅列出档案名称,使用两个“v”时,列出许可权、所有者、大小、时间、档案名称等信息。
- -k,--keep-old-files 不覆盖档案系统上已有的档案。
- -f,--file [主机名:]档案名称 指定要处理的档案名称。可以用“-”代表标準输出或标準输入。
- -P,--absolute-names 使用绝对路径。
- -j,--bzip2 调用bzip2执行压缩或解压缩。注意,由于部分老版本的tar使用-I实现本功能,因此,编写脚本时,最好使用--bzip2。
- -J,--xz,--lzma 调用XZ Utils执行压缩或解压缩。依赖XZ Utils。
- -z,--gzip,--gunzip,--ungzip 调用gzip执行压缩或解压缩。
- -Z,--compress,--uncompress 调用compress执行压缩或解压缩。
主要参数
使用该命令时,主选项是必须要有的,它告诉tar要做什幺事情,辅选项是辅助使用的,可以选用。
主选项
-c 创建新的档案档案。如果用户想备份一个目录或是一些档案,就要选择这个选项。
-r 把要存档的档案追加到档案档案的末尾。例如用户已经做好备份档案,又发现还有一个目录或是一些档案忘记备份了,这时可以使用该选项,将忘记的目录或档案追加到备份档案中。
-t 列出档案档案的内容,查看已经备份了哪些档案。
-u 更新档案。就是说,用新增的档案取代原备份档案,如果在备份档案中找不到要更新的档案,则把它追加到备份档案的最后。
-x 从档案档案中释放档案。
3.2 辅助选项:
-b 该选项是为磁带机设定的,其后跟一数字,用来说明区块的大小,系统预设值为20(20×512 bytes)。
-f 使用档案档案或设备,这个选项通常是必选的。
-k 保存已经存在的档案。例如把某个档案还原,在还原的过程中遇到相同的档案,不会进行覆盖。
-m 在还原档案时,把所有档案的修改时间设定为。
-M 创建多卷的档案档案,以便在几个磁碟中存放。
-v 详细报告tar处理的档案信息。如无此选项,tar不报告档案信息。
-w 每一步都要求确认。
-j 代表使用‘bzip2’程式进行档案的压缩
-J代表调用“xz”程式进行档案的压缩(但在RHEL5的1.53上面无法使用,在RHEL6的2.23上面可以使用)
-z 用gzip来压缩/解压缩档案,加上该选项后可以将档案档案进行压缩,但还原时也一定要使用该选项进行解压缩。
-A,--catenate,--concatenate
将一存档与已有的存档合併
-d,--diff,--compare
比较存档与当前档案的不同之处
--delete
从存档中删除
其他参数
--atime-preserve
不改变转储档案的存取时间
-b,--block-size N
指定块大小为 Nx512 位元组(预设时 N=20)
-B,--read-full-blocks
读取时重组块(???!!!)
-C,--directory DIR
转到指定的目录
--checkpoint
读取存档时显示目录名
-f,--file [HOSTNAME:]F
指定存档或设备 (预设为 /dev/rmt0)
--force-local
强制使用本地存档,即使存在克隆
-F,--info-script F --new-volume-script F
在每个磁碟结尾使用脚本 F (隐含 -M)
-G,--incremental
建立老 GNU 格式的备份
-g,--listed-incremental F
建立新 GNU 格式的备份
-h,--dereference
不转储动态连结,转储动态连结指向的档案。
-i,--ignore-zeros
忽略存档中的 0 位元组块(通常意味着档案结束)
--ignore-failed-read
当遇上不可读档案时不要以非零值退出
-k,--keep-old-files
保存现有档案;从存档中展开时不进行覆盖
-K,--starting-file F
从存档档案 F 开始
-l,--one-file-system
在本地档案系统中创建存档
-L,--tape-length N
在写入 N*1024 个位元组后暂停,等待更换磁碟
-m,--modification-time
当从一个档案中恢复档案时,不使用新的时间标籤
-M,--multi-volume
建立多卷存档,以便在几个磁碟中存放
-N,--after-date DATE,--newer DATE
仅存储时间较新的档案
-o,--old-archive,--portability
以 V7 格式存档,不用 ANSI 格式
-O,--to-stdout
将档案展开到标準输出
-p,--same-permissions,--preserve-permissions
展开所有保护信息
-P,--absolute-paths
不要从档案名称中去除 '/'
--preserve
like -p -s
与 -p -s 相似
-R,--record-number
显示信息时同时显示存档中的记录数
--remove-files
建立存档后删除源档案
-s,--same-order,--preserve-order
为解压至匹配归档排序名称
--same-owner
展开以后使所有档案属于同一所有者
-S,--sparse
高效处理
-T,--files-from F
从档案中得到要展开或要创建的档案名称
--null
读取空结束的档案名称,使 -C 失效
--totals
显示用 --create 参数写入的总位元组数
-v,--verbose
详细显示处理的档案
-V,--label NAME
为存档指定卷标
--version
显示 tar 程式的版本号
-w,--interactive,--confirmation
每个操作都要求确认
-W,--verify
写入存档后进行校验
--exclude FILE
不把指定档案包含在内
-X,--exclude-from FILE
从指定档案中读入不想包含的档案的列表
-y,--bzip2,--bunzip2
用 bzip2 对存档压缩或解压
-Z,--compress,--uncompress
用 compress 对存档压缩或解压
-z,--gzip,--ungzip
用 gzip 对存档压缩或解压
--use-compress-program PROG
用 PROG 对存档压缩或解压 ( PROG 需能接受 -d 参数)
--block-compress
为便于磁碟存储,按块记录存档
-[0-7][lmh]
指定驱动器和密度[低中高]
例如:
- 将当前目录下所有.txt档案打包并压缩归档到档案this.tar.gz,我们可以使用
tar zcvf this.tar.gz ./*.txt
2.将当前目录下的this.tar.gz中的档案解压到当前目录我们可以使用
tar xzvf this.tar.gz ./
在windows下支持TAR格式的软体有WinMount等。
套用示例
tar -cvf home_backup.tar /home
可以将/home目录下的所有档案打包入home_backup.tar档案中。理解这个命令时,请注意“home_backup.tar”实际上是-f选项的参数。tar默认记录相对路径,即使给出的是绝对路径,也会自动将代表根目录的“/”去掉,所以,在这个例子中,使用“/home”和“home”是相同的。要想使用绝对路径,请加上“P”选项,但一般不推荐使用绝对路径,原因之一是可能导致tar炸弹攻击。
cd /home tar -cvf home_backup.tar *
这也是一种製作备份的方法,但是不推荐这样做。因为tar在默认解压时,会将档案直接输出到当前目录下,而不会新建并输出到一个名为home的子目录,令到当前目录显得很凌乱。这也是一种形式的tar炸弹攻击。
tar -tf home_backup.tar
列出home_backup.tar档案里已被打包的档案。此时仅仅显示档案名称。如果加上“v”,则能列出许可权、所有者、大小、时间、档案名称等信息。为防止tar炸弹攻击,应该养成解压前查看tar档案内容的好习惯。
tar -xvf home_backup.tar
在当前目录下解压home_back.tar。解压后的档案,其访问许可权得到保留;其所有者是执行tar命令的用户,如果tar的执行者是root,则所有者是档案原来的所有者。 解压前,最好先查看tar档案的内容,以决定是否需要新建一个临时子目录安放。
tar -xvf home_backup.tar home/test.c
指定解压出test.c这个档案。解压过程中会自动创建home这个子目录。