Linux上的压缩和解压命令(zip,unzip,tar,gz解压)
linux上的压缩命令
linux上常用的压缩命令 zip,gzip
zip
zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip。
实例:
将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip:
zip -q -r html.zip /home/html
如果在我们在 /home/html 目录下,可以执行以下命令:
zip -q -r html.zip *
从压缩文件 cp.zip 中删除文件 a.c
zip -dv cp.zip a.c
命令格式:
zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]
参数:
-A 调整可执行的自动解压缩文件。
-b<工作目录> 指定暂时存放文件的目录。
-c 替每个被压缩的文件加上注释。
-d 从压缩文件内删除指定的文件。
-D 压缩文件内不建立目录名称。
-f 更新现有的文件。
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i<范本样式> 只压缩符合条件的文件。
-j 只保存文件名称及其内容,而不存放任何目录名称。
-J 删除压缩文件前面不必要的数据。
-k 使用MS-DOS兼容格式的文件名称。
-l 压缩文件时,把LF字符置换成LF+CR字符。
-ll 压缩文件时,把LF+CR字符置换成LF字符。
-L 显示版权信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串> 不压缩具有特定字尾字符串的文件。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件。
-t<日期时间> 把压缩文件的日期设成指定的日期。
-T 检查备份文件内的每个文件是否正确无误。
-u 与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 显示指令执行过程或显示版本信息。
-V 保存VMS操作系统的文件属性。
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式> 压缩时排除符合条件的文件。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z 替压缩文件加上注释。
-$ 保存第一个被压缩文件所在磁盘的卷册名称。
-<压缩效率> 压缩效率是一个介于1-9的数值。
gzip命令
gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。
使用实例:
压缩文件
[root@localhost a]# ls //显示当前目录文件
a.c b.h d.cpp
[root@localhost a]# gzip * //压缩目录下的所有文件
[root@localhost a]# ls //显示当前目录文件
a.c.gz b.h.gz d.cpp.gz
列出详细的信息
[root@localhost a]# gzip -dv * //解压文件,并列出详细信息
a.c.gz: 0.0% -- replaced with a.c
b.h.gz: 0.0% -- replaced with b.h
d.cpp.gz: 0.0% -- replaced with d.cpp
显示压缩文件的信息
[root@localhost a]# gzip -l *
compressed uncompressed ratio uncompressed_name
24 0 0.0% a.c
24 0 0.0% b.h
26 0 0.0% d.cpp
命令格式:
gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][文件...] 或 gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][目录]
参数:
-a或--ascii 使用ASCII文字模式。
-c或--stdout或--to-stdout 把压缩后的文件输出到标准输出设备,不去更动原始文件。
-d或--decompress或----uncompress 解开压缩文件。
-f或--force 强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
-h或--help 在线帮助。
-l或--list 列出压缩文件的相关信息。
-L或--license 显示版本与版权信息。
-n或--no-name 压缩文件时,不保存原来的文件名称及时间戳记。
-N或--name 压缩文件时,保存原来的文件名称及时间戳记。
-q或--quiet 不显示警告信息。
-r或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-S<压缩字尾字符串>或----suffix<压缩字尾字符串> 更改压缩字尾字符串。
-t或--test 测试压缩文件是否正确无误。
-v或--verbose 显示指令执行过程。
-V或--version 显示版本信息。
-<压缩效率> 压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。
--best 此参数的效果和指定"-9"参数相同。
--fast 此参数的效果和指定"-1"参数相同。
Linux上的解压缩命令
unzip命令
unzip命令用于解压缩zip文件,unzip为.zip压缩文件的解压缩程序。
命令格式:
unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
参数:
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f 更新现有的文件。
-l 显示压缩文件内所包含的文件。
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-t 检查压缩文件是否正确。
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 执行时显示详细的信息。
-z 仅显示压缩文件的备注文字。
-a 对文本文件进行必要的字符转换。
-b 不要对文本文件进行字符转换。
-C 压缩文件中的文件名称区分大小写。
-j 不处理压缩文件中原有的目录路径。
-L 将压缩文件中的全部文件名改为小写。
-M 将输出结果送到more程序处理。
-n 解压缩时不要覆盖原有的文件。
-o 不必先询问用户,unzip执行后覆盖原有文件。
-P<密码> 使用zip的密码选项。
-q 执行时不显示任何信息。
-s 将文件名中的空白字符转换为底线字符。
-V 保留VMS的文件版本信息。
-X 解压缩时同时回存文件原来的UID/GID。
[.zip文件] 指定.zip压缩文件。
[文件] 指定要处理.zip压缩文件中的哪些文件。
-d<目录> 指定文件解压缩后所要存储的目录。
-x<文件> 指定不要处理.zip压缩文件中的哪些文件。
-Z unzip -Z等于执行zipinfo指令。
实例:
查看压缩文件中包含的文件:
# unzip -l abc.zip
Archive: abc.zip
Length Date Time Name
-------- ---- ---- ----
94618 05-21-10 20:44 a11.jpg
202001 05-21-10 20:44 a22.jpg
16 05-22-10 15:01 11.txt
46468 05-23-10 10:30 w456.JPG
140085 03-14-10 21:49 my.asp
-------- -------
483188 5 files
-v 参数用于查看压缩文件目录信息,但是不解压该文件。
# unzip -v abc.zip
Archive: abc.zip
Length Method Size Ratio Date Time CRC-32 Name
-------- ------ ------- ----- ---- ---- ------ ----
94618 Defl:N 93353 1% 05-21-10 20:44 9e661437 a11.jpg
202001 Defl:N 201833 0% 05-21-10 20:44 1da462eb a22.jpg
16 Stored 16 0% 05-22-10 15:01 ae8a9910 ? +-|¥+-? (11).txt
46468 Defl:N 39997 14% 05-23-10 10:30 962861f2 w456.JPG
140085 Defl:N 36765 74% 03-14-10 21:49 836fcc3f my.asp
-------- ------- --- -------
483188 371964 23% 5 files
tar命令
tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。tar命令的参数结构很复杂这里只讲解常用的用法。
语法结构:
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>]
参数:
-A或--catenate 新增文件到已存在的备份文件。
-b<区块数目>或--blocking-factor=<区块数目> 设置每笔记录的区块数目,每个区块大小为12Bytes。
-B或--read-full-records 读取数据时重设区块大小。
-c或--create 建立新的备份文件。
-C<目的目录>或--directory=<目的目录> 切换到指定的目录。
-d或--diff或--compare 对比备份文件内和文件系统上的文件的差异。
-f<备份文件>或--file=<备份文件> 指定备份文件。
-F <Script文件> 或--info-script=<Script文件> 每次更换磁带时,就执行指定的Script文件。
-x或--extract或--get 从备份文件中还原文件。
-X<范本文件>或--exclude-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让ar排除符合设置条件的文件。
-z或--gzip或--ungzip 通过gzip指令处理备份文件。
-Z或--compress或--uncompress 通过compress指令处理备份文件。
-v或--verbose 显示指令执行过程。
-V<卷册名称>或--label=<卷册名称> 建立使用指定的卷册名称的备份文件。
使用实例:
压缩文件 非打包
# touch a.c
# tar -czvf test.tar.gz a.c //压缩 a.c文件为test.tar.gz
a.c
列出压缩文件内容
# tar -tzvf test.tar.gz
-rw-r--r-- root/root 0 2010-05-24 16:51:59 a.c
解压文件
# tar -xzvf test.tar.gz
a.c