掌握zip和unzip命令可以让你在Linux环境下高效地处理压缩文件,无论是备份、传输还是归档文件都非常有用。
目录
在 Linux 系统中使用 zip
和 unzip
命令之前,需要确保系统已经安装了相应的软件包,你可以根据你的Linux 发行版搜索相关的安装方法,以下是Red Hat/CentOS/RHEL/Fedora发行版的安装方法:
# CentOS/RHEL 7/8/9 和 Fedora
sudo yum install zip unzip
一、zip命令
zip是Linux下常用的压缩工具,用于将文件或目录压缩成.zip格式的压缩包。
1、基本语法
zip [选项] 压缩包名 源文件或目录
2、常用选项
选项 | 说明 |
---|---|
-r | 递归压缩(包括子目录和文件) |
-q | 安静模式,不显示指令执行过程 |
-e | 加密压缩,会提示输入密码 |
-1~-9 | 压缩级别,1最快但压缩率低,9最慢但压缩率高 |
-x | 排除某些文件不压缩 |
-m | 压缩后删除源文件 |
-F | 尝试修复损坏的压缩文件 |
-u | 更新压缩包中的文件 |
-v | 显示详细压缩过程 |
-T | 测试压缩文件是否完整 |
3、使用示例
压缩单个文件
zip archive.zip file.txt
在 zip 命令的输出中,显示的 14% 表示 压缩率,即压缩后的文件大小是原文件大小的 14%,或者说压缩节省了 86% 的空间:
压缩多个文件
zip archive.zip file1.txt file2.txt
压缩目录(递归压缩)
zip -r archive.zip directory/
加密压缩
zip -e secure.zip file.txt # 会提示输入密码
压缩时排除某些文件
zip archive.zip * -x "exclude.txt"
参数说明:
archive.zip:生成的压缩文件名。
*:匹配当前目录所有文件(但会排除 exclude.txt)。
-x "exclude.txt":排除指定的文件(支持通配符,如 *.log)。使用最高压缩率(了解)
zip -9 maximum.zip largefile.iso
参数 说明 dd
磁盘操作工具(disk dump),用于按字节流读写数据。 if=/dev/zero
输入文件(input file), /dev/zero
是 Linux 特殊设备,提供无限的空字节(ASCII 0);/dev/zero
会持续输出0x00
(二进制零),因此生成的文件内容全是0
。of=largefile.iso
输出文件(output file),生成的文件名。 bs=1M
块大小(block size),每次读写 1MB 数据( 1M
= 1MiB = 1024×1024 字节)。count=100
操作次数,总共写入 100 个块(100 × 1MB = 100MB)。 更新压缩包中的文件
zip -u archive.zip newfile.txt
二、unzip命令
unzip用于解压.zip格式的压缩文件。
1、基本语法
unzip [选项] 压缩包名 [-d 目标目录]
2、常用选项
选项 | 说明 |
---|---|
-l | 列出压缩包内容但不解压 |
-d | 指定解压目录 |
-o | 不询问直接覆盖已有文件 |
-n | 不覆盖已有文件 |
-q | 安静模式,不显示解压过程 |
-P | 直接指定密码(不安全) |
-v | 查看压缩包详细信息 |
-t | 测试压缩文件完整性 |
3、使用示例
解压到当前目录
unzip archive.zip
解压到指定目录
unzip archive.zip -d ~/path/to/directory
列出压缩包内容但不解压
unzip -l archive.zip
解压加密的zip文件
unzip -P password secure.zip # 或者不指定密码,会提示输入 unzip secure.zip
安静模式解压(不显示解压过程)
unzip -q archive.zip
测试zip文件完整性
unzip -t archive.zip
解压时不覆盖已有文件
unzip -n archive.zip
三、实用技巧
批量解压多个zip文件
unzip '*.zip'
压缩时排除特定类型文件
zip archive.zip * -x "*.tmp" "*.log"
查看zip文件注释
unzip -z archive.zip
创建自解压zip文件(需要zipinfo支持)(了解即可)
echo '#!/bin/sh' > installer.sh echo 'tail -n +4 "$0" | unzip -q -' >> installer.sh echo 'exit' >> installer.sh zip -r archive.zip files/ cat archive.zip >> installer.sh chmod +x installer.sh
分卷压缩(需要先使用split命令)(了解即可)
zip -r -s 64m archive.zip large_directory/ # 这会创建archive.z01, archive.z02,... archive.zip
合并分卷zip文件(了解即可)
zip -s 0 split.zip --out unsplit.zip
四、注意事项
zip/unzip对中文文件名支持良好,但建议在解压时使用相同的字符集环境
加密zip文件使用传统加密方式,安全性不高,重要数据应考虑使用7z等更安全的加密方式(了解)
大文件压缩时,使用-1到-9选项可以平衡速度与压缩率
解压时如果遇到文件名冲突,默认会询问如何处理,可以使用-o或-n选项避免交互
zip格式在Linux和Windows间有良好的兼容性,适合跨平台文件交换