unrar 是RARLAB公司开发的专门用于解压RAR格式文件的工具。与完整的rar命令不同,unrar只提供解压功能,不能创建或修改RAR文件。在许多Linux发行版中,unrar作为开源软件提供,可以免费使用。
unrar是解压工具,rar是完整的压缩解压工具。对于仅需解压RAR文件的用户,unrar是更好的选择。
# Ubuntu/Debian
sudo apt update
sudo apt install unrar
# 或安装完整版本(包含rar和unrar)
sudo apt install rar unrar
# CentOS/RHEL 7 (需要EPEL仓库)
sudo yum install epel-release
sudo yum install unrar
# CentOS/RHEL 8+/Fedora
sudo dnf install epel-release
sudo dnf install unrar
# Arch Linux
sudo pacman -S unrar
# openSUSE
sudo zypper install unrar
# macOS (使用Homebrew)
brew install unrar
# 从RARLAB官网下载安装
# 访问 https://www.rarlab.com/rar_add.htm
wget https://www.rarlab.com/rar/unrarsrc-6.0.7.tar.gz
tar -xzf unrarsrc-6.0.7.tar.gz
cd unrar
make
sudo make install
# 验证安装
unrar --version
unrar是开源版本,可以免费使用。如果需要创建RAR文件,需要安装rar包。
# 基本语法
unrar <命令> [选项] <压缩文件> [文件...] [解压路径]
# 常用命令格式
unrar x [选项] 压缩文件.rar [解压路径]
unrar e [选项] 压缩文件.rar [解压路径]
unrar l [选项] 压缩文件.rar
| 命令 | 说明 | 示例 |
|---|---|---|
x |
完全解压,保持完整目录结构 | unrar x archive.rar |
e |
解压到当前目录,不保持路径 | unrar e archive.rar |
l, v |
列出压缩文件内容 | unrar l archive.rar |
lt |
列出压缩文件技术信息 | unrar lt archive.rar |
t |
测试压缩文件完整性 | unrar t archive.rar |
p |
将文件内容打印到标准输出 | unrar p archive.rar file.txt |
c |
显示压缩文件注释 | unrar c archive.rar |
cf |
显示文件注释 | unrar cf archive.rar |
cw |
将注释写入文件 | unrar cw archive.rar comment.txt |
| 选项 | 说明 | 示例 |
|---|---|---|
-p[密码] |
设置解压密码 | -p123456 |
-o+/-o- |
覆盖模式:+覆盖,-不覆盖,+跳过相同文件 | -o+(覆盖现有文件) |
-y |
对所有问题回答"是" | -y(自动确认) |
-kb |
保留损坏的解压文件 | -kb |
-ad |
使用压缩文件名称作为目标路径 | -ad |
-inul |
禁用所有消息 | -inul |
-ierr |
将所有消息发送到标准错误 | -ierr |
-x<文件> |
排除指定文件 | -x"*.tmp" |
-n<文件> |
仅解压指定文件 | -n"*.txt" |
-p- |
不查询密码 | -p- |
-r |
递归子目录 | -r |
-id[c,d,p,q] |
禁用消息:c=版权,d=完成,p=百分比,q=所有 | -idq(禁用所有消息) |
-c- |
禁用注释显示 | -c- |
-ta[日期] |
处理在指定日期之后修改的文件 | -ta20230101 |
-tb[日期] |
处理在指定日期之前修改的文件 | -tb20231231 |
-@[列表文件] |
从列表文件读取要处理的文件 | -@filelist.txt |
-ap<路径> |
设置内部文件路径作为解压路径 | -apfiles/ |
-x<文件> |
排除指定文件 | -x"*.log" |
-ierr |
发送所有消息到标准错误 | -ierr |
-or |
重命名同名文件 | -or |
| 命令 | 保持路径 | 输出目录 | 适用场景 | 示例 |
|---|---|---|---|---|
| x | 是 | 当前目录或指定目录 | 保持原始目录结构,完整解压 | unrar x archive.rar |
| e | 否 | 当前目录或指定目录 | 所有文件解压到同一目录,不保持结构 | unrar e archive.rar |
x 命令:需要保持原始目录结构,解压软件、网站文件等e 命令:只需要提取文件内容,不关心目录结构,解压文档、图片等# 完全解压,保持目录结构
unrar x archive.rar
# 解压到当前目录,不保持路径
unrar e archive.rar
# 解压到指定目录
unrar x archive.rar /target/path/
# 解压时覆盖现有文件
unrar x -o+ archive.rar
# 自动确认所有提示
unrar x -y archive.rar
# 静默解压(无输出)
unrar x -inul archive.rar
# 列出压缩文件内容
unrar l archive.rar
# 列出详细内容
unrar v archive.rar
# 列出技术信息
unrar lt archive.rar
# 测试压缩文件完整性
unrar t archive.rar
# 显示压缩文件注释
unrar c archive.rar
# 将注释写入文件
unrar cw archive.rar comment.txt
# 列出特定类型文件
unrar l archive.rar *.txt
# 解压特定文件
unrar x archive.rar specific.txt
# 解压特定文件到指定目录
unrar x archive.rar specific.txt /target/path/
# 仅解压.txt文件
unrar x -n*.txt archive.rar
# 排除.log文件
unrar x -x*.log archive.rar
# 解压多个特定文件
unrar x archive.rar file1.txt file2.pdf
# 从列表文件读取要解压的文件
unrar x -@filelist.txt archive.rar
# 将文件内容输出到标准输出
unrar p archive.rar readme.txt
# 查看文本文件内容
unrar p archive.rar readme.txt | less
# 搜索压缩文件中的内容
unrar p archive.rar config.ini | grep "password"
# 提取文件到标准输出并保存
unrar p archive.rar document.pdf > output.pdf
# 查看加密文件内容(需要密码)
unrar p -p123456 archive.rar secret.txt
# 解压分卷RAR文件(只需要指定第一个文件)
unrar x archive.part1.rar
# 解压分卷到指定目录
unrar x archive.part1.rar /target/path/
# 列出分卷文件内容
unrar l archive.part1.rar
# 测试分卷文件完整性
unrar t archive.part1.rar
# 解压旧格式分卷(.r00, .r01等)
unrar x archive.rar
# 处理不完整的分卷集
unrar x -kb archive.part1.rar # 保留损坏的文件
.part1.rar, .part2.rar)和旧格式(.rar, .r00, .r01)。unrar都能自动识别。
# 交互式输入密码解压
unrar x -p archive.rar
# 直接在命令行指定密码(不安全)
unrar x -p123456 archive.rar
# 解压加密的分卷文件
unrar x -p123456 archive.part1.rar
# 列出加密文件内容
unrar l -p123456 archive.rar
# 测试加密文件完整性
unrar t -p123456 archive.rar
# 解压时不提示密码(如果文件未加密)
unrar x -p- archive.rar
# 只解压2023年1月1日之后修改的文件
unrar x -ta20230101 archive.rar
# 只解压2023年12月31日之前修改的文件
unrar x -tb20231231 archive.rar
# 解压特定时间范围的文件
unrar x -ta20230101 -tb20231231 archive.rar
# 批量解压当前目录下所有RAR文件
for rarfile in *.rar; do
unrar x "$rarfile"
done
# 批量测试所有RAR文件
for rarfile in *.rar; do
echo -n "测试 $rarfile: "
if unrar t "$rarfile" >/dev/null 2>&1; then
echo "✓ 正常"
else
echo "✗ 损坏"
fi
done
# 完全静默解压到指定目录
unrar x -inul -y -o+ archive.rar /target/path/
# 解压并重命名同名文件
unrar x -or archive.rar
# 使用压缩文件名作为目标目录
unrar x -ad archive.rar
# 解压时禁用所有消息
unrar x -idq archive.rar
# 递归解压当前目录及子目录的所有RAR文件
find . -name "*.rar" -type f -exec unrar x -y -o+ {} \;
# 解压并保留损坏的文件(尝试修复)
unrar x -kb archive.rar
# 解压Windows软件安装包(通常为RAR格式)
unrar x software_install.part1.rar /opt/software/
# 自动确认所有提示,静默安装
unrar x -y -inul -o+ setup.rar /tmp/install/
# 保持目录结构,完整解压
unrar x -ad program_files.rar
# 解压后检查文件完整性
unrar t software.rar && echo "文件完整,可继续安装"
# 批量解压多个RAR文档
for doc in document*.rar; do
dir="${doc%.rar}"
mkdir -p "$dir"
unrar x "$doc" "$dir/"
done
# 只解压PDF文件到统一目录
for archive in *.rar; do
unrar e -n*.pdf "$archive" /all/pdfs/
done
# 解压特定日期的文件
unrar x -ta20230101 *.rar /new_year_docs/
# 恢复数据库备份(分卷压缩)
unrar x -p$(cat /etc/backup/password.txt) \
db_backup.part1.rar \
/var/lib/mysql_restore/
# 测试备份文件完整性
unrar t db_backup.part1.rar && echo "备份文件完整"
# 只恢复特定表的数据
unrar x -n*users_table* db_backup.rar /restore/
# 恢复并保留损坏的文件(尝试修复)
unrar x -kb damaged_backup.rar /recovery/
#!/bin/bash
# 自动化下载并解压脚本
DOWNLOAD_DIR="/tmp/downloads"
EXTRACT_DIR="/opt/data"
# 下载RAR文件
wget -q -P "$DOWNLOAD_DIR" http://example.com/data.rar
# 解压到目标目录
if unrar x -y -o+ "$DOWNLOAD_DIR/data.rar" "$EXTRACT_DIR/"; then
echo "解压成功"
# 处理解压后的文件
find "$EXTRACT_DIR" -name "*.csv" -exec process_csv.sh {} \;
else
echo "解压失败"
exit 1
fi
# 清理
rm -f "$DOWNLOAD_DIR/data.rar"
| 对比项 | unrar |
rar |
7z |
|---|---|---|---|
| 创建RAR | 不支持 | 支持 | 有限支持 |
| 解压RAR | 支持 | 支持 | 支持 |
| 开源免费 | 是 | 否 | 是 |
| 恢复记录 | 支持 | 支持 | 有限 |
| 分卷处理 | 支持 | 支持 | 支持 |
| 密码解压 | 支持 | 支持 | 支持 |
| 格式支持 | RAR, ZIP | RAR, ZIP | 7z, ZIP, RAR, TAR等 |
| 推荐场景 | 仅需解压RAR文件 | 需要创建RAR文件 | 多格式支持,开源需求 |
unrar(开源免费)rar(商业软件)7z(开源,支持RAR解压)| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| "unrar: command not found" | unrar未安装 | 安装unrar:sudo apt install unrar |
| "CRC failed" 错误 | 文件损坏或下载不完整 | 重新下载文件,或尝试-kb选项 |
| "password incorrect" | 密码错误 | 确认密码正确,注意大小写 |
| "no archive found" | 不是有效的RAR文件 | 使用file命令检查文件类型 |
| "volume is required" | 缺少分卷文件 | 确保所有分卷文件在同一目录 |
| "unknown method" | 版本不兼容 | 更新unrar到最新版本 |
| "access denied" | 权限不足 | 使用sudo或检查目录权限 |
| "disk full" | 磁盘空间不足 | 清理磁盘空间或解压到其他分区 |
# 错误:unrar: Cannot find volume
# 解决:确保所有分卷文件存在且命名正确
ls -la archive.part*.rar
# 错误:unrar: Bad password
# 解决:确认密码正确,或联系文件提供者
# 错误:unrar: The file header is corrupt
# 解决:文件可能损坏,尝试重新下载
# 如果有恢复记录,尝试修复
# 错误:unrar: You need to start extraction from a previous volume
# 解决:从第一个分卷开始解压
unrar x archive.part1.rar
# 错误:unrar: No files to extract
# 解决:检查文件名和路径,确认文件存在
unrar l archive.rar
# 错误:unrar: Not enough memory
# 解决:释放系统内存,或使用更简单的选项
A: 主要区别:
unrar: 仅用于解压RAR文件,开源免费rar: 完整的RAR工具,可创建和解压,商业软件unrar足够使用,如果需要创建RAR文件才需要rarA: 是的,大多数版本的unrar也支持解压ZIP文件,但功能可能有限。对于ZIP文件,建议使用专门的unzip工具。
# 尝试解压ZIP文件
unrar x archive.zip
# 但更好使用unzip
unzip archive.zip
# 方法1:使用for循环
for file in *.rar; do
unrar x "$file"
done
# 方法2:使用find命令
find . -name "*.rar" -type f -exec unrar x {} \;
# 方法3:解压到各自目录
for file in *.rar; do
dir="${file%.rar}"
mkdir -p "$dir"
unrar x "$file" "$dir/"
done
A: 是的,较新版本的unrar支持多线程解压,可以通过环境变量设置:
# 设置使用4个线程
export UNRAR_OPTS="-mt4"
# 然后正常使用unrar
unrar x large_archive.rar
# 或者直接在命令中设置
UNRAR_OPTS="-mt4" unrar x large_archive.rar
使用-mt选项可以加速大文件的解压过程。
rar - 完整的RAR压缩解压工具7z - 7-Zip工具,支持多种格式unzip - ZIP文件解压工具tar - Unix归档工具gzip - GNU压缩工具bzip2 - bzip2压缩工具file - 文件类型识别工具find - 文件查找工具unrar x 压缩文件.rar [解压路径]unrar e 压缩文件.rar [解压路径]unrar l 压缩文件.rar 或 unrar v 压缩文件.rarunrar x -p密码 压缩文件.rarunrar x archive.part1.rar-y 选项自动确认所有提示-o+ 覆盖,-o- 不覆盖-n模式 仅解压匹配文件,-x模式 排除文件-ta日期 和 -tb日期 按时间过滤-inul 或 -idq 禁用输出