我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar。可是Linux就不同 了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使 用,不过在Linux使用.zip和.rar的人就太少了。而且Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另外的工具将这一大堆文件先打 成一个包,然后再就原来的压缩程序进行压缩。
Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲tar命令。
tar
语法
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<范本样式>][--force-local][--group=<群组名称>][--help][--ignore-failed-read][--new-volume-script=<Script文件>][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<区块数目>][--recursive-unlink][--remove-files][--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>][--totals][--use-compress-program=<执行指令>][--version][--volno-file=<编号文件>][文件或目录...]
选项
对象 | 说明 |
---|---|
-A或--catenate | 新增文件到以存在的备份文件; |
-B | 设置区块大小; |
-c或--create | 建立新的备份文件; |
-C <目录> | 这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。 |
-d | 记录文件的差别; |
-x或--extract或--get | 从备份文件中还原文件; |
-t或--list | 列出备份文件的内容; |
-z或--gzip或--ungzip | 通过gzip指令处理备份文件; |
-Z或--compress或--uncompress | 通过compress指令处理备份文件; |
-f<备份文件>或--file=<备份文件> | 指定备份文件; |
-v或--verbose | 显示指令执行过程; |
-r | 添加文件到已经压缩的文件; |
-u | 添加改变了和现有的文件到已经存在的压缩文件; |
-j | 支持bzip2解压文件; |
-v | 显示操作过程; |
-l | 文件系统边界设置; |
-k | 保留原有文件不覆盖; |
-m | 保留文件不被覆盖; |
-w | 确认压缩文件的正确性; |
-p或--same-permissions | 用原来的文件权限还原文件; |
-P或--absolute-names | 文件名使用绝对名称,不移除文件名称前的“/”号; |
-N <日期格式> 或 --newer=<日期时间> | 只将较指定日期更新的文件保存到备份文件里; |
--exclude=<范本样式> | 排除符合范本样式的文件。 |
实例
tar -jtv -f filename.tar.bz2 # 查 询
tar –xvf file.tar # 解压 tar包
tar -xzvf file.tar.gz -C 欲解压缩的目录 # 解压tar.gz
tar -xjvf file.tar.bz2 # 解压 tar.bz2
tar –xZvf file.tar.Z # 解压tar.Z
zip
zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。
语法
zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]
选项
对象 | 说明 |
---|---|
-A | 调整可执行的自动解压缩文件。 |
-b<工作目录> | 指定暂时存放文件的目录。 |
-c | 替每个被压缩的文件加上注释。 |
-d | 从压缩文件内删除指定的文件。 |
-D | 压缩文件内不建立目录名称。 |
-f | 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。 |
-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 | 更换较新的文件到压缩文件内。 |
-v | 显示指令执行过程或显示版本信息。 |
-V | 保存VMS操作系统的文件属性。 |
-w | 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。 |
-x<范本样式> | 压缩时排除符合条件的文件。 |
-X | 不保存额外的文件属性。 |
-y | 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。 |
-z | 替压缩文件加上注释。 |
-$ | 保存第一个被压缩文件所在磁盘的卷册名称。 |
实例
将 /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
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。 |
-d<目录> | 指定文件解压缩后所要存储的目录。 |
-x<文件> | 指定不要处理.zip压缩文件中的哪些文件。 |
-Z | unzip -Z等于执行zipinfo指令。 |
实例
unzip -l file.zip #查看压缩文件中包含的文件
unzip -v file.zip #查看压缩文件目录信息,但是不解压该文件
unzip -n file.zip -d 欲解压的目录 # 解压文件