rar 是RARLAB公司开发的RAR格式压缩工具。RAR是一种专利压缩格式,具有高压缩比、支持分卷、密码保护和恢复记录等特性。在Linux系统中,rar命令通常需要单独安装。
unrar(仅解压)和p7zip
# 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 |
添加文件到压缩文件(创建或更新) | 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.rar、archive.part2.rar等。旧版本使用archive.r00、archive.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
# 创建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
# 解决:密码错误或文件损坏,尝试使用恢复记录修复
A:
rar: 完整功能的RAR工具,支持创建、修改、解压RAR文件unrar: 仅支持解压和查看RAR文件,不能创建或修改unrar作为开源替代,rar需要单独安装A: 恢复记录是RAR格式的一项独特功能,它在压缩文件中添加冗余数据,允许在文件部分损坏时恢复原始数据。恢复记录的大小可以设置为1-10%,通常3-5%就足够应对大多数损坏情况。
# 列出文件内容
rar l archive.rar
# 列出详细信息
rar v archive.rar
# 列出技术信息
rar lt archive.rar
# 查看特定文件
rar l archive.rar *.txt
# 查看加密文件(需要密码)
rar l -p密码 archive.rar
A: RAR分卷有两种命名格式:
archive.part1.rar, archive.part2.rar...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 压缩文件.rar 或 rar e 压缩文件.rarrar l 压缩文件.rar 或 rar v 压缩文件.rar-v大小 选项,如 -v10m(10MB分卷)-p密码 或 -hp密码(加密文件头)-rr百分比 添加恢复记录,rar r 修复文件-m0到-m5,数字越大压缩率越高但速度越慢-y 自动确认,适合脚本中使用