linux打包压缩命令zip
zip可能是包压Linux里最“跨平台”的压缩工具。你在Windows上双击一个.zip文件,缩命和在Ubuntu终端里敲`unzip`,包压解出来的缩命东西一模一样。这一点tar.gz做不到——tar是包压打包,gzip是缩命压缩,两件事拧在一起,包压Windows原生解压工具经常不认。缩命zip把打包和压缩合并成一个动作,包压简单粗暴,缩命反而成了文件交换的包压通用语言。 用起来也直白。缩命`zip archive.zip file1 file2`,包压把file1和file2塞进archive.zip。缩命想压缩整个目录?包压加个`-r`递归选项:`zip -r project.zip project/`。这跟Windows右键“发送到压缩文件夹”是同一个意思,只是你得记住递归这个开关。忘了加,zip会告诉你“文件未匹配”,目录里的东西一个都进不去,只留个空壳zip。 压缩率不是zip的强项。同样一堆日志文件,`tar czf logs.tar.gz logs/`出来的体积通常比`zip -r logs.zip logs/`小10%到20%。但zip有个gzip没有的好处:你可以随时往压缩包里塞新文件,不用全部重来。`zip -u backup.zip newfile.txt`,只在压缩包里更新或追加,这个增量操作在备份场景下很省事。tar.gz想加文件?先解压,再加,再压缩,绕一大圈。 密码加密是另一个实用点。`zip -e secret.zip important.docx`,终端会提示你输两遍密码,生成的zip用任何主流解压工具打开都要密码。注意,这个加密用的是ZipCrypto或AES(取决于你的zip版本),ZipCrypto有已知漏洞,但对付随手加密个人文件足够了。真要传机密数据,还是用`gpg`或`age`更稳。 还有个容易踩的坑:文件名编码。老zip默认用系统本地编码存文件名,Linux下通常UTF-8,Windows下是GBK。你从Windows打包的中文文件名zip,在Linux解压出来经常是乱码。解决办法是用`unzip -O GBK archive.zip`指定编码,或者干脆打包前统一用英文文件名。我吃过这个亏,同事发来的“项目报告.zip”,解出来全是“绉鏂囦欢”这种鬼画符,后来学乖了,收到zip先`unzip -l`看一眼文件名再解。 查看压缩包内容不必先解压。`unzip -l archive.zip`列出所有文件,`zipinfo archive.zip`给更详细的权限和时间戳。想只解压其中某个目录?`unzip archive.zip "subdir/*"`,通配符要加引号,防止shell先展开。这些小技巧平时不显眼,真到用的时候能省几分钟。 zip命令在Linux里还有个尴尬点:它不是标配。最小化安装的服务器可能没有,得`apt install zip`或`yum install zip`。而tar是POSIX标准的一部分,任何Linux发行版都自带。所以脚本里如果只考虑本机,我倾向tar.gz;但如果要把文件发给别人,尤其是非技术用户,zip是唯一能保证对方双击就打开的选择。 最后说个个人习惯。我一般把zip当成“交付格式”用,而不是备份格式。备份用`tar czf`,因为压缩率高且保留Unix权限。给同事发代码快照、导出数据库文件、传输设计稿,这些场景一律zip。它不完美,但至少没人会发回一封邮件问“这个.tar.gz怎么打开”。linux打包压缩命令zip
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-