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