zip 订阅
Zip是一个英文单词,名词意思是拉链。实际应用中,Zip有多重指向,有的是指一种软驱,有的指计算机文件压缩算法,有的指 zip code,国际通用的邮政编码方式。 展开全文
Zip是一个英文单词,名词意思是拉链。实际应用中,Zip有多重指向,有的是指一种软驱,有的指计算机文件压缩算法,有的指 zip code,国际通用的邮政编码方式。
信息
外文名
ZIP
文件格式
计算机文件的压缩的算法
发明者
菲尔·卡茨
释    义
高储存密度的磁盘驱动器与磁盘
zip软盘
100MB,200MB等多种
中文名
软驱
Zip英文单词
zip[英][zɪp] [美][zɪp]n.拉链;精力,活力;尖啸声;一种程序压缩格式;vt.给予…速度;用拉链拉上或扣上;vt.& vi.尖啸而过;(使沿某方向)快速移动;
收起全文
精华内容
下载资源
问答
  • Linux压缩打包命令——tar、zip、unzip

    万次阅读 多人点赞 2019-08-16 18:39:08
    zip命令和unzip命令 #在使用zip跟unzip命令之前先查看系统有没有安装这两个命令的包,没有的话要自己安装 查看有没有安装zip跟unzip命令的命令: rpm -q zip unzip 如果有安装了命令则会显示出命令的版本号 zip命令 ...

    打包跟压缩的区别:

    打包是指将多个文件或者目录放在一起,形成一个总的包,这样便于保存和传输,但是大小是没有变化的,压缩是指将一个或者多个大文件或者目录通过压缩算法使文件的体积变小以达到压缩的目的,可以节省存储空间,在压缩的时候通常是先打包再压缩;

    tar命令

    tar命令参数前面加”-"与不加“-”的区别:

    tar命令参数前面加不加“-”执行命令的结果是没有区别的,区别只要是在于linux风格方面,加“-”属于System V风格,不加“-”属于BSD风格,所以在使用tar命令的时候它的参数加不加“-”结果是一样的,看个人的使用方式;

    常用参数:

    tar命令的常用参数
    -z 是否同时具有gz属性
    -j 是否同时具有bz2属性
    -J 是否同时具有xz属性
    -x 解压缩、提取打包的内容
    -t 查看压缩包内容
    -c 建立一个压缩,打包文档
    -C 切换到指定目录,表示指定解压缩包的内容和打包的内容存放的目录
    -v 显示压缩或者打包的内容
    -f 使用文件名,在f后面要接压缩后的文件的名字,只要用到tar命令,-f选项是必须要用的,-f参数在使用的时候一定排在其他参数的后面,在最右边
    -p 保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
    -P 保留绝对路径

    一、打包

    实例:

    a.将/root/下的ceshi.txt文件和anaconda-ks.cfg文件和time.sh文件打包为一个文件,名称为“jihe.tar”:

    b.查看jihe.tar文件的内容:

    c.提取jihe.tar文件的内容到/opt目录下:

    如果不用“-C”指定目录则会提取内容到当前目录

    二、压缩

    linux主要有三种压缩方式:
    1.gzip:是公认的压缩这速度最快,压缩大文件的时候与其他的压缩方式相比更加明显,历史最久,应用最广泛的压缩方式
    2.bzip:压缩形成的文件小,但是可用性不如gzip
    3.xz:是最新的压缩方式,可以自动提供最佳的压缩率

    建议的压缩的时候标明后缀:

    参数 作用 命名方式
    -z 用于gzip压缩方式 文件名.tar.gz
    -j 用于bzip2压缩方式 文件名.tar.bz2
    -J 用于xz压缩方式 文件名.tar.xz

    实例:用不同的压缩方式压缩/root/目录下的Golden.apk文件

    先查看Golden.apk文件的大小:

    可以看到Golden.apk文件的大小为187M

    a.用gzip压缩方式将Golden.apk文件压缩为Golden.apk.tar.gz文件:

    b.用bzip2的压缩方式将Golden.apk文件压缩为Golden.apk.tar.bz2文件:

    从上图可以看出红色方框内有报错,这个报错的原因是缺少bzip2的包,需要安装一个bzip2软件包

    安装完成之后再重新压缩:

    在压缩的过程中,我们可以发现:

    压缩速度:gz > bz2 > xz
    压缩率:xz > bz2 > gz

    三、解压

    先删除/root/目录下的Golden.apk文件:

    tar命令式一个很聪明的命令,我们在解压的时候不需要指明自己压缩的方式它会自己选择跟压缩方式对应的方式去解压,这话说得有点拗口,例:

    a.将Golden.apk.tar.gz解压到当前目录:

    在解压gz压缩方式压缩文件的时候并不需要加上-z,直接用参数-xf即可,另外两种压缩方式在解压的时候一样,因为tar命令会自动选择,解压之后压缩文件还在,如果不指定解压出来的文件保存在哪里,那么会直接解压在当前目录

    b.指定解压出来的文件保存的目录,将Golden.apk.tar.bz2文件解压在/opt/目录下:

    补充:

    a.在打包和压缩的过程中,我们有时候会看到这样的语句:tar: 从成员名中删除开头的“/”,这个并不是报错,是因为没有加上-P选项,没有保留原来的绝对路径去打包或者压缩,提取打包的内容跟解压一样,下面举一个例子:

    将/root/目录以gzip的方式压缩为root.tar.gz压缩文件:

    1.没有加-P选项:

    2.加上-P选项:

    解压的时候同理,如果在压缩文件的时候使用了-P选项,那么在解压的时候也要加上-P选项,不然也会出现”tar: 从成员名中删除开头的“/”“,如下图:

    1.不加-P选项解压使用了-P选项压缩/root/后的root.tar.gz文件:

    2.加上-P选项解压使用了-P选项压缩/root/后的root.tar.gz文件:


    b.在使用tar压缩或者打包的时候,可以通过增加--exclude来达到排除指定的文件的目的

    将/root/目录下的harry目录打包,但是不打包harry目录下的ha.txt文件,如下图:

    压缩文件也是同理,想要排除指定的目录压缩或者打包也是同理

    zip命令和unzip命令

    #在使用zip跟unzip命令之前先查看系统有没有安装这两个命令的包,没有的话要自己安装
    查看有没有安装zip跟unzip命令的命令:

    rpm -q zip unzip

    如果有安装了命令则会显示出命令的版本号

    zip命令

    基本用法:

    zip [参数] [压缩包名] [压缩的目录或者文件的路径]

    常用参数:

    zip命令的常用参数
    -m 将文件压缩后,删除原文件
    -o 将压缩文件内的所有文件的最新变动时间设为压缩的时间
    -q 安静模式,在压缩的时候不显示指令执行的过程
    -r 递归压缩,将自定目录下的所有子文件以及文件一起处理
    -x ”文件列表“,压缩时排除文件列表中的文件

     

    实例:

    a.压缩目录,将/root/目录下的harry目录压缩为名为harry.zip压缩包:

    1.正常压缩,不加-q选项,显示压缩的过程:

    2.加上-q选项,安静模式输出,不显示压缩的过程:

    b.压缩多个文件,将/root/目录下的ceshi.txt文件和anaconda-ks.cfg文件和Golden.apk文件压缩为名为jihe.zip的压缩包:

    因为压缩的全是文件,所以可以不用加上-r选项

    c.压缩文件跟目录,将/root/下的ceshi.txt文件和anaconda-ks.cfg文件和harry目录压缩成名为dajihe.zip的压缩包:

    d.将/root/目录下的harry目录压缩为harry1.zip压缩包,排除harry目录下的ha.txt文件:

    unzip命令

    基本用法:

    unzip [参数] [压缩文件]  (-d [目录])  //如果不是用括号里面的内容,则解压文件在当前工作目录

    常用参数:

    unzip命令的常用参数
    -c 将解压缩的结果显示到屏幕上(显示每一个目录下的每一个文件的内容),同时对字符做适当的转换,但是并没有解压压缩包
    -l 显示压缩文件内所包含的文件
    -t 检查压缩文件是否正确
    -v 执行时显示压缩文件的详细信息
    -q 安静模式,执行时不显示任何信息
    -d 指定文件解压后存储的目录
    -x 指定不要处理压缩文件中的那些文件

    实例:

    a.将harry.zip压缩包解压缩的结果显示出来:

    具体会显示到每一个文件跟每一个文件的内容

    b.显示jihe.zip压缩包里面锁包含的文件

    c.检查dajihe.zip压缩文件是否正确:

    全部OK表示全部文件都是正确的

    d.不解压压缩文件dajihe.zip,查看压缩包里面的内容(查看显示的文件列表还包含压缩比率):

    #使用-v显示的信息比使用-l显示的信息更加详细

    e.将dajihe.zip压缩包解压到/opt/目录下:

    补充:使用r选项增加.tar归档文件的内容应该如何怎么操作?

    我们先来了解一下tar命令-r选项的作用:

    通过tar --help命令查看帮助

    -r选项的作用:把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中

    使用实例:

    看上图,可以看到我ops用户家目录下标记了一个文件,一个目录,我现在先将目录归档,然后再将文件追加到档案里面

    1.归档操作

    生成.tar文件,目录归档完毕!

    2.将calculating_time.sh追加进入.tar文件中

    3.验证

    a.查看.tar文件的归档信息

    可以看到calculating_time.sh文件已经被追加到档案的末尾了

    b.提取Check_Configuration_20201118_PM.tar 到/mnt目录下

    使用-r选项追加文件至.tar文件成功

    展开全文
  • Linux下如何解压.zip和.rar文件

    万次阅读 2019-03-25 15:52:10
    Linux下如何解压.zip和.rar文件,对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们: 1)对于ziplinux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,这里只做...

    Linux下如何解压.zip和.rar文件,对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们:

     1)对于zip 

    linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,这里只做简单介绍,举例说明一下其用法:

     # zip all.zip *.jpg 

    这条命令是将所有.jpg的文件压缩成一个zip包

    # unzip all.zip 

    这条命令是将all.zip中的所有文件解压出来

     2)对于.rar

    要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux 不是免费的;可从http://www.rarsoft.com/download.htm下载RAR 3。60 for Linux ,然后安装:

    # tar -xzpvf rarlinux-3.2.0.tar.gz 
    # cd rar 
    # make 

    这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。它们的参数选项很多,举例说明一下其用法:

    # rar a all *.jpg 

    这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar 扩展名将自动附加到包名后。

    # unrar e all.rar 

    这条命令是将all.rar中的所有文件解压出来

     3)总结 


    1、*.tar 用 tar –xvf 解压 
    2、*.gz 用 gzip -d或者gunzip 解压 
    3、*.tar.gz和*.tgz 用 tar –xzf 解压 
    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 解压 


    详细出处参考:http://www.jb51.net/LINUXjishu/43356.html

    展开全文
  • ubuntu linux zip和unzip类命令详解

    万次阅读 2017-05-10 14:13:48
    1.zip $ zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzip $ unzip -o -d /home/sunny myfile.zip 把myfile.zip文件解压到 /home/...
    微信搜索关注公众号 “郑州行疆户外” 了解软件工程师的业余户外生活
     
    1.zip
    $ zip -r myfile.zip ./*
    将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件.
     
    2.unzip
    $ unzip -o -d /home/sunny myfile.zip
    把myfile.zip文件解压到 /home/sunny/
    -o:不提示的情况下覆盖文件;
    -d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下;
     
    3.其他
    $ zip -d myfile.zip smart.txt
    删除压缩文件中smart.txt文件
    $ zip -m myfile.zip ./rpm_info.txt
    向压缩文件中myfile.zip中添加rpm_info.txt文件
     
    -------------------------------------------------------------------------------
     
    要使用 zip 来压缩文件,在 shell 提示下键入下面的命令:
     
    zip -r filename.zip filesdir
     
    在这个例子里,filename.zip 代表你创建的文件,filesdir 代表你想放置新 zip 文件的目录。-r 选项指定你想递归地(recursively)包括所有包括在 filesdir 目录中的文件。
     
    要抽取 zip 文件的内容,键入以下命令:
     
    unzip filename.zip
     
    你可以使用 zip 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:
     
    zip -r filename.zip file1 file2 file3 /usr/work/school
     
    上面的命令把 file1、file2、 file3、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.zip 文件中。
     
    zip Linux上适用的参数:
    -1 : 最快压缩,压缩率最差。
    -9 : 最大压缩,压缩率最佳。
    -b : 暂存文件的路径。这个参数一般在要产生的 zip 文件存在,而硬盘现有空间不足时。
    -c : 替新增或更新的文件增加一行注解。
    -d : 从 zip 文件移出一个文件。
    -D : 不要在 zip 文件中储存文件的目录信息。
    -f : 以新文件取代现有文件。
    -F : 修复已经损毁的压缩文件。
    -g : 将文件压缩附加到 zip 文件中。
    -h : 显示辅助说明。
    -i : 指定要含入的某些特定文件。
    -j : 只储存文件的名称,不含目录。
    -k : 强迫使用 MSDOS 格式文件名。
    -l : 将 CR ( Carriage Return ) LF ( Line Feed ) 转换成 LF,一般是要将 MS-DOS 上的文本文件压缩后拿到 UNIX 下使用时才使用此参数。这只适用于文本文件 ( .txt ),如果用于二进制文件则会造成二进制文件损毁。
    -L : 显示 zip 命令的版权。
    -m : 将特定文件移入 zip 文件中,并且删除特定文件。
    -n : 不压缩特定扩展名的文件。
    -o : 将 zip 文件的时间设成最后修正 zip 文件的时间。
    -q : 安静模式,不会显示相关讯息和提示。
    -r : 包括子目录。
    -t : 只处理 mmddyy 日期以后的文件。
    -T : 测试 zip 文件是否正常。
    -u : 只更新改变过的文件和新文件。
    -v : 显示版本资讯或详细讯息。
    -x : 不需要压缩的文件。
    -y : 将 symbolic link 压缩,而不是压缩所连结到的文件。
    -z : 为 zip 文件增加注解。
    -# : 设定压缩速度,-0 表示不压缩,-1 表示最快速度的压缩,
    -9 表示最慢速度的压缩 ( 最佳化的压缩 ),预设值为 -6。
    -@ : 从标准输入读取文件名称。
     
    unzip Linux上适用的参数:
     
      -x 文件列表 解压缩文件,但不包括指定的file文件。
     
    -v 查看压缩文件目录,但不解压。
     
    -t 测试文件有无损坏,但不解压。
     
    -d 目录 把压缩文件解到指定目录下。
     
    -z 只显示压缩文件的注解。
     
    -n 不覆盖已经存在的文件。
     
    -o 覆盖已存在的文件且不要求用户确认。
     
    -j 不重建文档的目录结构,把所有文件解压到同一目录下。
     
    例1:将压缩文件text.zip在当前目录下解压缩。
     
    $ unzip text.zip
     
    例2:将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件。
     
      $ unzip -n text.zip -d /tmp
     
    例3:查看压缩文件目录,但不解压。
     
    $ unzip -v text.zip
     
    zgrep命令
     
    这个命令的功能是在压缩文件中寻找匹配的正则表达式,用法和grep命令一样,只不过操作的对象是压缩文件。如果用户想看看在某个压缩文件中有没有某一句话,便可用zgrep命令。
     
    按照约定俗成,用 gzip 来压缩的文件的扩展名是 .gz;用 bzip2 来压缩的文件的扩展名是 .bz2;用 zip 压缩的文件的扩展名是 .zip。
     
    用 gzip 压缩的文件可以使用 gunzip 来解压;用 bzip2 压缩的文件可以使用 bunzip2 来解压;用 zip 压缩的文件可以使用 unzip 来解压。
    bzip2 和 bunzip2
     
    要使用 bzip2 来压缩文件,在 shell 提示下键入以下命令:
     
    bzip2 filename
     
    文件即会被压缩并被保存为 filename.bz2。
     
    要扩展压缩的文件,键入以下命令:
     
    bunzip2 filename.bz2
     
    filename.bz2 文件会被删除,而继之以 filename。
     
    你可以使用 bzip2 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:
     
    bzip2 filename.bz2 file1 file2 file3 /usr/work/school
     
    上面的命令把 file1、file2、 file3、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.bz2 文件中。
     
    gzip 和 gunzip
     
    要使用 gzip 来压缩文件,在 shell 提示下键入以下命令:
     
    gzip filename
     
    文件即会被压缩,并被保存为 filename.gz。
     
    要扩展压缩的文件,键入以下命令:
     
    gunzip filename.gz
     
    filename.gz 会被删除,而继之以 filename。
     
    你可以使用 gzip 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:
     
    gzip -r filename.gz file1 file2 file3 /usr/work/school
     
    上面的命令把 file1、file2、 file3、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.gz 文件中。
       
     
    要获得有关这两个命令的详细信息,在 shell 提示下键入 man gzip 和 man gunzip 来阅读 gzip 和 gunzip 命令的说明书页。
    zip 和 unzip
     
    要使用 zip 来压缩文件,在 shell 提示下键入下面的命令:
     
    zip -r filename.zip filesdir
     
    在这个例子里,filename.zip 代表你创建的文件,filesdir 代表你想放置新 zip 文件的目录。-r 选项指定你想递归地(recursively)包括所有包括在 filesdir 目录中的文件。
     
    要抽取 zip 文件的内容,键入以下命令:
     
    unzip filename.zip
     
    你可以使用 zip 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:
     
    zip -r filename.zip file1 file2 file3 /usr/work/school
     
    上面的命令把 file1、file2、 file3、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.zip 文件中。
     
     

    如果觉得写得不错,烦请微信搜索公众号 "郑州行疆户外" 了解程序员的户外业余喜好。

    展开全文
  • ZIP文件格式分析

    万次阅读 多人点赞 2016-06-12 14:55:41
    官方文档https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.2.0.txt格式说明在官方文档中给出的ZIP格式如下: Overall .ZIP file format: [local file header 1] [file data 1] [data descriptor 1] . . ...

    官方文档

    https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.2.0.txt

    格式说明

    在官方文档中给出的ZIP格式如下:

      Overall .ZIP file format:
    
        [local file header 1]
        [file data 1]
        [data descriptor 1]
        . 
        .
        .
        [local file header n]
        [file data n]
        [data descriptor n]
        [archive decryption header] (EFS)
        [archive extra data record] (EFS)
        [central directory]
        [zip64 end of central directory record]
        [zip64 end of central directory locator] 
        [end of central directory record]
    

    通常情况下,我们用到的ZIP文件格式:

    [local file header + file data + data descriptor]{1,n} + central directory + end of central directory record
    即
    [文件头+文件数据+数据描述符]{此处可重复n次}+核心目录+目录结束标识
    
    当压缩包中有多个文件时,就会有多个[文件头+文件数据+数据描述符]
    

    本片文章讨论的就是这种通常用到的ZIP文件格式,若想了解完整的ZIP文件格式,请看官方文档。

    压缩源文件数据区

    [local file header + file data + data descriptor]

    记录着压缩的所有文件的内容信息,每个压缩文件都由local file header 、file data、data descriptor三部分组成,在这个数据区中每一个压缩的源文件/目录都是一条记录。

    ### local file header 文件头
    用于标识该文件的开始,记录了该压缩文件的信息。

    Offset Bytes Description
    0 4 Local file header signature = 0x04034b50 (read as a little-endian number) 文件头标识,值固定(0x04034b50)
    4 2 Version needed to extract (minimum) 解压文件所需 pkware最低版本
    6 2 General purpose bit flag 通用比特标志位(置比特0位=加密,详情见后)
    8 2 Compression method 压缩方式(详情见后)
    10 2 File last modification time 文件最后修改时间
    12 2 File last modification date 文件最后修改日期
    14 4 CRC-32 CRC-32校验码
    18 4 Compressed size 压缩后的大小
    22 4 Uncompressed size 未压缩的大小
    26 2 File name length (n) 文件名长度
    28 2 Extra field length (m) 扩展区长度
    30 n File name 文件名
    30+n m Extra field 扩展区

    general purpose bit flag: (2 bytes) 通用位标记

          Bit 0: If set, indicates that the file is encrypted.
    
          (For Method 6 - Imploding)
          Bit 1: If the compression method used was type 6,
                 Imploding, then this bit, if set, indicates
                 an 8K sliding dictionary was used.  If clear,
                 then a 4K sliding dictionary was used.
          Bit 2: If the compression method used was type 6,
                 Imploding, then this bit, if set, indicates
                 3 Shannon-Fano trees were used to encode the
                 sliding dictionary output.  If clear, then 2
                 Shannon-Fano trees were used.
    
          (For Methods 8 and 9 - Deflating)
          Bit 2  Bit 1
            0      0    Normal (-en) compression option was used.
            0      1    Maximum (-exx/-ex) compression option was used.
            1      0    Fast (-ef) compression option was used.
            1      1    Super Fast (-es) compression option was used.
    
          Note:  Bits 1 and 2 are undefined if the compression
                 method is any other.
    
          Bit 3: If this bit is set, the fields crc-32, compressed 
                 size and uncompressed size are set to zero in the 
                 local header.  The correct values are put in the 
                 data descriptor immediately following the compressed
                 data.  (Note: PKZIP version 2.04g for DOS only 
                 recognizes this bit for method 8 compression, newer 
                 versions of PKZIP recognize this bit for any 
                 compression method.)
    
          Bit 4: Reserved for use with method 8, for enhanced
                 deflating. 
    
          Bit 5: If this bit is set, this indicates that the file is 
                 compressed patched data.  (Note: Requires PKZIP 
                 version 2.70 or greater)
    
          Bit 6: Strong encryption.  If this bit is set, you should
                 set the version needed to extract value to at least
                 50 and you must also set bit 0.  If AES encryption
                 is used, the version needed to extract value must 
                 be at least 51.
    
          Bit 7: Currently unused.
    
          Bit 8: Currently unused.
    
          Bit 9: Currently unused.
    
          Bit 10: Currently unused.
    
          Bit 11: Currently unused.
    
          Bit 12: Reserved by PKWARE for enhanced compression.
    
          Bit 13: Used when encrypting the Central Directory to indicate 
                  selected data values in the Local Header are masked to
                  hide their actual values.  See the section describing 
                  the Strong Encryption Specification for details.
    
          Bit 14: Reserved by PKWARE.
    
          Bit 15: Reserved by PKWARE.
    

    compression method: (2 bytes) 压缩方式

          (see accompanying documentation for algorithm
          descriptions)
    
          0 - The file is stored (no compression)
          1 - The file is Shrunk
          2 - The file is Reduced with compression factor 1
          3 - The file is Reduced with compression factor 2
          4 - The file is Reduced with compression factor 3
          5 - The file is Reduced with compression factor 4
          6 - The file is Imploded
          7 - Reserved for Tokenizing compression algorithm
          8 - The file is Deflated
          9 - Enhanced Deflating using Deflate64(tm)
         10 - PKWARE Data Compression Library Imploding
         11 - Reserved by PKWARE
         12 - File is compressed using BZIP2 algorithm
    

    file data 文件数据

    记录了相应压缩文件的数据

    data descriptor 数据描述符

    用于标识该文件压缩结束,该结构只有在相应的local file header中通用标记字段的第3bit设为1时才会出现,紧接在压缩文件源数据后。这个数据描述符只用在不能对输出的 ZIP 文件进行检索时使用。例如:在一个不能检索的驱动器(如:磁带机上)上的 ZIP 文件中。如果是磁盘上的ZIP文件一般没有这个数据描述符。

    Offset Bytes Description
    0 4 crc-32 CRC-32校验码
    4 4 compressed size 压缩后的大小
    8 4 uncompressed size 未压缩的大小

    ## Central directory 核心目录
    记录了压缩文件的目录信息,在这个数据区中每一条纪录对应在压缩源文件数据区中的一条数据。

    核心目录结构如下:

    Offset Bytes Description
    0 4 Central directory file header signature = 0x02014b50 核心目录文件header标识=(0x02014b50)
    4 2 Version made by 压缩所用的pkware版本
    6 2 Version needed to extract (minimum) 解压所需pkware的最低版本
    8 2 General purpose bit flag 通用位标记
    10 2 Compression method 压缩方法
    12 2 File last modification time 文件最后修改时间
    14 2 File last modification date 文件最后修改日期
    16 4 CRC-32 CRC-32校验码
    20 4 Compressed size 压缩后的大小
    24 4 Uncompressed size 未压缩的大小
    28 2 File name length (n) 文件名长度
    30 2 Extra field length (m) 扩展域长度
    32 2 File comment length (k) 文件注释长度
    34 2 Disk number where file starts 文件开始位置的磁盘编号
    36 2 Internal file attributes 内部文件属性
    38 4 External file attributes 外部文件属性
    42 4 relative offset of local header 本地文件头的相对位移
    46 n File name 目录文件名
    46+n m Extra field 扩展域
    46+n+m k File comment 文件注释内容

    End of central directory record(EOCD) 目录结束标识

    目录结束标识存在于整个归档包的结尾,用于标记压缩的目录数据的结束。每个压缩文件必须有且只有一个EOCD记录。

    Offset Bytes Description
    0 4 End of central directory signature = 0x06054b50 核心目录结束标记(0x06054b50)
    4 2 Number of this disk 当前磁盘编号
    6 2 number of the disk with the start of the central directory 核心目录开始位置的磁盘编号
    8 2 total number of entries in the central directory on this disk 该磁盘上所记录的核心目录数量
    10 2 total number of entries in the central directory 核心目录结构总数
    12 4 Size of central directory (bytes) 核心目录的大小
    16 4 offset of start of central directory with respect to the starting disk number 核心目录开始位置相对于archive开始的位移
    20 2 .ZIP file comment length(n) 注释长度
    22 n .ZIP Comment 注释内容

    样例分析

    这里只考虑最简单的一种场景,只包括一个文本文件的压缩文件。
    新建一个名为123.txt的文本文件,内容为123456
    将123.txt压缩为123.zip

    使用winhex打开123.zip(注:winhex是以小端模式展示数据的)

    这里写图片描述

    Offset Bytes Contents Descriptor
    LOCAL FILE HEADER
    00000000 4 50 4B 03 04 文件头标识(0x04034b50)
    00000004 2 0A 00 解压文件所需 pkware最低版本
    00000006 2 00 00 通用比特标志位
    00000008 2 08 00 压缩方式
    0000000A 2 E1 5D 文件最后修改时间
    0000000C 2 CC 48 文件最后修改日期
    0000000E 4 61 D3 72 09 crc-32校验码
    00000012 4 08 00 00 00 压缩后的大小
    00000016 4 06 00 00 00 未压缩的大小
    0000001A 2 07 00 文件名长度
    0000001C 2 00 00 扩展区长度
    0000001E 6 31 32 33 2E 74 78 74 文件名 123.txt
    FILE DATA
    00000025 8 33 34 32 36 31 35 03 00 压缩文件数据,此处就是压缩文本文件123.txt压缩后的数据
    Central Directory Header
    0000002D 4 50 4B 01 02 核心目录文件header标识=(0x02014b50)
    00000031 2 0A 00 压缩所用的pkware版本
    00000033 2 0A 00 解压所需pkware的最低版本
    00000035 2 00 00 通用位标记
    00000037 2 08 00 压缩方法
    00000039 2 E1 5D 文件最后修改时间
    0000003B 2 CC 48 文件最后修改日期
    0000003D 4 61 D3 72 09 CRC-32校验码
    00000041 4 08 00 00 00 压缩后的大小
    00000045 4 06 00 00 00 未压缩的大小
    00000049 2 07 00 文件名长度
    0000004B 2 00 00 扩展域长度
    0000004D 2 00 00 文件注释长度
    0000004F 2 00 00 文件开始位置的磁盘编号
    00000051 2 00 00 内部文件属性
    00000053 4 20 00 00 00 外部文件属性
    00000057 4 00 00 00 00 本地文件header的相对位移
    0000005B 7 31 32 33 2E 74 78 74 目录文件名
    End of central directory record
    00000062 4 50 4B 05 06 核心目录结束标记(0x06054b50)
    00000066 2 00 00 当前磁盘编号
    00000068 2 00 00 核心目录开始位置的磁盘编号
    0000006A 2 01 00 该磁盘上所记录的核心目录数量
    0000006C 2 01 00 核心目录结构总数
    0000006E 4 35 00 00 00 核心目录的大小
    00000072 4 2D 00 00 00 核心目录开始位置相对于archive开始的位移
    00000076 2 00 00 注释长度

    参考文献

    [1] 官方文档 - APPNOTE-6.2.0.txt
    [1] zip文件格式分析 - A Flying Bird - 博客频道 - CSDN.NET
    [2] zip文件格式说明_elly_新浪博客
    [3] ZIP文件格式详解 - sony303的专栏 - 博客频道 - CSDN.NET
    [4] ZIP文件格式详解 - 董盼山的专栏 - 博客频道 - CSDN.NET
    [5] zip格式分析 - lianghongge的专栏 - 博客频道 - CSDN.NET

    展开全文
  • linux下zip

    万次阅读 2020-10-14 22:08:19
    zip file1.zip file1 创建一个zip格式的压缩包 zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包 unzip file1.zip 解压一个zip格式压缩包
  • Java解压缩zip - 解压缩多个文件或文件夹

    万次阅读 多人点赞 2012-09-19 12:56:50
    Java解压缩zip - 多个文件(包括文件夹) 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压。 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参数列表里面... ZipFiles(zip...
  • java解压zip文件

    万次阅读 2020-09-03 10:57:01
    import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import java.io.*; import java.util.Enumeration; public class FileUnZipUtils { /** * 解压zip文件 * @author xiyue * @...
  • 《手把手教你》 mysql5.6.zip格式压缩版安装教程

    万次阅读 多人点赞 2017-11-03 13:19:00
    前言:MySQL是一个关系型数据库管理系统,官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的。不过很多人都是下载的是zip格式的安装包,解压却发现没有setup.exe安装程序,所以今天我们介绍的是zip格式的...
  • nodejs zip 解压zip文件

    千次阅读 2017-12-08 11:24:02
    unzip 解压zip localzip bufferr
  • 7-zip批处理解压zip文件

    千次阅读 热门讨论 2019-02-27 16:32:14
    zip=C:\Program Files\7-Zip\7z.exe" for /r %%i in ("*.zip") do ( "%zip%" x %%i -y -aos -o"*\" ) del %cd%\*.zip pause 具体使用方法...
  • linux压缩命令常用:tar,tgz,gzip,zip,rar

    万次阅读 多人点赞 2018-06-02 11:27:14
    linux压缩命令常用的有三个:tar,tgz,gzip,zip 一,tar (一) tar压缩命令 tar -cvf examples.tar files|dir #说明: -c, --create create a new archive 创建一个归档文件 -v, --verbose verbosely list...
  • linux解压zip文件,

    万次阅读 2019-07-11 21:06:06
    一,linux解压zip文件,命令:unzip 如果没有该命令,可先安装,命令为:yum -y install unzip
  • 跟往常一样,在AS上下载gradle的速度实在是太慢了,导致项目一直无法编译,在此将下载出来的gradle-5.4.1分享出来:gradle-5.4.1-all.zip 具体的配置方式和下载文件的放置,请参考Android Studio2.3和Gradle-3.3...
  • Oracle11g客户端绿色版.zip

    千次下载 热门讨论 2011-09-23 13:04:03
    Oracle11g客户端OrOracle11g客户端绿色版.zipacle11g客户端绿色版.zip绿色版.zip
  • jbpm-4.4.zip

    千次下载 热门讨论 2011-01-10 18:17:23
    jbpm-4.4.zip比较新的jbpm工具~~~
  • zip.js 实现前端解压 zip字符串

    千次阅读 2019-08-26 08:41:53
    获得一串json数据体后按用户对称加密再zip压缩转base64分发. 由用户手动复制字符串黏贴到应用输入框中进行更新. 简要实现方式 由java端进行 json数据体的 加密->zip->base64 由页面端进行解密 页面端解密方式...
  • ZipEntry 类,zip的压缩与解压

    千次阅读 2019-07-18 18:33:49
    ZipEntry 类是java.util.zip包下的一个类, ZipEntry 类用于表示 ZIP 文件条目。 利用这个类压缩和解压zip文件 具体压缩的例子如下: import java.io.File; import java.io.FileInputStream; import java.io....
  • 今天下载数据集时, 发现下载下来的压缩文件是 .zip.001 .zip.002 .zip.003 的。 不能直接使用 unzip 来解压。 2. 解决方法 将多个zip 文件合并成一个zip 文件,就能解压了。 cat dataset_test_rgb.zip* > ...
  • Python压缩解压zip,Django下载zip文件

    千次阅读 2019-09-05 20:07:53
    python压缩文件 ...def convert_zip(zip_path, save_path): ''' # zip_path 要压缩文件的路径 # save_path 文件压缩后保存的路径 ''' local_path = os.path.join(zip_path, "x.xls") zip ...
  • 一、zip()函数 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,...
  • Linux zip压缩或者zip解压文件

    千次阅读 2018-02-28 13:55:31
    tar -zcvf /home/xahot.tar.gz /xahottar -zcvf 打包后生成的文件名全...zip 压缩方法: 压缩当前的文件夹 zip -r ./xahot.zip ./* -r表示递归zip [参数] [打包后的文件名] [打包的目录路径]解压 unzip xahot.zip...
  • java.util.zip.ZipException: error in opening zip file 这个问题的字面意思是压缩包打不开, 我这出现的问题是jar包损坏,打不开。 linux系统可以使用命令判断jar 是否正常: jar -vtf xxx.jar ...
  • python3使用zip及打印zip的值

    千次阅读 2020-08-25 00:42:35
    1.使用zip打包 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组tuple,然后返回由这些元组组成的列表list。 x_data = [1.0, 2.0, 3.0] y_data = [2.0, 4.0, 6.0] # 使用zip函数,将x_data...
  • zip分卷压缩

    万次阅读 2019-04-09 11:39:14
    zip分卷压缩 首先将其压缩成一个大的zip压缩包之后再分卷 zip -r a.zip dir 2.将压缩完的大压缩包zip分卷 zip -s (1G|500M) a.zip --out b.zip 命令执行完会在文件夹下生成b.zip、b.z01、b.z02…等 在windows环境下...
  • 官网类: class HZip { /** * Add files and sub-directories in a folder to zip file. * @param string $folder * @param ZipArchive $zipFile * @param int $exclusiveLength Number of t
  • C++ zip文件压缩解压缩 qt解压zip

    千次阅读 2018-03-30 17:18:22
    //解压缩 For unzipping, add "unzip.cpp" to your project.... HZIP hz = OpenZip("c:\\stuff.zip",0); ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.ind...
  • Linux 安装 zip unzip

    万次阅读 2018-08-17 10:33:29
    Linux 安装 zip unzip  1.apt-get 安装 apt-get install zip 2.yum 安装 yum install -y unzip zip 命令实例  1、把/home目录下面的mydata目录压缩为mydata.zip 1 cd /home #进入/home目录...
  • linux解压zip文件

    万次阅读 2018-12-25 19:04:40
    1.解压file.zip unzip file.zip 2.压缩文件 zip -r archive_name.zip directory_to_compress   或者 TAR Tar是在Linux中使用得非常广泛的文档打包格式。它的好处...
  • Python实战-暴力破解zip文件解压密码

    万次阅读 多人点赞 2018-08-24 19:31:03
    使用Python暴力解压传统加密的ZIP文件。
  • Python压缩解压zip文件

    万次阅读 多人点赞 2018-06-28 11:37:09
    一、python压缩指定文件夹def zip_file(src_dir): zip_name = src_dir +'.zip' z = zipfile.ZipFile(zip_name,'w',zipfile.ZIP_DEFLATED) for dirpath, dirnames, filenames in os.walk(src_dir): fpath ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 496,540
精华内容 198,616
关键字:

zip