使用 tar 归档

        tar 命令可以归档文件。它最初是设计用来将数据存储在磁带上,因此其名字也来源于Tape 
 ARchive。 tar 可以将多个文件和文件夹打包为单个文件,同时还能保留所有的文件属性,如所
 有者、权限等。由 tar 创建的文件通常称为tarball。
  
1. 用 tar 创建归档文件:
tar -cf output.tar [SOURCES] - 选项 -c 表示创建新的归档文件。
- 选项 -f 表示归档文件名,该选项后面必须跟一个文件名称:
2. 列出归档文件中所包含的文件
选项 -t 可以列出归档文件中所包含的文件:
 tar -tf archive.tar 3. 输出中加入更多的细节信息
- 选项 -v 或 -vv 参数可以在命令输出中加入更多的细节信息。
 
这个特性叫作“冗长模式(v,verbose)”或“非常冗长模式(vv,very verbose)”。
注意:文件名必须紧跟在 -f 之后出现,而且 -f 应该是选项中的最后一个。假如你
 希望使用冗长模式,应该像这样写:
tar -cvf output.tar file1 file2 file3 folder1 ..  
         tar 命令可以接受一组文件名或是通配符(如 *.txt ),以此指定需要进行归档的源文件。命
 令执行完毕后,所有的源文件都会被归入指定的归档文件中。 
4. 向归档文件中追加文件
- 
选项 -r 可以将新文件追加到已有的归档文件末尾 
tar -rvf original.tar new_file 5. 从归档文件中提取文件或目录
- 选项 -x 可以将归档文件的内容提取到当前目录
tar -xf archive.tar使用 -x 时, tar 命令将归档文件中的内容提取到当前目录。我们也可以用选项 -C 来指定将文
 件提取到哪个目录:
tar -xf archive.tar -C /path/to/extraction_directory该命令将归档文件的内容提取到指定目录中。它提取的是归档文件中的全部内容。我们可以通过
 将文件名作为命令行参数来提取特定的文件:
tar -xvf file.tar file1 file4 上面的命令只提取file1和file4,忽略其他文件。
6. 在tar中使用stdin和stdout
        在归档时,我们可以将 stdout 指定为输出文件,这样另一个命令就可以通过管道来读取(作
 为 stdin )并进行其他处理。 当通过安全shell(Secure Shell,SSH)传输数据时,这招很管用。例如:
tar cvf - files/ | ssh user@example.com "tar xv -C Documents/" 7. 拼接两个归档文件
我们可以用选项 -A 合并多个 tar 文件。假设我们现在有两个 tar 文件:file1.tar和file2.tar。下面的命令可以将file2.tar的内容合并到file1.tar中:
tar -Af file1.tar file2.tar8. 通过检查时间戳来更新归档文件中的内容
        追加选项( -r )可以将指定的任意文件加入到归档文件中。如果同名文件已经存在,那么归
 档文件中就会包含两个名字一样的文件。我们可以用更新选项 -u 指明:只添加比归档文件中的同
 名文件更新(newer)的文件。
 tar -uf archive.tar filea仅当filea自上次被加入archive.tar后出现了改动才对其执行追加(变更)操作。
9. 比较归档文件与文件系统中的内容
选项 -d 可以将归档中的文件与文件系统中的文件作比较。这个功能能够用来确定是否需要创建新的归档文件。
tar -df archive.tar10. 从归档中删除文件
        可以用 --delete 选项从归档中删除文件
  
tar -f archive.tar --delete file1 file2 .. 或者:
tar --delete --file archive.tar [FILE LIST] 11. 压缩tar归档文件
        tar 命令默认只归档文件,并不对其进行压缩。不过 tar 支持用于压缩的相关选项。压缩能
 够显著减少文件的体积。归档文件通常被压缩成下列格式之一。 
- gzip格式: file.tar.gz 或 file.tgz 。
- bzip2格式: file.tar.bz2 。
- Lempel-Ziv-Markov格式: file.tar.lzma 。
不同的 tar 选项可以用来指定不同的压缩格式:
- -j 指定bunzip2格式;
- -z 指定gzip格式;
- --lzma 指定lzma格式。
        不明确指定上面那些特定的选项也可以使用压缩功能。 tar 能够基于输出或输入文件的扩
 展名来进行压缩。为了让 tar 支持根据扩展名自动选择压缩算法,使用 -a 或 --auto-compress
 选项: 
tar -acvf archive.tar.gz filea fileb filectar -tf archive.tar.gz12. 在归档过程中排除部分文件
选项 --exclude [PATTERN] 可以将匹配通配符模式的文件排除在归档过程之外。 例如,排除所有的.txt文件:
tar -cf arch.tar * --exclude "*.txt" 注意: 模式应该使用双引号来引用,避免shell对其进行扩展。 
 也可以将需要排除的文件列表放入文件中,同时配合选项 -X : 
$ cat list 
filea 
fileb $ tar -cf arch.tar * -X list 这样就把filea和fileb排除了。
13. 排除版本控制目录
         tar 文件的用处之一是用来分发源代码。很多源代码都是使用版本控制系统进行维护的,如
 subversion、Git、mercurial、CVS。版本控制系统中的代码目录通常包含一些特殊目录,如.svn或.git。这些目录由版本控制系统负责管理,对于开发者之外的用户并没有什么用。
 因此无需将其包含在分发给用户的 tar 文件内。 
- tar 的选项 --exclude-vcs 可以在归档时排除版本控制相关的文件和目录。例如:
tar --exclude-vcs -czvvf source_code.tar.gz eye_of_gnome_svn 14. 打印总字节数
- 选项 -totals 可以打印出归档的总字节数。
注意,这是实际数据的字节数。如果使用了压缩
选项,文件大小会小于总的归档字节数:
tar -cf arc.tar * --exclude "*.txt" --totals 


