通常在Windows系统上,打包和压缩是一个软件就完成的,但是在Linux系统上,是两个软件完成的。打包在早期的Linux系统上的备份命令,打包之后再对其进行压缩。
Linux的备份压缩
- 最早的Linux备份介质是磁带,使用的命令是
tar - 可以对打包后的磁带文件进行压缩存储,压缩的命令是
gzip或者bzip2 经常使用的扩展名是
使用命令
tar进行打包- 常用参数
-c打包,—create 建立新的存档-x解包,—extract 从存档展开文件(提取)-f指定操作类型为文件,—file 指定存档或设备
假如,我们对/etc目录仅进行打包的操作,打包后的文件命名为etc_bak.tar放在/tmp目录下,可以执行命令:
[root@learnlinux learnLinux]# tar cf /tmp/etc_bak.tar /etctar: 从成员名中删除开头的“/”[root@learnlinux learnLinux]#
注意:
- tar命令的早期是支持BSD风格的,后期随着版本的更新慢慢支持了UNIX风格。
- UNIX风格,必须带一个“-”
- BSD风格,不带“-”
- GNU风格,带两个“-”
- 提示tar: 从成员名中删除开头的“/”,是为了帮助我们可以将文件解压到任意文件夹中。
一般我们对 .tar 包进行压缩的时候,通常使用gzip或者bzip2进行压缩,但是呢,tar命令其实已经将这两个命令集成进去了,所以我们一般在进行打包压缩的时候,通常使用下面的两种方式一步完成:
[root@learnlinux tmp]# tar czf /tmp/etc_bak.tar.gz /etctar: 从成员名中删除开头的“/”[root@learnlinux tmp]# tar cjf /tmp/etc_bak.tar.bz2 /etctar: 从成员名中删除开头的“/”[root@learnlinux tmp]#
注意:
- 使用两个扩展名作为后缀.tar.gz的方式,其实是在告诉人们这个文件进行了打包并且进行了压缩。
使用gzip或者bzip2这两种方式进行压缩,区别就在于bzip2的压缩比例更高,但是时间更慢;gzip的压缩比例相对更低,但是时间更快。我们可以通过以下方式进行比较验证:
[root@learnlinux tmp]# ls -lh etc_bak.tar*-rw-r--r--. 1 root root 33M 2月 16 15:42 etc_bak.tar-rw-r--r--. 1 root root 9.3M 2月 16 16:07 etc_bak.tar.bz2-rw-r--r--. 1 root root 11M 2月 16 16:06 etc_bak.tar.gz[root@learnlinux tmp]#
解压缩
经过上面的学习,我们可以了解到:
- 可以使用
gzip和bzip2命令单独操作 - 通常和tar命令配合操作
- 常用参数
-zgzip格式压缩和解压缩-jbzip2格式压缩和解压缩-C解压到指定目录,—directory DIR
假如我们现在要对网络上下载的文件进行解压缩的话,以上面的文件为例,将etc_bak.tar.gz和etc_bak.bz2解压到/root下,相应的命令操作为:
[root@learnlinux ~]# tar xzf /tmp/etc_bak.tar.gz -C /root[root@learnlinux ~]# lsanaconda-ks.cfg initial-setup-ks.cfg 公共 视频 文档 音乐etc learnLinux 模板 图片 下载 桌面[root@learnlinux ~]#[root@learnlinux ~]# rm -rf etc/[root@learnlinux ~]# tar xjf /tmp/etc_bak.tar.bz2 -C /root[root@learnlinux ~]# lsanaconda-ks.cfg initial-setup-ks.cfg 公共 视频 文档 音乐etc learnLinux 模板 图片 下载 桌面[root@learnlinux ~]#
有的时候,我们并不想解压缩文件,只是想查看压缩文件中的内容,那么我们可以执行下面的命令:
[root@learnlinux tmp]# tar -tvf etc_bak.tar「……省略内容……」[root@learnlinux tmp]# tar -tvf etc_bak.tar.gz「……省略内容……」
注意:
-t列出存档中文件的目录-v详细显示处理的文件,—verbose
