8.16 用tar归档文件

-cf

记住,tar不能进行压缩,只进行归档(顺便提一下,结果生成的归档文件就是tarball)。实际上tar是使用其他程序(比如gzipbzip2)来压缩它要创建的归档文件。即使你不打算压缩tarball,也仍然可以用同样的基本选项以同样的方式来创建它:-c(或--create)选项告诉tar正在创建一个tarball,而-f(或--file)选项则用于为tarball指定文件名。

  1. $ ls -l
  2. scott scott 102519 job.txt
  3. scott scott 1236574 moby-dick.txt
  4. scott scott 508925 paradise_lost.txt
  5. $ tar -cf moby.tar *.txt
  6. $ ls -l
  7. scott scott 102519 job.txt
  8. scott scott 1236574 moby-dick.txt
  9. scott scott 1853440 moby.tar
  10. scott scott 508925 paradise_lost.txt

这里需要注意两点。首先,把job.txtmoby-dick.txtparadise_ lost.txt的大小加起来,结果是1848018 B。与moby.tar的大小相比,你会发现tar ball大了5422 B。记住,tar只是归档工具,而不是压缩工具,所以结果至少与把各个文件加在一起的总大小相同,还要加上一些用于保存tar ball内部文件内容的开销。其次,与gzipbzip2不一样的是,tar会保留原始的文件。考虑到tar命令的背景只是一个备份工具,这一点也就不足为奇了。

tar命令真正令人称道的地方是,它可以用于压缩整个目录结构,所以能用它来批量归档大量的文件和子目录。

  1. $ ls -lF
  2. drwxr-xr-x scott scott 168 moby-dick/
  3. $ ls -l moby-dick/*
  4. scott scott 102519 moby-dick/job.txt
  5. scott scott 1236574 moby-dick/moby-dick.txt
  6. scott scott 508925 moby-dick/paradise_lost.txt
  7. moby-dick/bible:
  8. scott scott 207254 genesis.txt
  9. scott scott 102519 job.txt
  10. $ tar -cf moby.tar moby-dick/
  11. $ ls -lF
  12. scott scott 168 moby-dick/
  13. scott scott 2170880 moby.tar

tar命令永远都会有用,原因显而易见:它真的太棒了!把tar和压缩工具结合起来以后,它的功能会变得更加强大,下一节就介绍这种用法。