2018-5-25 压缩打包介绍,gzip压缩工具,bzip2,xz,file命令, zip,tar打包,打包并压缩

时间:2022-12-02 19:59:47

一、压缩打包介绍

使用压缩文件,不仅能节省磁盘空间,而且还能节省传输时间和网络带宽。

常见的压缩文件

windows系统中,常见的压缩文件有 .rar, .zip, .7z

linux系统中,常见的压缩文件有 .zip, .gz, .bz2, .xz, .tar.gz, .tar.bz2, .tar.xz

二、 gzip压缩工具

gzip格式为gzip [-d -c #] filename,其中#为1-9的数字。

-d:该参数在解压缩时使用;

-c :把压缩后的文件输出到指定的目录下,不去更动原文件;

-#:表示压缩等级,1为压缩效率低,9为压缩效率最高,6为默认。

注意:gzip不能压缩目录

创建一个目录dir1,查找以conf结尾的文件,# find /etc/ -type f -name “*conf”,然后将列出来的文件内容输出到一个文件1.txt里去

[root@aming01 ~]# cd /tmp/
[root@aming01 tmp]# mkdir dir1
[root@aming01 tmp]# cd dir1
[root@aming01 dir1]# ls -l
总用量 0
[root@aming01 dir1]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
find: 遗漏“-exec”的参数
[root@aming01 dir1]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;

继续追加,查看文件大小

[root@aming01 dir1]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@aming01 dir1]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@aming01 dir1]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@aming01 dir1]# wc -l 1.txt          #行数
16071 1.txt
[root@aming01 dir1]# 

压缩文件,查看大小

[root@aming01 dir1]# gzip 1.txt
[root@aming01 dir1]# ls -l
总用量 160
-rw-r--r--. 1 root root 161159 528 08:14 1.txt.gz
[root@aming01 dir1]# du -sh 1.txt.gz
160K    1.txt.gz

gzip -d 1.txt 或者 uzip 1.txt.gz 解压1.txt文件的两种方法

[root@aming01 dir1]# gzip -d 1.txt.gz
[root@aming01 dir1]# ls -l
总用量 632
-rw-r--r--. 1 root root 643422 528 08:14 1.txt
[root@aming01 dir1]# du -sh 1.txt
632K    1.txt
[root@aming01 dir1]# wc -l 1.txt
16071 1.txt
[root@aming01 dir1]# gzip 1.txt
[root@aming01 dir1]# ls -l
总用量 160
-rw-r--r--. 1 root root 161159 528 08:14 1.txt.gz
[root@aming01 dir1]# gunzip 1.txt.gz
[root@aming01 dir1]# ls -l
总用量 632
-rw-r--r--. 1 root root 643422 528 08:14 1.txt
[root@aming01 dir1]# du -sh 1.txt
632K    1.txt

用zcat命令可以查看gzip压缩包的内容 zcat 1.txt.gz

gzip -c 1.txt > /tmp/1.txt.gz 压缩文件,并指定目录

[root@aming01 dir1]# ls
1.txt
[root@aming01 dir1]# gzip -d 1.txt.gz
gzip: 1.txt.gz: No such file or directory
[root@aming01 dir1]# ls
1.txt
[root@aming01 dir1]# gzip -c 1.txt > /tmp/1.txt.gz
[root@aming01 dir1]# ls
1.txt
[root@aming01 dir1]# ls /tmp/
1.txt.gz  systemd-private-606760368daa4b87b5bdb3edd1b84fc2-vgauthd.service-4km2R4
dir1      systemd-private-606760368daa4b87b5bdb3edd1b84fc2-vmtoolsd.service-mUB8BP
hhh1.log  systemd-private-b6775619eb894c3b840f18a188e44c58-vgauthd.service-YzDODs
newdisk   systemd-private-b6775619eb894c3b840f18a188e44c58-vmtoolsd.service-S0zHzq
sss
[root@aming01 dir1]# file /tmp/1.txt.gz
/tmp/1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Mon May 28 08:14:08 2018
[root@aming01 dir1]# 

gunzip -c /tmp/1.txt.gz > /tmp/2.txt.new 解压文件,并指定路径

[root@aming01 dir1]# gzip -d -c /tmp/1.txt.gz > ./2.txt
[root@aming01 dir1]# ls
1.txt  2.txt
[root@aming01 dir1]# wc -l 1.txt 2.txt
  16071 1.txt
  16071 2.txt
  32142 总用量
[root@aming01 dir1]# du -sh *.txt
632K    1.txt
632K    2.txt


三、bzip2压缩工具

bzip2命令的格式为bzip2 [-dz] filename,-z(压缩),-d(解压),压缩级别1~9,默认级别为9。压缩时,加不加-z选项都可以压缩文件。注意:bzip2也不可以压缩目录。bzip2用法与gzip基本相同,bzip2压缩程度比gzip狠。

先安装bzip2 # yum install -y bzip2,然后压缩

[root@aming01 dir1]# bzip 1.txt
-bash: bzip: 未找到命令
[root@aming01 dir1]# ls
1.txt  2.txt
[root@aming01 dir1]# bzip2 1.txt
[root@aming01 dir1]# ls
1.txt.bz2  2.txt
[root@aming01 dir1]# du -sh 1.txt.bz2
68K 1.txt.bz2
[root@aming01 dir1]# 

两种解压方式

[root@aming01 dir1]# ls
1.txt.bz2  2.txt
[root@aming01 dir1]# bzip2 -d 1.txt.bz2
[root@aming01 dir1]# ls
1.txt  2.txt
[root@aming01 dir1]# bzip2 1.txt
[root@aming01 dir1]# bunzip2 1.txt.bz2
[root@aming01 dir1]# ls
1.txt  2.txt

bzip2可以压缩、解压文件,并指定目录

[root@aming01 dir1]# ls
1.txt  2.txt
[root@aming01 dir1]# bzip2 1.txt
[root@aming01 dir1]# bzip2 -d 1.txt.bz2
[root@aming01 dir1]# bzip2 -c 1.txt > /tmp/1.txt.bz2
[root@aming01 dir1]# ls /tmp/
1.txt.bz2  sss
1.txt.gz   systemd-private-606760368daa4b87b5bdb3edd1b84fc2-vgauthd.service-4km2R4
dir1       systemd-private-606760368daa4b87b5bdb3edd1b84fc2-vmtoolsd.service-mUB8BP
hhh1.log   systemd-private-b6775619eb894c3b840f18a188e44c58-vgauthd.service-YzDODs
newdisk    systemd-private-b6775619eb894c3b840f18a188e44c58-vmtoolsd.service-S0zHzq [root@aming01 dir1]# bzip2 -d -c /tmp/1.txt.bz2 > ./3.txt
[root@aming01 dir1]# du -sh
1.9M    .
[root@aming01 dir1]# du -sh 1.txt
632K    1.txt
[root@aming01 dir1]# du -sh 3.txt
632K    3.txt


四、xz压缩工具

xz命令的格式为 xz [-dz] filename,用法和gzip、bzip2类似,压缩程度最狠,不可压缩目录。
压缩文件

[root@aming01 dir1]# ls
1.txt  2.txt  3.txt
[root@aming01 dir1]# xz 1.txt
[root@aming01 dir1]# ls
1.txt.xz  2.txt  3.txt
[root@aming01 dir1]# du -sh 1.txt.xz
48K 1.txt.xz

两种解压缩方式

[root@aming01 dir1]# ls
1.txt.xz  2.txt  3.txt
[root@aming01 dir1]# xz -d 1.txt.xz
[root@aming01 dir1]# ls
1.txt  2.txt  3.txt
[root@aming01 dir1]# xz 1.txt
[root@aming01 dir1]# unxz 1.txt.xz
[root@aming01 dir1]# ls
1.txt  2.txt  3.txt

保留原来的文件,并xz压缩到指定目录下;解压缩xz的文件并指定解压路径,同时保留原来的文件;查看xz压缩文件工具

[root@aming01 dir1]# ls
1.txt  2.txt  3.txt
[root@aming01 dir1]# xz -c 1.txt > /tmp/3.txt.xz
[root@aming01 dir1]# ls /tmp/.3.txt.xz
ls: 无法访问/tmp/.3.txt.xz: 没有那个文件或目录
[root@aming01 dir1]# ls /tmp/3.txt.xz
/tmp/3.txt.xz
[root@aming01 dir1]# xz -d -c /tmp/3.txt.xz > ./4.txt
[root@aming01 dir1]# ls
1.txt  2.txt  3.txt  4.txt


五、file命令

file命令用于识别文件类型

[root@aming01 dir1]# file 1.txt.gz 2.txt.bz2 3.txt.xz 4.txt
1.txt.gz:  gzip compressed data, was "1.txt", from Unix, last modified: Mon May 28 08:14:08 2018
2.txt.bz2: bzip2 compressed data, block size = 900k
3.txt.xz:  XZ compressed data
4.txt:     UTF-8 Unicode text


六、zip压缩工具

zip压缩包在Windows和Linux中都比较常用,可以压缩目录和文件;zip压缩特点:zip压缩之后,原来的文件不删除

zip压缩文件:用 yum install -y zip 安装zip包
zip 1.txt.zip 1.txt 压缩包的文件名 需要压缩的源文件(不会删除源文件)

[root@aming01 dir1]# ls
1.txt  2.txt  3.txt  4.txt
[root@aming01 dir1]# zip 1.txt.zip 1.txt
  adding: 1.txt (deflated 75%)
[root@aming01 dir1]# ls
1.txt  1.txt.zip  2.txt  3.txt  4.txt
[root@aming01 dir1]# ^C
[root@aming01 dir1]# ls -lh
总用量 2.7M
-rw-r--r--. 1 root root 629K 528 08:14 1.txt
-rw-r--r--. 1 root root 158K 528 08:41 1.txt.zip

-r选项:可以压缩多个文件和目录,压缩目录要加-r 选项

[root@aming01 dir1]# ls
111  1.txt  1.txt.zip  2.txt  3.txt  4.txt
[root@aming01 dir1]# zip -r 111.zip 111 1.txt
  adding: 111/ (stored 0%)
  adding: 1.txt (deflated 75%)
[root@aming01 dir1]# ls
111  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt

zip解压文件或目录:安装解压包 yum install -y unzip

解压文件时,由于zip压缩不会删除原来的文件,如果自己不手动删除的话,解压缩时候就会提示是否覆盖、替换。

[root@aming01 dir1]# ls
111  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt
[root@aming01 dir1]# unzip 111.zip
Archive:  111.zip
replace 1.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: 
error:  invalid response [{ENTER}]
replace 1.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: t^Hy
error:  invalid response [y]
replace 1.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: 1.txt                   
[root@aming01 dir1]# ls
111  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt

zip解压文件到指定目录

[root@aming01 dir1]# ls
111  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt
[root@aming01 dir1]# unzip 1.txt.zip -d 111/
Archive:  1.txt.zip
  inflating: 111/1.txt               
[root@aming01 dir1]# unzip 1.txt.zip -d 111/123
Archive:  1.txt.zip
  inflating: 111/123/1.txt 

zip解压文件不能指定文件名,压缩前是什么名字解压后还是什么名字

七、tar打包

tar可以把目录打包成一个文件,把所有文件整合成一个大文件,方便复制和移动。命令的格式为:

tar [选项] filename

-c:建立一个tar包或者压缩文件包
-f:指定目标文件名,如果多个参数组合使用时,把-f放在最后面
-z:同时用gzip压缩
-j:同时用bzip2压缩
-J:同时用xz压缩
-t:查看包里面的文件 -v:可视化
–exclude filename:表示打包除了该文件之外的内容

tar打包目录

若文件已经打包,再次打包会直接覆盖该文件,而不会有任何提示
tar也支持一起打包目录和文件

[root@aming01 dir1]# ls
111  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt
[root@aming01 dir1]# tar -cvf 111.tar 111
111/
111/1.txt
111/123/
111/123/1.txt
[root@aming01 dir1]# ls
111  111.tar  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt
[root@aming01 dir1]# tar -cvf 111.tar 111
111/
111/1.txt
111/123/
111/123/1.txt
[root@aming01 dir1]# ls
111  111.tar  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt

tar解包

[root@aming01 dir1]# ls
111  111.tar  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt
[root@aming01 dir1]# tar -cvf 111.tar 111
111/
111/123/
111/123/1.txt
111/1.txt
[root@aming01 dir1]# rm -r 111
rm:是否进入目录"111"? y
rm:是否进入目录"111/123"? y
rm:是否删除普通文件 "111/123/1.txt"?y
rm:是否删除目录 "111/123"?y
rm:是否删除普通文件 "111/1.txt"?y
rm:是否删除目录 "111"?y
[root@aming01 dir1]# ls
111.tar  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt
[root@aming01 dir1]# tar -xvf 111.tar
111/
111/123/
111/123/1.txt
111/1.txt
[root@aming01 dir1]# ls
111  111.tar  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt

tar查看打包文件中的文件列表

[root@aming01 dir1]# tar -tf 111.tar
111/
111/123/
111/123/1.txt
111/1.txt

tar过滤指定的文件进行打包
exclude支持多个文件过滤,*txt文件要加“”
2018-5-25 压缩打包介绍,gzip压缩工具,bzip2,xz,file命令, zip,tar打包,打包并压缩

八、打包并压缩

tar打包的同时使用gzip压缩,加 -z 参数;tar解包就是将命令中的-c换成-x即可

[root@aming01 dir1]# ls
111  111.tar  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt  linux.tar.gz
[root@aming01 dir1]# du -sh linux.tar.gz
632K    linux.tar.gz
[root@aming01 dir1]# du -sh 111 1.txt 2.txt
1.3M    111
632K    1.txt
632K    2.txt
[root@aming01 dir1]# 
[root@aming01 dir1]# ls
111  111.tar  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt  linux.tar.gz
[root@aming01 dir1]# rm -rf 111
[root@aming01 dir1]# ls
111.tar  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt  linux.tar.gz
[root@aming01 dir1]# tar -zxvf linux.tar.gz
111/
111/123/
111/123/1.txt
111/1.txt
1.txt
2.txt
[root@aming01 dir1]# ls
111  111.tar  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt  linux.tar.gz

tar打包的同时使用bzip2压缩,加 -j 参数;tar解包就是将命令中的-c换成-x即可

[root@aming01 dir1]# tar -jcvf linux.tar.bz2 111 1.txt 2.txt
111/
111/123/
111/123/1.txt
111/1.txt
1.txt
2.txt
[root@aming01 dir1]# ls
111  111.tar  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt  linux.tar.bz2  linux.tar.gz

tar打包的同时使用xz压缩,加 -J 参数;tar解包就是将命令中的-c换成-x即可

root@aming01 dir1]# ls
111  111.tar  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt  linux.tar.bz2  linux.tar.gz
[root@aming01 dir1]# tar -jcvf linux.tar.xz 111 1.txt 2.txt
111/
111/123/
111/123/1.txt
111/1.txt
1.txt
2.txt
[root@aming01 dir1]# ls
111  111.tar  111.zip  1.txt  1.txt.zip  2.txt  3.txt  4.txt  linux.tar.bz2  linux.tar.gz  linux.tar.xz

扩展:

http://ask.apelearn.com/question/5435