Linux rar命令详解

rar命令 - RAR格式压缩文件的创建、管理和提取工具,支持分卷压缩、密码保护、恢复记录等高级功能

命令简介

rar 是RARLAB公司开发的RAR格式压缩工具。RAR是一种专利压缩格式,具有高压缩比、支持分卷、密码保护和恢复记录等特性。在Linux系统中,rar命令通常需要单独安装。

注意: RAR是专利格式,商业使用可能需要许可证。开源替代品是unrar(仅解压)和p7zip
  • 文件格式: .rar, .rev(恢复卷)
  • 压缩算法: 专有算法,压缩率通常比zip高
  • 主要特性: 分卷压缩、恢复记录、强加密、文件注释
  • 操作系统: Windows原生支持,Linux/macOS需要额外安装
  • 开源替代: 7-Zip(7z格式)、p7zip(支持rar解压)
  • 关联命令: unrar(仅解压)、7z、zip、tar

安装方法

# Ubuntu/Debian (需要启用universe仓库)
sudo apt update
sudo apt install rar unrar

# 或者单独安装rar
sudo apt install rar

# CentOS/RHEL 7 (需要EPEL仓库)
sudo yum install epel-release
sudo yum install rar

# CentOS/RHEL 8+/Fedora
sudo dnf install epel-release
sudo dnf install rar

# Arch Linux (AUR)
yay -S rar  # 或使用AUR助手
# 或安装社区版本
sudo pacman -S unrar

# openSUSE
sudo zypper install rar

# macOS (使用Homebrew)
brew install rar

# 从RARLAB官网下载安装
# 访问 https://www.rarlab.com/download.htm
wget https://www.rarlab.com/rar/rarlinux-x64-6.0.2.tar.gz
tar -xzf rarlinux-x64-6.0.2.tar.gz
cd rar
sudo make install

# 验证安装
rar --version
注意: 某些发行版可能只包含unrar(仅解压功能),完整功能需要安装rar

基本语法

# 基本语法
rar <命令> [选项] <压缩文件> [文件...] [@文件列表...]

# 常用命令格式
rar a [选项] 压缩文件.rar 文件或目录
rar x [选项] 压缩文件.rar
rar l [选项] 压缩文件.rar
参数说明:
  • 命令: 执行的操作,如a(添加)、x(解压)、l(列表)等
  • 选项: 控制命令行为的各种开关和参数
  • 压缩文件: 要创建或操作的.rar文件
  • 文件: 要压缩的文件或目录,支持通配符
  • @文件列表: 从文件读取要处理的文件列表

常用命令

命令 说明 示例
a 添加文件到压缩文件(创建或更新) rar a archive.rar file.txt
x 解压文件,保持完整路径 rar x archive.rar
e 解压文件到当前目录,不保持路径 rar e archive.rar
l, t 列出压缩文件内容 rar l archive.rar
lt 列出压缩文件内容(技术信息) rar lt archive.rar
v 列出压缩文件详细内容 rar v archive.rar
c 添加压缩文件注释 rar c archive.rar
cf 添加文件注释 rar cf archive.rar
cw 将注释写入文件 rar cw archive.rar comment.txt
d 从压缩文件中删除文件 rar d archive.rar file.txt
k 锁定压缩文件(防止修改) rar k archive.rar
r 修复损坏的压缩文件 rar r archive.rar
rr 添加恢复记录 rar rr3% archive.rar
s 转换压缩文件为SFX自解压格式 rar s archive.rar
u 更新文件到压缩文件 rar u archive.rar file.txt
m 移动文件到压缩文件(压缩后删除源文件) rar m archive.rar file.txt

常用选项

选项 说明 示例
-m<n> 压缩级别:0=存储,1=最快...5=默认 -m5(最佳压缩)
-ep 从名称中排除路径 -ep(不包含路径)
-ep1 从名称中排除基目录 -ep1
-r 递归包含子目录 -r(包含子目录)
-v<大小> 创建分卷,单位:b,k,m,g -v10m(10MB分卷)
-p[密码] 设置密码 -p123456
-hp[密码] 加密文件数据和头信息 -hp123456
-x<文件> 排除指定文件 -x"*.tmp"
-n<文件> 仅包含指定文件 -n"*.txt"
-o+/-o- 覆盖模式:+覆盖,-不覆盖 -o+(覆盖现有文件)
-y 对所有问题回答"是" -y(自动确认)
-cl 将文件名转换为小写 -cl
-cu 将文件名转换为大写 -cu
-df 压缩后删除源文件 -df
-ed 不添加空目录 -ed
-kb 保留损坏的解压文件 -kb
-log[格式] 记录日志到文件 -log=rar.log
-si[文件] 从标准输入或文件读取数据 -si=stdin
-sfx[名称] 创建自解压文件 -sfx
-z<文件> 从文件读取注释 -z=comment.txt

压缩级别说明

级别 命令选项 压缩速度 压缩率 内存使用 适用场景
存储 -m0 最快 无压缩 最低 仅打包,不压缩
最快 -m1 很快 较低 快速备份,临时文件
快速 -m2 一般 中等 日常使用
标准 -m3 标准 较好 中等 通用场景
较好 -m4 较慢 较高 需要较好压缩率
最佳 -m5 最慢 最佳 最高 最终分发,长期存储
建议: 日常使用推荐-m3-m4,在压缩率和速度间取得平衡。对于网络传输或存储空间紧张的情况使用-m5

基础使用示例

基本压缩操作
# 创建RAR压缩文件
rar a archive.rar file.txt

# 压缩多个文件
rar a archive.rar file1.txt file2.pdf file3.jpg

# 压缩整个目录(递归包含子目录)
rar a -r documents.rar /home/user/Documents/

# 使用最佳压缩级别
rar a -m5 archive.rar largefile.dat

# 压缩后删除源文件
rar a -df archive.rar file.txt

# 排除基目录路径
rar a -ep1 archive.rar /path/to/directory/

# 压缩时排除某些文件
rar a archive.rar /path/ -x"*.tmp" -x"*.log"
解压操作
# 完全解压,保持目录结构
rar x archive.rar

# 解压到当前目录,不保持路径
rar e archive.rar

# 解压特定文件
rar x archive.rar specific.txt

# 解压到指定目录
rar x archive.rar /target/directory/

# 覆盖现有文件(自动确认)
rar x -o+ -y archive.rar

# 解压分卷RAR文件(只需要指定第一个文件)
rar x archive.part1.rar
查看和测试
# 列出压缩文件内容
rar l archive.rar

# 列出详细内容(类似ls -l)
rar v archive.rar

# 列出技术信息
rar lt archive.rar

# 测试压缩文件完整性
rar t archive.rar

# 仅查看特定文件信息
rar l archive.rar *.txt

# 查看注释
rar cw archive.rar comment.txt  # 输出注释到文件
更新和删除
# 向现有压缩文件添加新文件
rar a archive.rar newfile.txt

# 更新压缩文件中的文件(仅更新较新的文件)
rar u archive.rar *.txt

# 从压缩文件中删除文件
rar d archive.rar oldfile.txt

# 删除压缩文件中的目录
rar d archive.rar directory/

# 锁定压缩文件防止修改
rar k archive.rar

高级特性

分卷压缩
# 创建10MB大小的分卷
rar a -v10m archive.rar largefile.iso

# 创建100MB分卷
rar a -v100m archive.rar /data/

# 创建自动检测大小的分卷(CD/DVD大小)
rar a -v -v archive.rar /files/  # 自动分卷

# 创建分卷并添加恢复记录
rar a -v10m -rr3% archive.rar important.dat

# 解压分卷文件(只需要指定第一个文件)
rar x archive.part1.rar

# 列出分卷内容
rar l archive.part1.rar
分卷命名: 分卷文件会自动命名为archive.part1.rararchive.part2.rar等。旧版本使用archive.r00archive.r01格式
密码保护和加密
# 使用密码压缩(会提示输入密码)
rar a -p archive.rar secret/

# 直接在命令行指定密码(不安全,会留在历史记录)
rar a -p123456 archive.rar secret/

# 加密文件数据和头信息(更安全)
rar a -hp123456 archive.rar secret/

# 使用密码解压
rar x -p123456 archive.rar

# 创建带密码的分卷压缩
rar a -v10m -p123456 archive.rar /sensitive/

# 列出加密文件内容(需要密码)
rar l -p123456 archive.rar
安全警告: 在命令行直接输入密码不安全,密码会留在命令历史记录中。建议使用交互式输入或从文件读取密码
恢复记录和修复
# 添加3%的恢复记录
rar a -rr3% archive.rar important.dat

# 添加10%恢复记录(最大恢复能力)
rar a -rr10% archive.rar critical.dat

# 修复损坏的RAR文件
rar r archive.rar

# 尝试恢复有恢复记录的文件
rar r -idcdpq archive.rar

# 创建恢复卷(用于重要数据)
rar a -rv50 -rr5% archive.rar /critical_data/

# 使用恢复卷修复
rar r archive.part1.rar
恢复记录说明: 恢复记录允许在文件部分损坏时恢复数据。3-10%的恢复记录通常足够,但会增加文件大小
自解压文件
# 创建Windows自解压文件
rar a -sfx archive.rar files/

# 创建Linux自解压文件
rar a -sfx -z setup.txt archive.rar files/

# 指定自解压模块
rar a -sfxDefault.sfx archive.rar files/

# 创建带密码的自解压文件
rar a -sfx -p123456 archive.rar secret/

# 设置自解压后运行的命令
rar c archive.rar  # 添加注释,设置自解压选项

# 转换现有RAR为自解压格式
rar s archive.rar

实际应用场景

大文件分卷备份
# 数据库备份分卷压缩
rar a -m5 -v100m -rr5% \
  -hp"$(cat /etc/backup/password.txt)" \
  -z"backup_info.txt" \
  db_backup_$(date +%Y%m%d).rar \
  /var/lib/mysql/

# 备份信息文件内容:
# 数据库备份: production_db
# 备份时间: $(date)
# 大小: $(du -sh /var/lib/mysql/)
# 恢复命令: rar x db_backup_*.rar
敏感数据加密归档
# 加密敏感文档
rar a -m4 -p -hp \
  -x"*.tmp" -x"*.bak" \
  -cl -y \
  sensitive_$(date +%Y%m).rar \
  ~/Documents/confidential/ \
  ~/Desktop/private/

# 密码通过交互式输入,不留在历史记录
# -hp 加密文件头和内容
# -cl 统一文件名小写
# -y 自动确认所有提示
网站文件打包分发
# 打包网站文件,排除缓存和日志
rar a -m3 -r -ep1 \
  -x"cache/*" -x"*.log" \
  -x"tmp/*" -x".git/*" \
  -z"README.txt" \
  website_v2.1.rar \
  /var/www/html/

# README.txt内容:
# 网站版本: 2.1
# 包含: PHP文件、图片、CSS/JS
# 部署说明:
# 1. 解压到web目录
# 2. 设置权限: chmod -R 755 *
# 3. 配置数据库连接
日志文件轮转归档
# 自动化日志归档脚本
#!/bin/bash
LOG_DIR="/var/log/myapp"
ARCHIVE_DIR="/backup/logs"
DATE=$(date +%Y%m%d_%H%M%S)

# 压缩7天前的日志
find "$LOG_DIR" -name "*.log" -mtime +7 | while read logfile; do
    # 压缩单个日志文件
    rar a -m1 -df -y \
      "$ARCHIVE_DIR/logs_$DATE.rar" \
      "$logfile"

    echo "已归档: $logfile"
done

# 每月清理旧归档
find "$ARCHIVE_DIR" -name "*.rar" -mtime +30 -delete

批量处理技巧

批量压缩文件
# 批量压缩当前目录下所有.txt文件
for file in *.txt; do
    rar a "${file%.txt}.rar" "$file"
done

# 批量压缩多个目录
for dir in dir1 dir2 dir3; do
    rar a -r "${dir}.rar" "$dir"
done

# 使用find压缩所有超过1MB的文件
find . -type f -size +1M -exec rar a -m3 {}.rar {} \;

# 批量创建带时间戳的压缩包
for item in project1 project2 project3; do
    rar a -r "backup_${item}_$(date +%Y%m%d).rar" "$item"
done
批量解压文件
# 批量解压当前目录下所有.rar文件
for rarfile in *.rar; do
    # 跳过分卷的非第一个文件
    if [[ "$rarfile" != *.part*.rar ]] || [[ "$rarfile" == *.part1.rar ]]; then
        echo "正在解压: $rarfile"
        rar x -o+ -y "$rarfile"
    fi
done

# 批量解压到单独目录
for rarfile in *.rar; do
    dirname="${rarfile%.rar}"
    mkdir -p "$dirname"
    rar x -o+ -y "$rarfile" "$dirname/"
done

# 使用find递归解压
find . -name "*.rar" -type f -exec rar x -o+ -y {} \;
从文件列表批量操作
# 从文件列表读取要压缩的文件
rar a -r files.rar @filelist.txt

# filelist.txt内容示例:
# /path/to/file1.txt
# /path/to/file2.pdf
# /path/to/directory/

# 批量添加注释
for rarfile in *.rar; do
    echo "处理: $rarfile"
    echo "归档时间: $(date)" | rar c "$rarfile"
done

# 批量测试压缩文件完整性
for rarfile in *.rar; do
    echo -n "测试 $rarfile: "
    if rar t "$rarfile" >/dev/null 2>&1; then
        echo "✓ 正常"
    else
        echo "✗ 损坏"
    fi
done

故障排除

问题 可能原因 解决方案
"rar: command not found" rar未安装或不在PATH中 安装rar包:sudo apt install rar
"CRC failed" 错误 文件损坏或下载不完整 使用rar r尝试修复,或重新下载
"password incorrect" 输入了错误的密码 检查密码大小写,或联系文件提供者
"no archive found" 文件不是有效的RAR格式 使用file命令检查文件类型
"volume is required" 缺少分卷文件 确保所有分卷文件(.part1.rar, .part2.rar等)在同一目录
"archive is in unknown format" 版本不兼容或文件损坏 更新rar到最新版本,或尝试使用rar r修复
"access denied" 或 "permission denied" 权限不足 使用sudo或检查文件权限
"out of memory" 内存不足,特别是大文件高压缩级别 使用较低的压缩级别(-m1-m3),或增加系统内存
常见错误及解决方法
# 错误:rar: Cannot open /dev/tty
# 解决:在非交互式环境(如cron)中使用-y选项
rar a -y archive.rar files/

# 错误:rar: User break
# 解决:用户中断了操作,重新执行命令

# 错误:rar: File already exists
# 解决:使用-o+覆盖或-o-跳过,或手动删除已存在文件

# 错误:rar: Cannot create archive.rar
# 解决:检查磁盘空间和目录写入权限

# 错误:rar: Unknown method in archive.rar
# 解决:使用最新版本rar,旧版本可能不支持新压缩算法

# 错误:rar: Checksum error in the encrypted file
# 解决:密码错误或文件损坏,尝试使用恢复记录修复

常见问题解答

Q: rar和unrar有什么区别?

A:

  • rar: 完整功能的RAR工具,支持创建、修改、解压RAR文件
  • unrar: 仅支持解压和查看RAR文件,不能创建或修改
  • 大多数Linux发行版提供unrar作为开源替代,rar需要单独安装
Q: RAR格式的恢复记录是什么?

A: 恢复记录是RAR格式的一项独特功能,它在压缩文件中添加冗余数据,允许在文件部分损坏时恢复原始数据。恢复记录的大小可以设置为1-10%,通常3-5%就足够应对大多数损坏情况。

Q: 如何在不解压的情况下查看RAR文件内容?
# 列出文件内容
rar l archive.rar

# 列出详细信息
rar v archive.rar

# 列出技术信息
rar lt archive.rar

# 查看特定文件
rar l archive.rar *.txt

# 查看加密文件(需要密码)
rar l -p密码 archive.rar
Q: RAR分卷文件如何命名和识别?

A: RAR分卷有两种命名格式:

  1. 新格式: archive.part1.rar, archive.part2.rar...
  2. 旧格式: archive.rar, archive.r00, archive.r01...

解压时只需指定第一个文件,rar会自动识别其他分卷。使用ls -la可以看到所有分卷文件。

相关命令

  • unrar - RAR文件解压工具(仅解压)
  • zip - ZIP格式压缩工具
  • 7z - 7-Zip工具,支持多种格式
  • tar - Unix归档工具,常与压缩工具结合
  • gzip - GNU压缩工具
  • bzip2 - bzip2压缩工具
  • xz - xz压缩工具,高压缩率
  • file - 文件类型识别工具
命令总结
  • 压缩: rar a [选项] 压缩文件.rar 文件或目录
  • 解压: rar x 压缩文件.rarrar e 压缩文件.rar
  • 查看: rar l 压缩文件.rarrar v 压缩文件.rar
  • 分卷: 使用 -v大小 选项,如 -v10m(10MB分卷)
  • 密码: 使用 -p密码-hp密码(加密文件头)
  • 恢复: 使用 -rr百分比 添加恢复记录,rar r 修复文件
  • 压缩级别: -m0-m5,数字越大压缩率越高但速度越慢
  • 自动化: 使用 -y 自动确认,适合脚本中使用