一、压缩打包介绍
使用压缩文件,不仅能节省磁盘空间,而且还能节省传输时间和网络带宽。
常见的压缩文件
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 5月 28 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 5月 28 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 5月 28 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 5月 28 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 5月 28 08:14 1.txt
-rw-r--r--. 1 root root 158K 5月 28 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文件要加“”
八、打包并压缩
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