使用 tar 打包文件

tar:tape archive(磁盘档案卷,因为最初是为了将文件打包在磁带上,所以叫此名)
由于 tar 命令的历史很久远,所以它的参数的配置方式和其他命令有一些不同。

打包文件和目录

  1. $ tar -cf archived_file.tar file1 dir1 # 将 file1 和 dir1 打包成 archived_file.tar
  • -c 代表创建打包文件(create);
  • -f 后必须紧跟打包文件名(filename),所以上面的命令不能写成 tar -fc
  • 注:打包后的文件是一个新文件,源文件不会被替换。打包后的文件大小大于被打包文件的大小的总和,因为打包时 tar 命令会添加一些额外的信息。
  • 打包和解包文件时若加 -v 参数,会显示打包或解包过程的详细信息。

解包文件

  1. $ tar -xf archived_file.tar # 将 archived_file.tar 解包
  2. $ tar -xf archived_file.tar -C target_dir # 将 archived_file.tar 解包到指定目录

其他常用操作

  1. $ tar -tf archived_file.tar # 列出 archived_file.tar 中的文件
  2. $ tar -f archived_file.tar --delete filename # 删除 archived_file.tar 中的某个文件
  3. $ tar -f archived_file.tar -r filename # 向 archived_file.tar 中添加文件
  4. $ tar -f archived_file1.tar -A archived_file2.tar # 将 archived_file2.tar 的内容追加到 archived_file1.tar

使用 gzipbzip2 压缩文件

gzip 是 linux 中最常用的压缩命令。

  1. $ gzip file1 file2 # 将 file1 和 file2 分别压缩为 file1.gz 和 file2.gz,并替换源文件
  2. $ gzip -r dir # 递归地压缩 dir 中的所有文件,并替换源文件
  3. $ gzip -d file # 解压文件,并替换源文件
  • 使用 -1 ~ -9 参数可以指定压缩比率,数字越大,压缩程度越高,压缩越慢,压缩后文件越小。若不指定压缩比率,则默认为 6
  • gzip 只有压缩功能,不提供打包功能,所以 gzip 的操作对象只能是某个文件,即使使用 -r 参数,也只是递归地将指定目录中的所有文件单独压缩,并不会连接在一起。
  • bzip2 的用法与 gzip 基本相同,只是采用了不同的压缩算法。

使用 tar 打包并压缩文件

tar 命令提供了一个 -z 参数,可以在打包文件的同时调用 gzip 命令来压缩,产生一个 .tar.gz 文件,相当于先使用 tar 打包,再用 gzip 压缩。

  1. $ tar -czf file.tar.gz file1 dir1 # 将 file1 和 dir1 打包并压缩成 file.tar.gz
  2. $ tar -xzf file.tar.gz # 将 file.tar.gz 解压并解包
  3. $ 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,由于 7zxz 采用了相同的压缩算法,所以压缩后的文件大小基本相同。

zutils 工具包

若想不解压文件而对压缩文件进行某些操作,可以使用 zutils 工具包中的命令:

  • zcat:将压缩文件的内容显示在终端上(与 cat 命令类似,只不过操作对象是压缩文件)
  • zgrep:与 grep 命令类似,只不过操作对象是压缩文件。

注意:zutils 工具包中的工具只适用于被压缩成 zipgz 格式的单个文本文件

zutils 主要针对 gz 格式文件,类似的还有 bzip2 提供的 bzutils 工具包和 xz 提供的 xzutils