文件压缩与打包
文件压缩与打包
打包是指将多个文件或者目录放在一起,形成一个总的包,这样便于保存和传输,但是大小是没有变化的。压缩是指将一个或者多个大文件或者目录通过压缩算法使文件的体积变小以达到压缩的目的,可以节省存储空间。在压缩的时候通常是 先打包,再压缩。
1.打包 -tar
多个文件和目录的打包。
tar命令参数前面加”-"与不加“-”的区别:
tar命令参数前面加不加“-”执行命令的结果是没有区别的,区别只要是在于linux风格方面,加“-”属于System V风格,不加“-”属于BSD风格,所以在使用tar命令的时候它的参数加不加“-”结果是一样的,看个人的使用方式。
tar常用选项
-
-c (create)创建文件包
-
-x 提取文件
-
-t 查看压缩文件
-
-z(使用gzip方式处理,与“c”结合就表示压缩;与“x”结合就表示解压缩)
-
-j(使用bzip2方式处理,与“c”结合就表示压缩;与“x”结合就表示解压缩)
-
-v (verbose)详细报告tar处理信息
-
-f (file)文件名
-
-r (append) -r选项的作用:把要存档的文件追加到档案文件的未尾
-
-C <指定目录> 解压到指定目录
1.1tar打包,gzip压缩
后缀xxx.gz
1)压缩
tar -czvf 文件名 目录名
tar -czvf 和 tar czvf 是一样的。所以tar命令选项都可以取消 “-”
2)查看压缩文件
tar tvf 压缩文件名
3)解压
tar xzvf 压缩文件名
tar xzvf 压缩文件名 -C 指定的目录
1.2 tar打包,zip2压缩
后缀xxx.bz2
1)压缩
tar -cjvf 文件名 目录名
tar -cjvf 和 tar cjvf 是一样的。所以tar命令选项都可以取消 “-”
2)查看压缩文件
tar tvf 压缩文件名
3)解压
tar xjvf 压缩文件名
或者
tar xjvf 压缩文件名 -C 指定的目录
如果不用“-C”指定目录则会提取内容到当前目录
1.3 总结
1)tar命令式一个很聪明的命令,我们在解压的时候不需要指明自己压缩的方式它会自己选择跟压缩方式对应的方式去解压。
如在解压gz压缩方式压缩文件的时候并不需要加上-z,直接用参数-xvf即可,另外两种压缩方式在解压的时候一样,因为tar命令会自动选择,解压之后压缩文件还在,如果不指定解压出来的文件保存在哪里,那么会直接解压在当前目录。
2)在使用tar压缩或者打包的时候,可以通过增加–exclude来达到排除指定的文件的目的。
如 将备份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
3)使用r选项,在已经归档文件.tar的内容中再增加应该如何怎么操作?
-r选项的作用:把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中
如 ,已经归档了一个 test.tar,然后再将文件newtext.c追加到档案里面。
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2022/6/4 23:38 0 newtext.c
-a---- 2022/6/4 23:37 1536 test.tar //生成.tar文件,目录归档完毕!
//-r 追加
tar -rvf test.tar .\newtext.c
//查看验证
tar -tvf .\test.tar
-rw-rw-rw- 0 0 0 0 6月 04 23:35 ./test.c
-rw-rw-rw- 0 0 0 0 6月 04 23:38 ./newtext.c
2.压缩
linux主要有三种压缩方式:
1)gzip:是公认的压缩这速度最快,压缩大文件的时候与其他的压缩方式相比更加明显,历史最久,应用最广泛的压缩方式
2)bzip:压缩形成的文件小,但是可用性不如gzip
3)xz:是最新的压缩方式,可以自动提供最佳的压缩率
参数 | 作用 | 命名方式 |
---|---|---|
-z | 用于gzip压缩方式 | 文件名.tar.gz |
-j | 用于bzip2压缩方式 | 文件名.tar.bz2 |
-J | 用于xz压缩方式 | 文件名.tar.xz |
注意
-
单个文件的压缩使用gzip或者zip2
-
压缩有2个参数,压缩时间 和压缩比
-
一般情况下,大文件用bzip2压缩;小文件用 gzip 压缩
-
在压缩的过程中,我们可以发现:
压缩速度:gz > bz2 > xz
压缩率:xz > bz2 > gz
2.1 gzip/zcat
单个文件压缩解压 ,后缀 xxx.gz
gzip的常用选项
-
-l(list) 列出压缩文件的内容
-
-k(keep) 在压缩或者解压时,保留输入文件
-
-d(decompress) 将压缩文件进行解压缩
-
-t : 可以用来检验一个压缩文件的一致性,看文件有无错误
-
-v : 可显示出原文件/压缩文件的压缩比等信息
-
-c : 将压缩的数据输出到屏幕上,可通过数据流重定向来处理
1)查看压缩文件
gzip -l 压缩文件名
gzip -l services.gz
或者用
zcat 缩文件名
zcat services.gz
2)解压
gzip -kd 压缩文件名
该压缩文件是以.gz结尾的单个文件
3)压缩
gzip -k 源文件
注意:
-
如果gzip不加任何选项,此时为压缩,压缩完该文件会自动生成.gz的压缩文件,并删除原有的文件。所以推荐使用 gzip -k 压缩源文件
-
相同的文件内容,如果文件名不同,压缩后的大小也不同
-
只能压缩单个文件,不能压缩目录
2.2 bzip2/bzcat
单个文件压缩解压 ,后缀 xxx.bz2
bzip2的常用选项
-
-k(keep) 在压缩或者解压时,保留输入文件
-
-d(decompress) 将压缩文件进行解压缩
1)压缩
bzip2 -k 原文件名
得到后缀 xxxx.bz2
2)解压
bzip -kd 压缩文件名
3)查看 bzcat
bzcat man.config.bz2
注意:
- 如果bzip2不加任何选项,此时为压缩,压缩完该文件会自动生成.bz2的压缩文件,并删除原有的文件。
所以推荐使用bzip2 -k 压缩源文件
- 只能压缩单个文件,不能压缩目录
2.3 xz/xzcat
[~] xz [-dtlkc] 文件名
[~] xcat 文件名.xz
选项与参数:
-d : 解压缩
-t : 测试压缩文件的完整性,看是否有错误
-l : 列出压缩文件的相关信息
-k : 保留原文件不删除
-c : 将压缩过程产生的数据输出到屏幕上
1)压缩
[ ~] xz -k services #【-k】 : 保留原文件不删除
2)解压缩
[~] xz -kd services.xz #【-d】: 解压缩
2.4 zip /unzip
zip的常用选项
-m | 将文件压缩后,删除原文件 |
---|---|
-o | 将压缩文件内的所有文件的最新变动时间设为压缩的时间 |
-q | 安静模式,在压缩的时候不显示指令执行的过程 |
-r | 递归压缩,将自定目录下的所有子文件以及文件一起处理 |
-x | ”文件列表“,压缩时排除文件列表中的文件 |
unzip的常用选项
-c | 将解压缩的结果显示到屏幕上(显示每一个目录下的每一个文件的内容),同时对字符做适当的转换,但是并没有解压压缩包 |
---|---|
-l | 显示压缩文件内所包含的文件 |
-t | 检查压缩文件是否正确 |
-v | 执行时显示压缩文件的详细信息 |
-q | 安静模式,执行时不显示任何信息 |
-d | 指定文件解压后存储的目录 |
-x | 指定不要处理压缩文件中的那些文件 |