#1 楼
通常,使用tar
创建未压缩的存档,然后使用gzip
或bzip2
压缩该存档。可以使用相应的gunzip
和bunzip2
命令解压缩所述归档文件,或者您可以仅使用tar
命令上的标志来执行解压缩。如果要专门指的是Zip文件格式,则可以只需使用
zip
和unzip
命令即可。要压缩:
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进行压缩,但是以-J
,tar
等的方式工作。它甚至可以用作过滤器。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
,比cpio
和tar
推荐。与
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
,因此您可以apt
。 yum
安装。#9 楼
我经常发现自己试图将修改后的文件压缩到我的工作目录中-将所有修改后的文件复制到另一个沙盒工作目录中,或者将它们保留一小段时间,因为我想撤消某些更改。在这种情况下,我将修改后的文件列表复制到一个临时文件中,并使用带有选项
zip
的-@
。假设我修改了文件Foo.h,Bar.cc和假设我创建了一个名为Modify-files.txt的文件,其内容如下:
Foo.h
Bar.cc
TestBar.cc
我执行以下命令压缩这些文件:
cat modified-files.txt | zip modified-files.zip -@
评论
@joachim,您应该在问题中提出问题,并在答案中提供答案。回答自己的问题没有问题,但不属于问题本身,因为这破坏了SO的整个社区“最佳答案”投票优势。另外,这可能更适合超级用户,因为它与编程无关。如果您忘记了登录信息,将在哪里记录如何上网以及如何检查?
@ rlb.usa:我在许多不同服务器上的许多不同地方工作。正如我所看到的,使用SA作这样的注释对其他人也有帮助。