• 处理「打包」的应用一般为「tar」
  • 处理「压缩」的应用一般为「gzip」或者「bzip2」
  • 一般「tar」文件代表的是打包好但是没压缩的文件
  • 打包好且压缩的文件采用双后缀名格式如「.tar.gz」、「.tgz」、「.tar.bz2」

tar 打包

假设想把 /root/ssl 这个目录打包到/root目录下,命名为 bak.tar
-c 表示创建一个打包文件
-f 表示目标文件名

sudo tar -cf /root/bak.tar /root/ssl

看一下打包后的文件信息

ls -lh /root

返回:
total 16K
-rw-r--r-- 1 root root 10K Nov 13 13:11 bak.tar

PS:此处进行 tar 操作时因为涉及到 /etc 目录有权限问题,所以使用普通用户操作时需要加上 sudo 提权

gzip 或 bzip2 压缩

在打包完成后可以分别使用 gzip 和 bzip2 进行压缩。但其实 tar 已经集成了这个功能,可以在打包的时候连带压缩。

tar 压缩
使用 gzip 压缩,注意文件名要加上双后缀名

sudo tar -czf /root/bak.tar.gz /root/ssl

属于 bzip2 压缩,注意文件名要加上双后缀名

sudo tar -cjf /root/bak.tar.bz2 /root/ssl

tar 解压

有压缩就有解压,打包压缩使用 -z 反过来解压则使用 -x。

在当前目录中解压 bak.tar

tar -xf bak.tar

在当前目录中解压 bak.tar.gz

tar -xzf bak.tar.gz

在当前目录中解压 bak.tar.bz2

tar -xjf bak.tar.bz2

当然还可以指定解压到的目录
在当前目录创建一个名为 bak 的文件夹

mkdir bak

使用 -C 参数(注意是大小)指定目录

tar -xzf bak.tar.gz -C bak

同样算法但不同后缀名
其实为了简化和传播, gzip 和 bzip2还有单后缀名格式。如下:

  • .tar.gz > .tgz
  • .tar.bz2 > .tbz2

更智能的 -a 参数
对于 gzip 的 -z 参数和 bzip2 的 -j 参数,其参数名和自身程序名没有太大关联,让人觉得不直观不好记。
-a 参数可以智能的根据后缀名自动处理。

压缩 gzip

sudo tar -caf /root/bak.tar.gz /root/ssl
sudo tar -caf /root/bak.tgz /root/ssl

压缩 bzip2

sudo tar -caf /root/bak.tar.bz2 /root/ssl
sudo tar -caf /root/bak.tbz2 /root/ssl

解压

tar -xaf bak.tar.gz
tar -xaf bak.tbz2