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

图片

发表评论

邮箱地址不会被公开。 必填项已用*标注