8.16 用tar归档文件
-cf
记住,tar
不能进行压缩,只进行归档(顺便提一下,结果生成的归档文件就是tarball)。实际上tar
是使用其他程序(比如gzip
或bzip2
)来压缩它要创建的归档文件。即使你不打算压缩tarball,也仍然可以用同样的基本选项以同样的方式来创建它:-c
(或--create
)选项告诉tar
正在创建一个tarball,而-f
(或--file
)选项则用于为tarball指定文件名。
$ ls -l
scott scott 102519 job.txt
scott scott 1236574 moby-dick.txt
scott scott 508925 paradise_lost.txt
$ tar -cf moby.tar *.txt
$ ls -l
scott scott 102519 job.txt
scott scott 1236574 moby-dick.txt
scott scott 1853440 moby.tar
scott scott 508925 paradise_lost.txt
这里需要注意两点。首先,把job.txt
、moby-dick.txt
和paradise_ lost.txt
的大小加起来,结果是1848018 B。与moby.tar
的大小相比,你会发现tar ball大了5422 B。记住,tar
只是归档工具,而不是压缩工具,所以结果至少与把各个文件加在一起的总大小相同,还要加上一些用于保存tar ball内部文件内容的开销。其次,与gzip
和bzip2
不一样的是,tar
会保留原始的文件。考虑到tar
命令的背景只是一个备份工具,这一点也就不足为奇了。
tar
命令真正令人称道的地方是,它可以用于压缩整个目录结构,所以能用它来批量归档大量的文件和子目录。
$ ls -lF
drwxr-xr-x scott scott 168 moby-dick/
$ ls -l moby-dick/*
scott scott 102519 moby-dick/job.txt
scott scott 1236574 moby-dick/moby-dick.txt
scott scott 508925 moby-dick/paradise_lost.txt
moby-dick/bible:
scott scott 207254 genesis.txt
scott scott 102519 job.txt
$ tar -cf moby.tar moby-dick/
$ ls -lF
scott scott 168 moby-dick/
scott scott 2170880 moby.tar
tar
命令永远都会有用,原因显而易见:它真的太棒了!把tar
和压缩工具结合起来以后,它的功能会变得更加强大,下一节就介绍这种用法。