gzip/gunzip 指令 ( .gz 不能压缩目录)
gzip 用于压缩文件, gunzip 用于解压的 。
gzip
gzip命令用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。
没有的话手动安装
yum -y install zip gzip (--安装压缩工具)
常用选项
-c:-stdout在标准输出上写入,保持原始文件不变
-r:递归处理,将指定目录下的所有文件及子目录一并处理;
-v:显示指令执行过程;
-d:解开压缩文件;(decompression 解压)
-a:使用ASCII文字模式;
-f:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
-h:在线帮助;
-l:列出压缩文件的相关信息;
-L:显示版本与版权信息;
-n:压缩文件时,不保存原来的文件名称及时间戳记;
-N:压缩文件时,保存原来的文件名称及时间戳记;
-q:不显示警告信息;
-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;
-t:测试压缩文件是否正确无误;
-V:显示版本信息;
-<压缩效率>:压缩效率是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高;
--best:此参数的效果和指定“-9”参数相同;
--fast:此参数的效果和指定“-1”参数相同。
基本语法
gzip 文件 (功能描述:压缩文件,只能将文件压缩为 *.gz 文件)
应用实例
压缩到指定目录 (需要加上参数 -c)
案例1: gzip压缩, 将 /home下的 hello.txt文件进行压缩 gzip /home/hello.txt
案例2: gzip压缩, 将 /home下的 a.txt、b.txt、c.txt 文件进行压缩
案例3: 把test目录下的每个文件压缩成 .gz 文件。 gzip *
案例4: 把案例4中每个压缩的文件解压,并列出详细的信息。 gzip -dv *
案例5: 详细显示案例3中每个压缩的文件的信息,并不解压。gzip -l *
案例6: 压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz。gzip -r log.tar
案例7: 递归的压缩目录。gzip -rv test
这样,所有test下面的文件都变成了*.gz,目录依然存在只是目录里面的文件相应变成了*.gz.这就是压缩,和打包不同。因为是对目录操作,所以需要加上-r选项,这样也可以对子目录进行递归了。
案例9: 递归地解压目录。gzip -dr test
案例10: 为了保留原有的文件,我们可以加上 -c 选项并利用 linux 的重定向 ,这样不但可以将原有的文件保留,而且可以将压缩包放到任何目录中,解压缩也一样 。
压缩到指定目录: /home有两个目录 aaa bbb aaa里面有文件a.txt,我把a.txt压缩到bbb目录里面。
gzip -c aaa/a.txt > bbb/test.gz
把上面压缩的 test.gz 解压到指定 hehe 目录 gunzip -c bbb/test.gz > hehe/test.txt
如果是放在当前目录的话: gunzip -c bbb/test.gz > ./test.txt
细节说明
当我们使用gzip对文件进行压缩后,不会保留原来的文件。
gunzip
gunzip命令用来解压缩文件。gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为 .gz 。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。( gzip –d等价于gunzip 命令)
基本语法
gunzip 文件.gz (功能描述:解压缩文件命令)
常用选项
-a:使用ASCII文字模式;
-c:把解压后的文件输出到标准输出设备;
-f:强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
-h:在线帮助;
-l:列出压缩文件的相关信息;
-L:显示版本与版权信息;
-n:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理;
-N:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上;
-q:不显示警告信息;
-r:递归处理,将指定目录下的所有文件及子目录一并处理;
-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;
-t:测试压缩文件是否正确无误;
-v:显示指令执行过程;
-V:显示版本信息;
应用实例
案例1: gunzip压缩, 将 /home下的 hello.txt.gz 文件进行解压缩 gunzip hello.txt.gz
zip/unzip指令 .zip
zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的 。
zip
zip 是我们最常用的压缩命令,通过该命令可以将目录或者文件压缩成扩展名为“ .zip ”的压缩文件。
常用选项
-r 递归处理,将指定目录下的所有文件和子目录进行压缩。
-f 仅将源目录下的发生变更的文件压缩到zip文件中,源目录下新增的文件不进行压缩。
-u 与-f参数类似,但是除了更新的文件外,也会将源目录中的其它文件压缩到zip文件中。
-m 将文件压缩到zip文件中,同时删除目录下的该文件。
-j 只保存文件名称及其内容,丢弃目录结构。
-l 压缩文件时,将 LF 字符置换成 LF+CR 字符。
-ll 压缩文件时,将 CR + LF 字符置换成 LF 字符。
-1 压缩效率,值为1-9,1为压缩效率最高。
-9 压缩效率,值为1-9,1为压缩效率最高。
-v 显示指令执行过程、显示版本信息。
-c 为每个被压缩的文件增加注释。
-z 为zip文件增加注释。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-x 不压缩 -x 指定的文件。
-i 只压缩 -i 指定的文件。
-D 压缩文件内不建立目录。
-A 调整可执行的自动解压缩文件。
-J 删除压缩文件前面不必要的数据。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件。
-e 采用标准的PKZip 2.0进行加密,提示输入密码。
-n 不压缩文件名以制定字符串结尾的文件。
-h2 显示详细的帮助信息。
基本语法
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
zip [选项] XXX.zip 需要压缩的内容(功能描述:压缩文件和目录的命令)
应用实例
案例1: 将 /home下的 所有文件进行压缩成 mypackage.zip zip -r mypackage.zip /home/ 或者 zip -r mypackage.zip /home/*
案例2: 指定压缩目录 /home 有如下目录。 zip -r aaa/test.zip bbb/
unzip
通过 unzip 命令将扩展名为“ .zip ”的压缩文件进行解压缩。
基本语法
unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
unzip [选项] XXX.zip (功能描述:解压缩文件)
常用选项
-d 指定文件解压缩后所要存储的目录。
-p 小写,将解压缩的文件数据以二进制格式(存储的格式)输出到屏幕上。
-P 大写,使用 unzip 的密码选项。
-l 显示压缩文件内所包含的文件。
-t 测试压缩文件。
-u 与-f参数类似,但是除了更新的文件外,也会将zip文件中的其它文件解压缩到目录中。
-z 显示压缩文件的注释。
-T 把 zip 文件中的最新的文件时间设置为zip文件的timestamp。
-x 不解压 -x 指定的文件。
-q 设置为 quiet 模式。
-qq 设置为 quieter 模式。
-o 不必先询问用户,直接覆盖原有文件。
-a 将文本文件格式转换为本地操作系统的格式。
-aa 将所有的文件作为文本文件来对待。
-U 启用Unicode,显示以十六进制的 #Uxxxx 或者 #Lxxxxxx 进行 ASCII 文本转义的非本地字符。旧版本中 -U 将压缩文件中的全部文件名改为大写。
-UU 启用Unicode,禁用使用UTF-8存储路径。UTF-8路径被处理成 Unicode 后,存储为本地路径。
-L 将压缩文件中的全部文件名改为小写。
-X 解压缩时恢复文件原来的UID/GID。
-V 保留VMS的文件版本信息。
-M 将输出结果送到 more 管道中。
-hh 显示详细的帮助信息。
应用实例
案例2: 将 mypackge.zip 解压到 /opt/tmp 目录下 unzip –d /opt/tmp mypackage.zip [如果/opt/tmp 不存在,会自动创建]
tar 指令
tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件。 [可以压缩,和解压]
基本语法
tar [选项] XXX.tar.gz 打包的内容/目录 (功能描述:打包目录,压缩后的文件格式.tar.gz)
选项说明
选项 | 功能 |
-c | 产生 .tar 打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 (压缩带上) |
-x | 解包 .tar 文件 (解压带上) |
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
以上五个是独立的命令参数,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的 gz
-j:有bz2属性的 bz2
-J :有xz属性的 xz
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
应用实例
案例1: 将所有 .jpg 的文件打成一个名为all.tar的包。 tar -cf all.tar *.jpg -c 是表示产生新的包,-f 指定包的文件名。
案例2: 将所有 .gif 的文件增加到all.tar的包里面去, tar -rf all.tar *.gif -r是表示增加文件的意思。 (这样解压的话是没有任何目录的)
tar -rf all.tar /home/photo/*.gif 这样的话是有目录的
案例3: 列出all.tar包中所有文件, tar -tf all.tar -t是列出文件的意思
案例3: 更新原来tar包 all.tar 中a.gif文件 tar -uf all.tar a.gif -u是表示更新文件的意思。
案例4: 解出all.tar包中所有文件, tar -xf all.tar -x是解开的意思
案例5: 将目录里所有jpg文件打包成 tar.jpg 。tar -cvf jpg.tar *.jpg
案例6: 将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz 。
tar -czf jpg.tar.gz *.jpg
案例7: 将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2。
tar -cjf jpg.tar.bz2 *.jpg
案例8: 将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z。tar -cZf jpg.tar.Z *.jpg
案例9: rar格式的压缩,需要先下载rar for linux。rar a jpg.rar *.jpg
案例10: zip格式的压缩,需要先下载zip for linux。zip jpg.zip *.jpg
tar -xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar -xZvf file.tar.Z //解压tar.Z
tar -Jxvf fle.tar.xz //解压tar.xz
unrar e file.rar //解压rar
unzip file.zip //解压zip
案例11: 压缩多个文件,将 /home/a1.txt 和 /home/a2.txt 压缩成 a.tar.gz tar -zcvf a.tar.gz a1.txt a2.txt
案例12: 将/home 所有的文件夹压缩成 myhome.tar.gz tar -zcvf myhome.tar.gz /home/
案例13: 将 a.tar.gz 解压到当前目录 tar -zxvf a.tar.gz
案例14: 将myhome.tar.gz 解压到 /opt/tmp2目录下 tar -zxvf myhome.tar.gz -C /opt/temp2 (temp2 需要手动创建)
细节:
指定解压到的那个目录,事先要存在才能成功,否则会报错。
总结
1、*.tar 用 tar -xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar -xzf 解压 tar.xz 用 tar -Jxvf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar -xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar -xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压