Linux系统中文件的解压缩操作

压缩:指通过某些算法,将文件尺寸进行相应的缩小,同时不损失文件的内容。

打包:指将多个文件(或目录)合并成一个文件,方便传递或部署。

压缩文件或打包文件常见的扩展名: *.tar.gz, *.tar.bz2;linux系统一般文件的扩展名用途不大,但是压缩或打包文件的扩展名是必须的,因为linux支持的压缩命令较多,不同的压缩技术使用的压缩算法区别较大,根据扩展名能够使用对应的解压算法。

常见文件扩展名:

  • *.tar.gz tar程序打包的文件,并且经过 gzip 的压缩
  • *.tar.bz2 tar程序打包的文件,并且经过 bzip2 的压缩

tar命令,选项与参数:

-c :建立打包文件,

-t :查看打包文件的内容含有哪些文件

-x :解打包或解压缩的功能,可以搭配-C(大写)在特定到特定目录解开

-j :通过bzip2的支持进行压缩/解压缩:此时文件最好为 *.tar.bz2

-z :通过gzip的支持进行压缩/解压缩:此时文件最好为 *.tar.gz

-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来

-f filename:-f 后面跟处理后文件的全名称(路径+文件名+后缀名)

-C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个 选项

-p :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件

注意 -c, -t, -x 不可同时出现在一串指令列中

tar常用的指令组合

第一步确定压缩算法即z还是j,第二步确定c(压缩)还是x(解压),第三步v查看过程,第四步跟f。

(1)打包与压缩:

1
2
3
4
tar -zcv -f [/路径/]filename.tar.gz 被压缩的文件或目录 
即 tar -zcvf [/路径/]filename.tar.gz 被压缩的文件或目录
tar -jcv -f [/路径/]filename.tar.bz2 被压缩的文件或目录
即 tar -jcvf [/路径/]filename.tar.bz2 被压缩的文件或目录

练习:①将/etc目录下的所有文件打包并压缩至当前目录下

1
tar -zcvf ./a.tar.gz /etc

②将/etc目录下的所有文件打包并压缩至/root/etc01.tar.gz

注意:压缩时目录一定要存在,才能压缩成功,否则要先创建目录。

1
tar -zcvf /root/etc01.tar.gz /etc

③ 将/etc目录下的所有文件打包并压缩至/root/etc02tar.bz2

1
tar -jcvf /root/etc02tar.bz2 /etc

bz2压缩方式文件更小,但是压缩速度较慢

1
2
3
[root@layne testdir]# ll /root | grep etc0
-rw-r--r-- 1 root root 8493768 Feb 8 21:43 etc01.tar.gz
-rw-r--r-- 1 root root 7467102 Feb 8 21:43 etc02tar.bz2

(2)备份:(保留之前的权限)

1
2
tar -zpcv -f  [/路径/]filename.tar.gz  被备份文件或目录
tar -jpcv -f [/路径/]filename.tar.bz2 被备份文件或目录

(3)解压到当前目录

1
2
3
4
tar -zxv -f [/路径/]filename.tar.gz
即 tar -zxvf [/路径/]filename.tar.gz
tar -jxvf [/路径/]filename.tar.bz2
即 tar -jxvf [/路径/]filename.tar.bz2

案例:将/root/etc01.tar.gz解压到当前目录下:

tar -zxvf /root/etc01.tar.gz

(4)解压到指定目录

1
2
3
4
tar -zxv -f [/路径/]filename.tar.gz  -C 指定目录
即 tar -zxvf [/路径/]filename.tar.gz -C 指定目录
tar -jxv -f [/路径/]filename.tar.bz2 -C 指定目录
即 tar -jxvf [/路径/]filename.tar.bz2 -C 指定目录

案例:解压/root/etc01.tar.gz解压到当/root/my/目录下:

tar -zxvf /root/etc01.tar.gz -C /root/my/