使用 tar 打包文件
tar:tape archive(磁盘档案卷,因为最初是为了将文件打包在磁带上,所以叫此名)
由于 tar 命令的历史很久远,所以它的参数的配置方式和其他命令有一些不同。
打包文件和目录
$ tar -cf archived_file.tar file1 dir1 # 将 file1 和 dir1 打包成 archived_file.tar
-c代表创建打包文件(create);-f后必须紧跟打包文件名(filename),所以上面的命令不能写成tar -fc。- 注:打包后的文件是一个新文件,源文件不会被替换。打包后的文件大小大于被打包文件的大小的总和,因为打包时 
tar命令会添加一些额外的信息。 - 打包和解包文件时若加 
-v参数,会显示打包或解包过程的详细信息。 
解包文件
$ tar -xf archived_file.tar # 将 archived_file.tar 解包$ tar -xf archived_file.tar -C target_dir # 将 archived_file.tar 解包到指定目录
其他常用操作
$ tar -tf archived_file.tar # 列出 archived_file.tar 中的文件$ tar -f archived_file.tar --delete filename # 删除 archived_file.tar 中的某个文件$ tar -f archived_file.tar -r filename # 向 archived_file.tar 中添加文件$ tar -f archived_file1.tar -A archived_file2.tar # 将 archived_file2.tar 的内容追加到 archived_file1.tar
使用 gzip 和 bzip2 压缩文件
gzip 是 linux 中最常用的压缩命令。
$ gzip file1 file2 # 将 file1 和 file2 分别压缩为 file1.gz 和 file2.gz,并替换源文件$ gzip -r dir # 递归地压缩 dir 中的所有文件,并替换源文件$ gzip -d file # 解压文件,并替换源文件
- 使用 
-1~-9参数可以指定压缩比率,数字越大,压缩程度越高,压缩越慢,压缩后文件越小。若不指定压缩比率,则默认为6。 gzip只有压缩功能,不提供打包功能,所以gzip的操作对象只能是某个文件,即使使用-r参数,也只是递归地将指定目录中的所有文件单独压缩,并不会连接在一起。bzip2的用法与gzip基本相同,只是采用了不同的压缩算法。
使用 tar 打包并压缩文件
tar 命令提供了一个 -z 参数,可以在打包文件的同时调用 gzip 命令来压缩,产生一个 .tar.gz 文件,相当于先使用 tar 打包,再用 gzip 压缩。
$ tar -czf file.tar.gz file1 dir1 # 将 file1 和 dir1 打包并压缩成 file.tar.gz$ tar -xzf file.tar.gz # 将 file.tar.gz 解压并解包$ tar -tf file.tar.gz # 列出 file.tar.gz 中的文件。这里的 -z 参数可加可不加。
- 与 
-z参数类似的还有-j和-J参数。
如果将上面的-z参数换成-j参数,则使用bzip2压缩,压缩后的文件后缀约定为.tar.bz2;
如果换成-J参数,则使用xz压缩,压缩后的文件后缀约定为.tar.xz。 - 使用 
tar打包并压缩时,压缩过程的压缩比率为默认值,即6。 
各种压缩格式对比
压缩速度:zip > tar.gz > tar.bz2 > rar > tar.xz
压缩比率:zip < tar.gz < tar.bz2 < rar < tar.xz
除了这个格式外,常见的压缩格式还有 .7z,对应的压缩工具是 7z,由于 7z 与 xz 采用了相同的压缩算法,所以压缩后的文件大小基本相同。
zutils 工具包
若想不解压文件而对压缩文件进行某些操作,可以使用 zutils 工具包中的命令:
zcat:将压缩文件的内容显示在终端上(与cat命令类似,只不过操作对象是压缩文件)zgrep:与grep命令类似,只不过操作对象是压缩文件。
注意:zutils 工具包中的工具只适用于被压缩成 zip 或 gz 格式的单个文本文件。
zutils 主要针对 gz 格式文件,类似的还有 bzip2 提供的 bzutils 工具包和 xz 提供的 xzutils。
