tar

(0 comments)

tar 最初设计对磁带进行列目录、读和写目录文件,也可以对文件或目录打包为 *.tar 文件。后来发展成为应用最广泛的打包压缩工具,使用参数可以调用 gzip 或者 bzip2 等压缩工具对打包文件进行压缩。

参数说明

功能描述的参数有且只能指定一个。

-A	合并两个 tar 包
-c	创建一个新的 tar 包
-d	比较 tar 包和文件系统的差异
-r	从原来的 tar 包后添加文件
-t	查看 tar 包中的内容
-u	只添加比 tar 包中文件更新的文件
-x	从 tar 包中解出文件

选项

-z	是否经过 gzip 压缩(*.gz)
-j	是否经过 bzip2 压缩(*.bz2)
-v	查看执行过程
-f	使用文件名
-p	使用原档案的属性
-P	可以使用绝对路径
-C	解压缩到指定的目录
-N	比指定日期新的文件才会打包到 tar file 中
-X	备份或解压缩是排除的文件和目录列表
-T	从文件中读取备份或解压缩文件或目录列表
--exclude	排除指定目录或文件

命令行

参数使用时一般不需要加 '-' 前缀,而且加前缀和不加前缀表示的意义是不同的。如果参数需要输入,例如参数 'X' 需要带一个文件,那么一定要将参数 'X' 放在最后,然后在 tar 包后紧跟输入文件名。

tar cvfX docbook.tar Exclude project

另外,还可以将参数单独列出来,参数文件的位置也需要紧跟 tar 包:

tar xvf docbook.tar -C /work
tar cvf docbook.tar -X Exclude project

文件列表

Exclude File

使用 Find 命令生成一个文件列表,然后在备份时排除列表中的文件或目录。

find project ! -type d -print | \
  egrep '/,|%$|~$|\.old$|SCCS|/core$|\.o$|\.orig$' > Exclude
tar cvfX project.tar Exclude project

Include File

使用 Find 命令生成一个文件列表,备份时只备份列表中包含的文件或目录。

find docbook -type f -print | egrep '(xml)$' > Include
tar cvfT docbook.tar Include

压缩时如果要排除一些目录还有简单的方法,就是使用 '–exclude' 参数:

改变输出目录

解包文件时,默认将解包到当前目录。参数 '-C' 可以更改解包的目标目录。

tar xvf project.tar.gz -C /work

参数 '-C' 还可以用于打包时。例如,你想打包当前目录的 docbook 和 /work/project:

tar cvf backup.tar docbook /work/project

这样,打包时会 '/work/project' 会创建从根目录开始的目录结构。如果你希望解包时到 'project' 目录:

tar cvf backup.tar docbook -C /work project

分卷压缩

很多资料上介绍可以通过管道来分卷压缩,如下:

tar cvf doc | split -b 2m

但是,实际上tar新版本并不支持这种方式,变通的方法是先执行压缩,然后再分割:

tar cvf doc.tar.gz doc && split -b 2m doc.tar.gz doc.tar.gz_

split命令的第一个参数是文件,第二个是前缀,压缩出来的文件以doc.tar.gz_为前缀,以两位字母方式编号。

合并分割文件也很简单,如下:

cat doc.tar.gz_* > doc.tar.gz
Currently unrated

Comments

There are currently no comments

New Comment

required

required (not published)

optional

required