如何从命令行创建和提取zip存档?

评论

@joachim,您应该在问题中提出问题,并在答案中提供答案。回答自己的问题没有问题,但不属于问题本身,因为这破坏了SO的整个社区“最佳答案”投票优势。另外,这可能更适合超级用户,因为它与编程无关。

如果您忘记了登录信息,将在哪里记录如何上网以及如何检查?

@ rlb.usa:我在许多不同服务器上的许多不同地方工作。正如我所看到的,使用SA作这样的注释对其他人也有帮助。

#1 楼

通常,使用tar创建未压缩的存档,然后使用gzipbzip2压缩该存档。可以使用相应的gunzipbunzip2命令解压缩所述归档文件,或者您可以仅使用tar命令上的标志来执行解压缩。

如果要专门指的是Zip文件格式,则可以只需使用zipunzip命令即可。

要压缩:

zip squash.zip file1 file2 file3


或压缩目录

zip -r squash.zip dir1


要解压缩:

unzip squash.zip


将其解压缩到当前工作目录中。

评论


我个人仅使用zip -r9 archive.zip文件...语法(-r =递归-9 =最大压缩率)。

–amphetamachine
2011年1月31日,12:29

正如一个侧面说明:zip可以创建许多不同类型的.ZIP存档,以及使用许多不同的压缩器。另一方面,还有许多其他类似命名的压缩工具:7-Zip,gzip,bzip2,rzip等不可互换。

–polemon
2014年5月4日14:34

如果您不希望包含父目录:cd dir1; zip -r ../squash.zip *

– Marinos An
16-11-30在18:11



我很困惑,这样做是为了获得大量的充气和提取物,但是当我检查目录为空时,是否保存了原始zip文件?都去哪儿了?

–夏季开发人员
17年1月15日在1:43

作为记录,请使用unzip -d myfolder squash.zip提取到单独的新目录(myfolder)中,而不是将所有文件直接放入当前目录中,如果zip文件的顶部包含许多文件和目录,可能会很烦人。水平。这模仿了大多数UI解压缩工具的工作方式。

–亚历山大·克里姆采切克(Alexander Klimetschek)
17 Mar 8 '17 at 5:01

#2 楼

在UNIX派生下,确实存在大量不同的压缩和解压缩方法,因此,我假设您在一般意义上指的是“ zip”,而不是特定的文件格式。

您可以压缩使用GNU tar程序将文件压缩(压缩格式):

tar -zcvf myfile.tgz .


,它将执行当前目录。如果需要其他文件名,请用其他文件名替换.

要解压缩该文件,请使用:

tar -zxvf myfile.tgz


当然这是假设您

如果有的话,可以使用tar进行压缩以及将文件合并到一个文件中。


对于ZIP格式文件的特定处理,我建议下载tar cvf并使用它-它可以识别各种各样的文件格式,包括ZIP格式。

评论


或使用tar jcvf file.tar.bz2 ...压缩为bzip2格式,或使用tar Jcvf file.tar.xz ...进行xz压缩。

– OldTimer
16 Mar 11 '16 at 0:04

我不赞成您的回答,因为问题是关于如何处理zip存档而不是tar文件。

–海星
16 Dec 18'在3:35

@Starfish,这当然在您的权限之内,谢谢您至少解释了为什么,所以很多人没有花时间去做:-)我以更通用的含义(压缩)而不是特定格式来获取“ zip”,所以我会更清楚地说明。

–user14408
16 Dec 18'在7:52

请注意,在不同平台(从Mac到Linux,反之亦然)之间移动时,tar存档可能无法正常工作。 Zip安全得多,因为它可以在所有系统上正常工作。

–user1751825
18年7月5日在1:21

我认为从技术上讲这是gzip,所以很好。我猜。显然,这个问题并不是要问的。

–猫头鹰
18年11月29日在10:01

#3 楼

如果您没有安装zip和unzip软件包,并且拥有Java,则可以使用jar解压缩:

jar -xf file.zip


评论


不是我的服务器,没有解压缩,zip,7z,什么都没有...而且这可行。谢谢!

– Dariusz
16年5月31日在8:12

这是一个很好的提示。

–海星
16 Dec 18'3:50

#4 楼

好吧,当涉及到为各种操作系统分发文件时,我建议您使用7-zip。可以创建自己的7z存档。

p7zip也可以解压缩标准(pkzip)zip存档(并使用7z开关也可以创建它们)。

压缩:

7za a archive.7z file1 file2 directory/


解压缩:

7za x archive.7z


它也可以使用7za开关创建自解压档案:

7za a -sfx archive.exe files1 file2 dir


我建议使用此方法,以防Windows用户无法打开7z存档(以防您建议使用它的工具:PeaZip)。

如果要对压缩包使用相同的压缩算法,请使用带有7za-tzip开关:

tar cJf archive.tar.xz file1 file2 dir


-sfx是UNIX工具,使用LZMA2进行压缩,但是以-Jtar等的方式工作。它甚至可以用作过滤器。

7z不会在UNIX上创建具有完整文件系统信息的存档,因此在使用7z之前您需要使用xz(但是由于7z存储了有关gz文件的其他信息,我建议使用bz2,因为它是专为此设计的):

tar cf - file1 file2 dir | 7za z -si archive.tar.7z


评论


我也许应该用atool附加这个答案,这是一个很好的小工具,可以使使用许多不同的压缩机更加舒适。将其绑定到a并创建档案将成为arc.7z文件夹/或提取一个简单的arc.7z

–polemon
2014年5月2日在23:17

#5 楼

unzip <filename>




zip -r archive.zip <filename> [filename]


您需要确保通过软件包管理器安装了这些命令。这比在命令行上使用其他任何工具都难。这肯定比使用tar创建档案更简单。

评论


我知道这是一个旧线程,但这是最好的答案。不谈论7z或tar,其简洁明了

–凯尔
16年12月14日在22:23

#6 楼

BSD Tar也可以做到这一点

bsdtar -a -c -f sunday.zip sunday.jpg


或:

bsdtar -x -f sunday.zip


评论


与GNU tar和其他tar相比,BSD tar具有支持许多其他压缩格式的优势。也许最大的好处是,它使用了类似tar的语法。您当然可以从命令行使用7z,unrar,unzip等,但是它们使用不同的语法。

– njsg
17年8月31日在12:09

#7 楼

最标准的答案是pax,比cpiotar推荐。

cpio和POSIX tar不同,但像GNU tar一样,pax既可以存档文件又可以压缩存档。此行为与zip不同,q4312079q会在将每个文件放入存档之前先对其进行压缩。

评论


pax是否支持zip存档?

–海星
16 Dec 18'3:50

不,它也不支持pax存档!

–roblogic
18年2月1日在4:45

#8 楼

这仅涉及提取。为此,我开始使用dtrx

其全部目的是消除复杂性。因此,您只需将任何存档传递给它,它便会确定需要执行哪些操作。邮编,焦油,gz ...使用始终相同— dtrx archive.zip。它会问几个问题,您就完成了。

大多数存储库中都提供dtrx,因此您可以aptyum安装。

#9 楼

我经常发现自己试图将修改后的文件压缩到我的工作目录中-将所有修改后的文件复制到另一个沙盒工作目录中,或者将它们保留一小段时间,因为我想撤消某些更改。

在这种情况下,我将修改后的文件列表复制到一个临时文件中,并使用带有选项zip-@

假设我修改了文件Foo.h,Bar.cc和假设我创建了一个名为Modify-files.txt的文件,其内容如下:

Foo.h
Bar.cc
TestBar.cc


我执行以下命令压缩这些文件:

cat modified-files.txt | zip modified-files.zip -@