今天主要说一下如何在Linux系统中进行打包和压缩,在这之前先要介绍一个基本命令——du。
du命令——查看目录或文件占用空间的大小
du命令用于统计指定目录或文件所占磁盘空间的大小。
-h,以 K、M、G为单位显示统计结果(默认单位为字节)。
如,查看 /root/install.log文件的大小
[root@localhost ~]# du -h /root/install.log
-s,查看目录本身的大小(不加该选项,则会显示指定目录下所有子目录的大小)。
[root@localhost ~]# du -hs /dev
打包与压缩也属于是系统管理的基本操作,像 WinRAR之类的压缩/解压缩软件应是Windows系统中的装机必备软件。在Linux系统中,通过本身的命令就可以完成打包与压缩的操作。
打包,即将许多个文件和目录合并保存为一个整体的包文件,以方便传递或携带。而压缩操作可以进一步降低打包好的包文件所占用的磁盘空间。
Linux中最常用的打包命令为 tar。最常用的压缩命令有两个:gzip、bzip2,用gzip制作的压缩文件通常使用扩展名“.gz”,用bzip2制作的压缩文件通常使用扩展名“.bz2”。
bzip2的压缩效率比 gzip更高,但是它们都只能针对单个文件进行压缩与解压,所以通常都是先通过tar命令将多个文件或目录打包成一个包文件,然后再通过gzip或bzip2进行压缩,如*.tar.gz和*.tar.bz2就属于这种先打包再压缩的文件。
在实际使用中,一般都是通过 tar命令来调用gzip或bzip2进行压缩或解压,而很少去单独使用gzip或bzip2命令。
tar命令本身只能对目录和文件进行打包,而并不进行压缩。
tar [选项 ] 打包或压缩文件名 需要打包的源文件或目录
例:将整个 /home目录下的所有文件打包成home.tar。
[root@localhost ~]# tar cvf home.tar /home
[root@localhost ~]# du -h home.tar
例:调用 gzip命令将/home目录下的所有文件打包并压缩成
[root@localhost ~]# tar zcvf home.tar.gz /home
查看所生成的压缩文件的大小,可以发现体积大幅缩小。
[root@localhost ~]# du -h home.tar.gz
例:调用 bzip2命令将/home目录下的所有文件打包并压缩成
[root@localhost ~]# tar jcvf home.tar.bz2 /home
查看所生成的压缩文件的大小,可以发现体积进一步缩小,证明 bzip2的压缩效率比gzip要高。
[root@localhost ~]# du -h home.tar.bz2
tar [选项 ] 打包或压缩文件名 [-C 目标目录]
[root@localhost ~]# tar zxvf
例:将 home.tar.bz2解压到/root/home2目录中。
[root@localhost ~]# mkdir home2
[root@localhost ~]# tar jxvf home.tar.bz2 -C home2
-C,指定解压后文件存放的目的位置(注意, C是大写)。
如果希望在不解压的情况下查看压缩文件内都包括哪些内容,可以执行命令:
[root@localhost ~]# tar ztvf home.tar.gz | more
由于是用 gzip压缩的文件,所以用-z选项调用gzip程序来解压。
如果要查看压缩文件 home.tar.bz2文件中的内容,可以执行命令:
[root@localhost ~]# tar jtvf home.tar.bz2 | more