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
使用 Find 命令生成一个文件列表,然后在备份时排除列表中的文件或目录。
find project ! -type d -print | \ egrep '/,|%$|~$|\.old$|SCCS|/core$|\.o$|\.orig$' > Exclude tar cvfX project.tar Exclude project
使用 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
Comments
There are currently no comments
New Comment