tar可以用来归档文件,可以利用这个命令将多个文件和文件夹保存为一个单个文件,同时保存所有的文件属性,如所有者,权限等
这个也是UNIX操作系统默认包括的tar,用法很简单,而且包含了可移植性,我们看一下命令的用法
tar包含一个参数列表 A c d r u x f v
使用tar对文件进行归档
tar -cf output.tar [sources]
tar -cf output.tar file1 file2 file3 folder1
-c代表了创建文件 -f代表指定文件名
我们必须在f后面跟了文件名称
我们将其归档为了单个文件 output.tar
如果需要压缩很多的文件的话,可以使用append选项更加方便
我们需要向已经存在的归档文件添加一个文件,可以使用
tar -rvf original.tar new file
我们需要列出已经归档的文件中的内容
可以使用
tar -tf test.tar
如果需要获取归档的文件的更多信息,可以使用-v或者-vv选项,称为verbose,可以再终端找那个输出更为详细的信息
tar -tvvf test.tar
提取文件
tar -xf test.tar
-x表示提取 exact
使用-x 时候,tar命令会默认提取到当前,我们可以使用选项-C来指明到哪个目录下
tar -xf test.tar -C /usr/local/hello
这个命令会将归档的文件的内容提取到指定的目录中,提取了全部文件
如果想要指定文件,可以后面加上特殊的名称
tar -xvf test.tar 1test.sh if.sh
1test.sh
if.sh
tar中使用stdin和stdout
我们可以将其进行转入转出
mkdir ~/destination
tar -cf – file1 file2 file3 | tar -xvf – – C ~/desctination
我们首先进行了归档,然后提取到了 ~/destination
如何拼接两个归档文件
使用-A可以将多个tar文件进行合并
我们有两个tar的文件,file1.tar file2.tar
我们可以将file1.tar合并到file2.tar
tar -Af file2.tar file1.tar
我们检查时间戳来更新归档文件中的内容
我们可以将制定的任意文件加入到归档的文件中,如果同名文件已经存在,那么结果就是在归档文件中包含了两个同名文件,我们可以使用-u指明,只有更新了才会添加
tar -uvvf test.tar filea
如果我们新加入了filea和归档文件的filea有着相同的时间戳,那么不会进行更改的
如果追加的文件比tar中的更加新,那么会执行追加操作
比较归档文件与文件系统中的内容
我们可以利用判断,判断归档文件中的文件和文件系统中的文件是否有差别
选项-d可以打印出两者的差别
tar -df test.tar file1 file2
从归档的文件中删除文件
我们可以使用 –delete选项来从给定的文件中删除文件
tar -f test.tar — delete file1
或者使用
tar –delete –file test.tar file1
这种方式进行删除文件
压缩tar归档文件
tar命令可以对文件进行归档,但是并没有进行压缩,所以我们需要对文件进行压缩,降低文件格式的大小,常见的压缩格式有 .gz .bz2 .lzma .lzo
不同的tar选项可以指定不同的压缩格式
-j 指定bunzip2格式
-z 指定gzip格式
–lzma指定lzma格式
tar还支持根据选定的-f文件名,自动的进行压缩,使用 -a 或者 –auto -compress选项
从归档中排除部分文件
我们可以指定从归档之中排除某些文件, –exclude[PATTERN] 排除匹配的通配符文件
排除所有的txt
tar -cf arch.tar * –exclude “*.txt”
或者将需要排除的文件目录放入文件汇总
配合选项 -X
cat list
filea
fileb
tar -cf arch.tar* -X list
或者排除一个目录
比如在git中,我们需要排除一些管理目录,需要使用对应的–exclude-vcs选项
tar –exclude-vcs -czvff source_code.tar.gz eye_of_gnome_svn
获取归档的总字节
有时候我们需要打印出归档了多少字节,使用 –totals可以打印出归档字节数
tar -cf arc.tar * –exclude “*.txt” –totals