通常在Windows系统上,打包和压缩是一个软件就完成的,但是在Linux系统上,是两个软件完成的。打包在早期的Linux系统上的备份命令,打包之后再对其进行压缩。

Linux的备份压缩

  • 最早的Linux备份介质是磁带,使用的命令是tar
  • 可以对打包后的磁带文件进行压缩存储,压缩的命令是gzip或者bzip2
  • 经常使用的扩展名是

    • .tar.gz
    • .tar.bz2
    • .tgz(对.tar.gz的缩写)
    • .tbz2(对.tar.bz2的缩写)

      打包命令

  • 使用命令tar进行打包

  • 常用参数
    • -c 打包,—create 建立新的存档
    • -x 解包,—extract 从存档展开文件(提取)
    • -f 指定操作类型为文件,—file 指定存档或设备

假如,我们对/etc目录仅进行打包的操作,打包后的文件命名为etc_bak.tar放在/tmp目录下,可以执行命令:

  1. [root@learnlinux learnLinux]# tar cf /tmp/etc_bak.tar /etc
  2. tar: 从成员名中删除开头的“/”
  3. [root@learnlinux learnLinux]#

注意:

  • tar命令的早期是支持BSD风格的,后期随着版本的更新慢慢支持了UNIX风格。
    • UNIX风格,必须带一个“-”
    • BSD风格,不带“-”
    • GNU风格,带两个“-”
  • 提示tar: 从成员名中删除开头的“/”,是为了帮助我们可以将文件解压到任意文件夹中。

一般我们对 .tar 包进行压缩的时候,通常使用gzip或者bzip2进行压缩,但是呢,tar命令其实已经将这两个命令集成进去了,所以我们一般在进行打包压缩的时候,通常使用下面的两种方式一步完成:

  1. [root@learnlinux tmp]# tar czf /tmp/etc_bak.tar.gz /etc
  2. tar: 从成员名中删除开头的“/”
  3. [root@learnlinux tmp]# tar cjf /tmp/etc_bak.tar.bz2 /etc
  4. tar: 从成员名中删除开头的“/”
  5. [root@learnlinux tmp]#

注意:

  • 使用两个扩展名作为后缀.tar.gz的方式,其实是在告诉人们这个文件进行了打包并且进行了压缩。

使用gzip或者bzip2这两种方式进行压缩,区别就在于bzip2的压缩比例更高,但是时间更慢;gzip的压缩比例相对更低,但是时间更快。我们可以通过以下方式进行比较验证:

  1. [root@learnlinux tmp]# ls -lh etc_bak.tar*
  2. -rw-r--r--. 1 root root 33M 2 16 15:42 etc_bak.tar
  3. -rw-r--r--. 1 root root 9.3M 2 16 16:07 etc_bak.tar.bz2
  4. -rw-r--r--. 1 root root 11M 2 16 16:06 etc_bak.tar.gz
  5. [root@learnlinux tmp]#

解压缩

经过上面的学习,我们可以了解到:

  • 可以使用gzipbzip2命令单独操作
  • 通常和tar命令配合操作
  • 常用参数
    • -z gzip格式压缩和解压缩
    • -j bzip2格式压缩和解压缩
    • -C 解压到指定目录,—directory DIR

假如我们现在要对网络上下载的文件进行解压缩的话,以上面的文件为例,将etc_bak.tar.gz和etc_bak.bz2解压到/root下,相应的命令操作为:

  1. [root@learnlinux ~]# tar xzf /tmp/etc_bak.tar.gz -C /root
  2. [root@learnlinux ~]# ls
  3. anaconda-ks.cfg initial-setup-ks.cfg 公共 视频 文档 音乐
  4. etc learnLinux 模板 图片 下载 桌面
  5. [root@learnlinux ~]#
  6. [root@learnlinux ~]# rm -rf etc/
  7. [root@learnlinux ~]# tar xjf /tmp/etc_bak.tar.bz2 -C /root
  8. [root@learnlinux ~]# ls
  9. anaconda-ks.cfg initial-setup-ks.cfg 公共 视频 文档 音乐
  10. etc learnLinux 模板 图片 下载 桌面
  11. [root@learnlinux ~]#

有的时候,我们并不想解压缩文件,只是想查看压缩文件中的内容,那么我们可以执行下面的命令:

  1. [root@learnlinux tmp]# tar -tvf etc_bak.tar
  2. 「……省略内容……」
  3. [root@learnlinux tmp]# tar -tvf etc_bak.tar.gz
  4. 「……省略内容……」

注意:

  • -t 列出存档中文件的目录
  • -v 详细显示处理的文件,—verbose