Linux unrar命令详解

unrar命令 - RARLAB开发的RAR格式解压工具,专门用于解压.rar压缩文件,支持分卷解压、密码解压、恢复记录等高级功能

命令简介

unrar 是RARLAB公司开发的专门用于解压RAR格式文件的工具。与完整的rar命令不同,unrar只提供解压功能,不能创建或修改RAR文件。在许多Linux发行版中,unrar作为开源软件提供,可以免费使用。

注意: unrar是解压工具,rar是完整的压缩解压工具。对于仅需解压RAR文件的用户,unrar是更好的选择。
  • 文件格式: .rar, .rev(恢复卷)
  • 支持特性: 分卷解压、密码解压、恢复记录、多线程解压
  • 开源状态: 开源免费,可自由使用
  • 主要功能: 解压、查看、测试、修复RAR文件
  • 系统支持: Windows、Linux、macOS、FreeBSD等
  • 关联命令: rar(完整功能)、7z、zip、tar

安装方法

# 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
注意: 大多数Linux发行版中unrar是开源版本,可以免费使用。如果需要创建RAR文件,需要安装rar包。

基本语法

# 基本语法
unrar <命令> [选项] <压缩文件> [文件...] [解压路径]

# 常用命令格式
unrar x [选项] 压缩文件.rar [解压路径]
unrar e [选项] 压缩文件.rar [解压路径]
unrar l [选项] 压缩文件.rar
参数说明:
  • 命令: 执行的操作,如x(完全解压)、e(解压到当前目录)、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  # 保留损坏的文件
分卷格式: 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 vs rar vs 7z 对比

对比项 unrar rar 7z
创建RAR 不支持 支持 有限支持
解压RAR 支持 支持 支持
开源免费
恢复记录 支持 支持 有限
分卷处理 支持 支持 支持
密码解压 支持 支持 支持
格式支持 RAR, ZIP RAR, ZIP 7z, ZIP, RAR, TAR等
推荐场景 仅需解压RAR文件 需要创建RAR文件 多格式支持,开源需求
选择建议:
  • 仅需解压RAR文件:使用unrar(开源免费)
  • 需要创建RAR文件:使用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
# 解决:释放系统内存,或使用更简单的选项

常见问题解答

Q: unrar和rar有什么区别?

A: 主要区别:

  • unrar: 仅用于解压RAR文件,开源免费
  • rar: 完整的RAR工具,可创建和解压,商业软件
  • 对于大多数用户,unrar足够使用,如果需要创建RAR文件才需要rar
Q: unrar可以解压ZIP文件吗?

A: 是的,大多数版本的unrar也支持解压ZIP文件,但功能可能有限。对于ZIP文件,建议使用专门的unzip工具。

# 尝试解压ZIP文件
unrar x archive.zip

# 但更好使用unzip
unzip archive.zip
Q: 如何批量解压多个RAR文件?
# 方法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
Q: unrar支持多线程解压吗?

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 压缩文件.rarunrar v 压缩文件.rar
  • 密码解压: unrar x -p密码 压缩文件.rar
  • 分卷解压: 指定第一个分卷文件即可:unrar x archive.part1.rar
  • 自动确认: 使用 -y 选项自动确认所有提示
  • 覆盖模式: 使用 -o+ 覆盖,-o- 不覆盖
  • 选择性解压: 使用 -n模式 仅解压匹配文件,-x模式 排除文件
  • 时间过滤: 使用 -ta日期-tb日期 按时间过滤
  • 静默模式: 使用 -inul-idq 禁用输出