我们中的一些人几十年来一直在Unix和Linux系统上压缩文件,以节省一些磁盘空间并将文件打包在一起存档。即便如此,还是有一些有趣的变化不是我们所有人都尝试过的。所以,在这篇文章中,我们将看看标准的压缩和解压缩,以及其他一些有趣的压缩选项。
基本的zip命令
首先,让我们看看基本的邮政编码命令。它使用的压缩算法与gzip,但有几个重要的区别。首先,gzip命令仅用于压缩单个文件,其中zip既可以压缩文件,又可以将它们合并到一个归档文件中。另一方面,gzip命令压缩“in place”。换句话说,它会留下一个压缩文件——而不是原始文件和压缩副本。下面是gzip在工作中的一个例子:
$ ls -l -rw-rw-r- 1 shs shs 10514 Jan 15 13:13 one efile.gz
这里的邮政。注意,这个命令要求为压缩的存档提供一个名称,其中gzip只使用原始文件名并添加.gz扩展名。
$ ls -l -rw-rw-r- 1 shs 58021 Jan 15 13:25 file1 -rw-rw-r- 1 shs 58933 Jan 15 13:34 file2 -rw-rw-r- 1 shs shs 21289 Jan 15 13:35 twofile .zip
还要注意,原始文件仍然在那里。
所节省的磁盘空间量(即,the degree of compression obtained) will depend on the content of each file. The variation in the example below is considerable.
添加:bin/append(放气64%)添加:bin/BoD_meeting(放气18%)添加:bin/cpuhog1(放气14%)添加:bin/cpuhog2(存储0%)添加:bin/ff(放气32%)添加:bin/文件。0(放气1%)添加:bin/loop(放气14%)添加:bin/notes(放气23%)添加:bin/patterns(存储0%)添加:bin/runme(存储0%)添加:bin/tryme(放气13%)添加:bin/tt(放气6%)
unzip命令
的解压缩命令将从zip文件恢复内容,并且,正如您可能会怀疑的那样,保留zip文件不变,而类似的gunzip命令只保留未压缩的文件。
文件1 - 1 - 2 - 2 - 3 - 1 shs shs 58021 Jan 15 13:25 1 shs shs 58933 Jan 15 13:34 1 shs shs 58933 Jan 15 13:34 1 shs shs 21289 Jan 15 13:35 2 - 2 .zip
zipcloak命令
的zipcloak命令对zip文件进行加密,提示您输入两次密码(以帮助确保您不会“胖手指”它)并保留该文件。您可以预期文件大小会与原始文件大小稍有不同。
输入密码:验证密码:file1加密:file2 $ ls -l total 204 -rw-rw-r- 1 shs shs 58021 Jan 15 13:25 file1 -rw-rw-r- 1 shs shs 58933 Jan 15 13:34 file2 -rw-rw-r- 1 shs shs 21313 Jan 15 13:46 two of .zip <==略大于未加密版本
请记住,原始文件仍未加密。
zipdetails命令
的zipdetails命令将向您显示详细信息- a很多压缩文件的详细信息,可能比您想要了解的多得多。即使我们查看的是加密文件,zipdetails也会显示文件名、文件修改日期、用户和组信息、文件长度数据等。请记住,这些都是“元数据”。We don't see the contents of the files.
$ zipdetails twofiles.zip 0000 LOCAL HEADER#1 04034B50 0004提取邮编规格14 '2.0' 0005提取OS 00 'MS-DOS' 0006通用标志0001 [位0] 1 '加密'[位1-2] 1“的最大压缩” 0008压缩方法0008‘平减’000A最后国防部时间4E2F6B24‘周二1月15日13时25分08秒2019’000E CRC F1B115BD 0012压缩长度00002904 0016未压缩的长度0000E2A5 001A文件名长度0005 001C额外长度001C 001E文件名‘文件1’0023额外的ID#0001 5455 'UT:扩展时间戳' 0025长0009 0027标志'03 MOD访问0028国防部时间5C3E2584 '周二1月15日13时25分08秒2019' 002C访问时间5C3E27BB“周二1月15日13点34分35秒2019'0030额外ID#0002 7875 'UX:Unix的额外的类型3' 0032长度000B 0034版01 0035 UID尺寸04 0036 UID 000003E8 003A GID尺寸04 003B GID 000003E8 003F PAYLOAD 2943 LOCAL HEADER#2 04034B50 2947提取邮编规格14' 2.0'2948提取OS 00 'MS-DOS' 2949通用标志0001 [位0] 1 '加密'[位1-2] 1 '最大压缩' 294Bçompression法0008 '平减' 294D最后国防部时间4E2F6C56 '周二1月15日13时34分44秒2019' 2951 CRC EC214569 2955压缩长度00002913 2959未压缩的长度0000E635 295D文件名长度0005 295F额外长度001C 2961名 '文件2' 2966超ID#0001 5455 'UT:扩展时间戳' 2968长0009 296A旗'03 MOD访问296B国防部时间5C3E27C4 '周二1月15日13时34分44秒2019' 296F访问时间5C3E27BD '周二1月15日13时34分37秒2019' 2973超编号#0002 7875 'UX:Unix的额外的类型3' 2975长度000B 2977版01 2978 UID尺寸04 2979 UID 000003E8 297D GID尺寸04 297E GID 000003E8 2982 PAYLOAD 5295 CENTRAL HEADER#1 02014B50 5299创建邮编规格1E '3.0' 529A创建OS 03 '的Unix' 529B提取邮编规格14 '2.0' 529C提取OS 00 'MS-DOS' 529D通用标志0001 [位0] 1 '加密'[位1-2] 1 '最大压缩' 529F压缩方法0008'平减' 52A1最后国防部时间4E2F6B24 '周二1月15日13时25分08秒2019' 52A5 CRC F1B115BD 52A9压缩长度00002904 52AD Uncompressed长度0000E2A5 52B1文件名长度0005 52B3额外长度0018 52B5注释长度0000 52B7磁盘启动0000 52B9诠释文件属性0001 [位0] 1个文本数据52BB分机文件属性81B40000 52BF本地头偏移00000000 52C3文件名“文件1” 52C8额外ID#0001 5455 'UT:扩展时间戳' 52CA长度0005 52CC标志'03 MOD访问52CD国防部时间5C3E2584 '周二1月15日13时25分08秒2019' 52D1额外的ID#0002 7875 'UX:Unix的额外的类型3' 52D3长度000B52D5版01 52D6 UID尺寸04 52D7 UID 000003E8 52dB的GID尺寸04 52DC GID 000003E8 52E0 CENTRAL HEADER#2 02014B50 52E4创建邮编规格1E '3.0' 52E5创建OS 03 '的Unix' 52E6提取邮编规格14 '2.0' 52E7提取OS 00 'MS-DOS' 52E8 General Purpose Flag 0001 [Bit 0] 1 'Encryption' [Bits 1-2] 1 'Maximum Compression' 52EA Compression Method 0008 'Deflated' 52EC Last Mod Time 4E2F6C56 'Tue Jan 15 13:34:44 2019' 52F0 CRC EC214569 52F4 Compressed Length 00002913 52F8 Uncompressed Length 0000E635 52FC Filename Length 0005 52FE Extra Length 0018 5300 Comment Length 0000 5302 Disk Start 0000 5304 Int File Attributes 0001 [Bit 0] 1 Text Data 5306 Ext File Attributes 81B40000 530A Local Header Offset 00002943 530E Filename 'file2' 5313 Extra ID #0001 5455 'UT: Extended Timestamp' 5315 Length 0005 5317 Flags '03 mod access' 5318 Mod Time 5C3E27C4 'Tue Jan 15 13:34:44 2019' 531C Extra ID #0002 7875 'ux: Unix Extra Type 3' 531E Length 000B 5320 Version 01 5321 UID Size 04 5322 UID 000003E8 5326 GID Size 04 5327 GID 000003E8 532B END CENTRAL HEADER 06054B50 532F Number of this disk 0000 5331 Central Dir Disk no 0000 5333 Entries in this disk 0002 5335 Total Entries 0002 5337 Size of Central Dir 00000096 533B Offset to Central Dir 00005295 533F Comment Length 0000 Done
zipgrep命令
的zipgrep命令将使用grep类型的特性来定位压缩文件中的特定内容。如果文件已加密,则需要输入为要检查的每个文件提供的加密密码。如果您只想检查归档文件中的单个文件的内容,请将其名称添加到zipgrep命令的末尾,如下所示。
$ zipgrep hazard twofiles.zip文件邮政编码]file1 password: Certain pesticides should be banned since they are hazardous to the environment.
zipinfo命令
的zipinfo命令提供有关一个压缩文件是否加密或不内容的信息。这包括文件名,大小,日期和权限。
Zip文件大小:21313字节,条目数:2 - rwr - rwr -r- 3.0 unx 58021 Tx defN 19-Jan-15 13:25 file1 - rwr - rwr -r- 3.0 unx 58933 Tx defN 19-Jan-15 13:34 file2 2文件,116954字节未压缩,20991字节压缩:82.1%
zipnote命令
的zipnote命令可用于从zip存档中提取注释或添加注释。要显示注释,只需在存档的名称前面加上命令。如果之前没有添加评论,你会看到这样的东西:
$ zipnote twfiles .zip @ file1 @(评论在这一行上面)@ file2 @(评论在这一行上面)@ (zip文件评论在这一行下面)
如果你想添加注释,把输出从zipnote命令到一个文件:
$ zipnote twofiles.zip >注释
接下来,编辑刚刚创建的文件,将注释插入到(这条线以上注释)行。然后使用zipnote命令添加注释,如下所示:
$ zipnote -w twofiles.zip <意见
zipsplit命令
的zipsplit命令可用于在原始文件太大时将zip归档文件拆分成多个zip归档文件—可能是因为您试图将其中一个文件添加到一个小型u盘。最简单的方法似乎是为每个压缩文件部分指定最大大小。此大小必须足够大,以容纳最大的包含文件。
$ ls twofile*.zip -rw-rw-r- 1 shs shs 10697 Jan 15 14:52 twofile .zip -rw-rw-r- 1 shs shs 10702 Jan 15 14:52 twofile .zip -rw-rw-r- 1 shs shs 10702 Jan 15 14:52 twofile .zip - 1 shs shs 21377 Jan 15 14:27 twofile .zip
注意所提取的文件是如何按顺序命名为“twofile1”和“twofile2”的。
总结
的邮政编码命令和它的一些压缩同胞一起,提供了对如何生成和使用压缩文件存档的大量控制。