tar、zip 、unzip 打包与压缩

来源:互联网 发布:照片装饰软件下载 编辑:程序博客网 时间:2024/04/30 00:19

本文出自 “水滴石穿” 博客,http://pengyl.blog.51cto.com/5591604/1191197


打包,即将许多个文件和目录合并保存为一个整体的包文件,以方便传递或携带。而压缩操作可以进一步降低打包好的包文件所占用的磁盘空间。Linux中最常用的打包命令为tar。最常用的压缩命令有两个:gzip、bzip2,用gzip制作的压缩文件通常使用扩展名“.gz”,用bzip2制作的压缩文件通常使用扩展名“.bz2”。bzip2的压缩效率比gzip更高,但是它们都只能针对单个文件进行压缩与解压,所以通常都是先通过tar命令将多个文件或目录打包成一个包文件,然后再通过gzip或bzip2进行压缩,如*.tar.gz和*.tar.bz2就属于这种先打包再压缩的文件。在实际使用中,一般都是通过tar命令来调用gzip或bzip2进行压缩或解压,而很少去单独使用gzip或bzip2命令。
命令:

      tar
功能:
        用来建立,还原备份文件
参数:
         -c或--create  创建.tar格式的包文件
         -C<目的目录>或--directory=<目的目录>  指定解压后文件存放的目的位置(注意,C是大写)

         -f<备份文件>或--file=<备份文件> 指定备份文件名,在 f 之后要立即接档名喔!不要再加参数!# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~如果加 j 参数,则以 .tar.bz2 来作为附档名~

          例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
『 tar -zcvPf tfile sfile』才对喔!
        -p :使用原文件的原来属性(属性不会依据使用者而变)
        -P :可以使用绝对路径来压缩!

         -z或--gzip或--ungzip 通过gzip指令处理备份文件

         -j 通过bzip2指令处理备份文件
         -x或--extract或--get  解开.tar格式的包文件
         -t或--list   列出备份文件的内容。
         -v或--verbose   显示指令执行过程
         -s或--same-order   还原文件的顺序和备份文件内的存放顺序相同
范例:
         将整个/home目录下的所有文件打包成home.tar。

         [root@localhost ~]# tar cvf home.tar /home

                   root@linux ~]# tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!
                   [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc<==打包后,以 gzip 压缩
                   [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc<==打包后,以 bzip2 压缩

上述指令在执行的时候,会显示一个警告讯息:
# 『tar: Removing leading `/" from member names』那是关於绝对路径的特殊设定。

查阅 /tmp/etc.tar.gz 文件内有哪些文件?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
# 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,
# 就得要加上 z 这个参数了!这很重要的!


如abc.tar.gz,里面有一个文件test.c,要单独解压到/bak目录下

  1. tar xvf abc.tar.gz -C /bak test.c


         查看所生成的包文件的大小

[root@localhost ~]# du -h home.tar
1012K   home.tar
调用gzip命令将/home目录下的所有文件打包并压缩成home.tar.gz。
[root@localhost ~]# tar zcvf home.tar.gz /home
查看所生成的压缩文件的大小
[root@localhost ~]# du -h home.tar.gz
104K    home.tar.gz
调用bzip2命令将/home目录下的所有文件打包并压缩成home.tar.gz。
[root@localhost ~]# tar jcvf home.tar.bz2 /home
查看所生成的压缩文件的大小
[root@localhost ~]# du -h home.tar.bz2
92K     home.tar.bz2
将home.tar.gz解压到当前目录下(执行命令后会在当前目录下创建一个名为home的目录,其中存放解压后的文件)
[root@localhost ~]# tar zxvf home.tar.gz
将home.tar.bz2解压到/root/home2目录中。
[root@localhost ~]# mkdir home2
[root@localhost ~]# tar jxvf home.tar.bz2 -C home2
在不解压的情况下查看压缩文件内都包括哪些内容
[root@localhost ~]# tar ztvf home.tar.gz | more
[root@localhost ~]# tar jtvf home.tar.bz2 | more
使用tar压缩时排除某个目录或文件
在/home/abc目录下有3个子目录:abc1、abc2、abc3、abc4,现在想把/home/abc目录下的abc1、abc2、abc3、打包成abc.tar.gz,不打包abc4。
cd  /home
tar  -zcvf  abc.tar.gz  --exclude=abc4  abc

zip 命令详解
功能说明:压缩文件。
语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]
补充说明:zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。
参 数:
-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 替压缩文件加上注释。

-$ 保存第一个被压缩文件所在磁盘的卷册名称。

-<压缩效率> 压缩效率是一个介于1-9的数值。


unzip 命令详解

功能说明:解压缩zip文件

语 法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]

补充说明:unzip为.zip压缩文件的解压缩程序。

参 数:

-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指令



范例:

zip命令可以用来将文件压缩成为常用的zip格式。unzip命令则用来解压缩zip文件。

1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip:

# zip -r yasuo.zip abc.txt dir1

2.我下载了一个yasuo.zip文件,想解压缩:

# unzip yasuo.zip

3.我当前目录下有abc1.zip,abc2.zip和abc3.zip,我想一起解压缩它们:

# unzip abc\?.zip

注释:?表示一个字符,如果用*表示任意多个字符。

4.我有一个很大的压缩文件large.zip,我不想解压缩,只想看看它里面有什么:

# unzip -v large.zip

5.我下载了一个压缩文件large.zip,想验证一下这个压缩文件是否下载完全了

# unzip -t large.zip

6.我用-v选项发现music.zip压缩文件里面有很多目录和子目录,并且子目录中其实都是歌曲mp3文件,我想把这些文件都下载到第一级目录,而不是一层一层建目录:

# unzip -j music.zip

7.unzip解压到指定目录
#unzip monitor-0.8.2.zip -d monitor

8.查看压缩包详细内容
[root@localhost cactiplugins]# unzip -Z monitor.zip


原创粉丝点击