Ubuntu下rar与unrar命令详解:从安装到实战应用
1. 项目概述:为什么Ubuntu用户需要关注rar格式?
在Linux世界里,尤其是Ubuntu这类以开源精神为核心的发行版中,我们日常打交道最多的压缩格式是.tar.gz、.tar.bz2或者.zip。.rar格式似乎是个“异类”——它由一家商业公司WinRAR开发,其核心算法是闭源的。这就引出一个很实际的问题:为什么一个Ubuntu用户,还需要费心去处理rar文件?
答案很简单:现实世界的文件交换并不总是理想化的。你可能会从某些论坛下载资源包,收到同事或客户从Windows系统发来的压缩档案,或者在解压一些老旧的软件备份时,遇到.rar或分卷的.part1.rar文件。尤其是在国内互联网环境,rar格式因其较高的压缩比和对中文文件名良好的兼容性,曾经(甚至现在)被广泛使用。因此,掌握在Ubuntu下处理rar文件的能力,不是对闭源软件的妥协,而是一项解决实际文件交换需求的必备技能。
处理rar的核心,就是两个命令:rar和unrar。前者用于创建和修改rar压缩包,后者则专注于解压。虽然Ubuntu的软件仓库默认不包含它们,但安装和配置过程并不复杂。接下来,我将带你彻底搞懂这两个命令,从安装、基础使用到高级参数和避坑指南,让你在终端里也能对rar文件应对自如。
2. 核心工具安装与配置
在开始使用命令之前,我们得先把“武器”准备好。由于rar是闭源软件,它没有进入Ubuntu的主软件仓库。我们需要通过添加第三方仓库或直接安装软件包的方式来解决。
2.1 安装unrar(解压必备)
对于大多数用户来说,unrar是更迫切的需求——我们主要是为了解压已有的rar文件。幸运的是,unrar的非开源版本在multiverse仓库中可用。
首先,确保multiverse仓库已启用:
sudo add-apt-repository multiverse sudo apt update然后安装unrar:
sudo apt install unrar安装完成后,在终端输入unrar,如果看到一长串帮助信息,就说明安装成功了。
注意:这里安装的
unrar是闭源的免费版本,仅支持解压,不支持创建rar压缩包。对于个人非商业用途的解压,这通常是足够的。
2.2 安装rar(创建与完整管理)
如果你需要在Ubuntu下创建rar压缩包,或者需要对rar包进行修复、添加文件等完整操作,就需要安装rar软件。由于版权和许可限制,我们不能直接通过apt安装。通常有两种方法:
方法一:从RARLAB官网下载安装(推荐)这是最直接、能获得最新版本的方法。
- 访问 RARLAB 官方网站,找到 Linux 版本的下载链接。通常是一个
.tar.gz文件。 - 使用
wget命令下载(请替换为实际的最新链接):wget https://www.rarlab.com/rar/rarlinux-x64-6.24.tar.gz - 解压下载的文件:
tar -xzf rarlinux-x64-6.24.tar.gz - 进入解压后的目录,进行安装:
这个cd rar sudo make installmake install脚本会将rar和unrar的可执行文件复制到/usr/local/bin目录下,并创建对应的man手册页。
方法二:使用第三方仓库(如UbuntuZilla)有些第三方仓库提供了预编译的包,但版本可能不是最新的,且需要信任该仓库源。操作复杂且有一定风险,对于新手不推荐。
安装成功后,分别运行rar和unrar命令,确认两者都已就绪。你会发现rar命令的帮助信息更复杂,功能也更多。
2.3 基础环境检查与路径配置
安装后,一个良好的习惯是检查命令所在的路径以及版本。
which rar which unrar rar --version unrar --version这能帮你确认安装位置是否正确,避免因为系统中有多个版本而导致混淆。
实操心得:我个人强烈建议采用方法一从官网安装。虽然步骤多一步,但能确保获得官方原版,避免第三方仓库可能存在的修改或滞后问题。解压后的
rar目录里还有一个rar_static可执行文件,这是一个静态链接的版本,如果你遇到动态库依赖问题,可以尝试直接运行它。
3. unrar命令详解:解压的艺术
unrar是我们最常用的工具,它的核心任务就是把打包好的东西释放出来。它的命令格式非常直观:
unrar <command> [options] <archive.rar> [files...] [path_to_extract]3.1 最常用的解压命令
面对一个rar文件,你通常有几种选择:
1. 全量解压到当前目录
unrar e archive.rar这是最“粗暴”简单的命令。e是extract的缩写。它会将archive.rar中的所有文件解压到当前工作目录下。如果压缩包里有文件夹结构,这个命令会忽略它,把所有文件都“平铺”在当前目录。这很容易导致文件混乱,除非你确认压缩包内本身就没有目录结构。
2. 按原始结构解压到当前目录
unrar x archive.rar这是我最推荐、最常用的命令。x是extract with full path的意思。它会完整地保留压缩包内的所有目录结构,并按照这个结构解压到当前目录。比如压缩包里有一个project/src/main.c,它就会在当前目录下创建project/src/文件夹,然后把main.c放进去。这是最安全、最不容易出错的方式。
3. 解压到指定目录
unrar x archive.rar /home/user/target/在x或e命令后,直接跟上目标路径即可。这对于文件管理非常方便。
4. 仅查看压缩包内容而不解压
unrar l archive.rarl(小写L) 命令会列出压缩包内文件的详细信息,包括大小、压缩后大小、比例、日期和CRC校验值。在解压前,用这个命令看一眼,是个好习惯。
unrar v archive.rarv(verbose) 命令会列出更详细的信息,相当于l的加强版。
3.2 处理带密码和分卷的压缩包
解压带密码的压缩包:
unrar x -pMyPassword archive.rar使用-p参数直接指定密码。注意,密码紧跟在-p后面,中间没有空格。如果密码包含特殊字符或空格,最好用引号包起来:-p"My Password"。
交互式输入密码:如果你不想在命令行历史中留下密码,可以不加-p参数直接解压,unrar会提示你输入密码:
unrar x archive.rar然后根据提示输入密码即可。
处理分卷压缩包:分卷压缩包通常命名为archive.part1.rar,archive.part2.rar等。你只需要对第一个分卷使用解压命令即可,unrar会自动识别并读取后续分卷。
unrar x archive.part1.rar确保所有分卷文件都在同一个目录下。
3.3 高级选项与实用技巧
1. 选择性解压文件你不需要解压整个压缩包,可以只解压特定的文件或使用通配符。
unrar x archive.rar readme.txt # 只解压readme.txt unrar x archive.rar *.jpg # 只解压所有jpg图片 unrar x archive.rar docs/ # 只解压docs目录下的所有内容2. 覆盖文件提示默认情况下,如果解压的文件在目标目录已存在,unrar会询问你是否覆盖。你可以用以下参数控制:
unrar x -o+ archive.rar # 覆盖所有已有文件,不询问 unrar x -o- archive.rar # 跳过所有已有文件,不覆盖 unrar x -o archive.rar # 默认行为,遇到冲突时询问3. 测试压缩包完整性在解压前,或者解压后怀疑文件有问题,可以测试CRC校验。
unrar t archive.rart(test) 命令会模拟解压过程并校验所有文件的CRC值,确保压缩包没有损坏。
避坑指南:使用
e命令解压后文件乱成一团,是新手最常见的问题。养成使用unrar x的习惯,能帮你省去很多整理文件的麻烦。另外,如果遇到解压出来的中文文件名是乱码,这通常是因为压缩包是在Windows(使用GBK编码)创建的,而在Linux(使用UTF-8)下解压。可以尝试在解压时指定编码(如果unrar版本支持),或者使用convmv这类工具在解压后转换文件名。
4. rar命令详解:压缩与管理的利器
如果说unrar是“消费者”,那么rar就是“生产者”和“管理员”。它的功能强大得多,参数也更复杂。基本格式为:
rar <command> [options] <archive.rar> [files...] [path_to_extract]4.1 创建压缩包:从基础到进阶
1. 基础压缩将file1.txt和dir1目录压缩成archive.rar:
rar a archive.rar file1.txt dir1这里a(add) 是核心命令,代表“添加到压缩包”。如果archive.rar不存在,则创建它;如果存在,则将文件添加进去。
2. 递归压缩目录使用-r(recurse) 参数,可以递归地将目录下的所有子目录和文件都加入压缩包。
rar a -r archive.rar my_project/3. 设置压缩级别rar提供了从-m0到-m5的压缩级别。
rar a -m0 archive.rar bigfile.iso # 仅存储,不压缩(最快) rar a -m1 archive.rar documents/ # 最快压缩 rar a -m3 archive.rar documents/ # 默认压缩级别(均衡) rar a -m5 archive.rar documents/ # 最好压缩(最慢)-m3是默认值,在速度和压缩比之间取得了很好的平衡。对于要长期归档的文件,可以考虑使用-m5;对于临时传输,-m1或-m0能节省大量时间。
4. 创建加密压缩包使用-p参数来设置密码。和unrar一样,密码紧跟在参数后。
rar a -pMySecret archive.rar sensitive_data/执行命令后,rar会要求你再次输入密码以确认。
5. 创建分卷压缩包这是rar非常实用的一个功能,尤其适合用于网络传输或放入容量较小的存储介质(如早期的光盘、U盘)。
rar a -v100M archive.rar large_video.mp4-v参数指定分卷大小。-v100M表示每个分卷100MB。后缀可以是K(千字节),M(兆字节),G(千兆字节)。生成的文件会命名为archive.part1.rar,archive.part2.rar等。 你也可以指定固定大小的分卷数量,如-v5表示创建5个等大的分卷。
4.2 管理现有压缩包
rar不仅仅能创建,还能像管理文件夹一样管理压缩包。
1. 查看压缩包内容
rar l archive.rar # 简要列表 rar v archive.rar # 详细列表 rar lt archive.rar # 技术信息列表(文件类型)2. 向压缩包添加文件
rar a archive.rar new_file.txt3. 从压缩包删除文件
rar d archive.rar old_file.txt4. 修复损坏的压缩包
rar r archive.rarr(repair) 命令会尝试修复损坏的压缩包,并生成一个修复后的fixed.archive.rar文件。对于部分损坏的情况,这个功能可能能救回大部分数据。
5. 锁定压缩包(防止修改)
rar k archive.rark(lock) 命令会为压缩包添加一个锁定标记,防止后续被意外修改。
4.3 高级参数与场景应用
1. 排除特定文件在压缩时,你可能不想包含某些临时文件或日志。
rar a -x*.log -x*.tmp archive.rar project/-x参数支持通配符,可以多次使用以排除多种模式。
2. 仅存储特定格式(不压缩)对于已经是压缩格式的文件(如.jpg,.zip,.7z),再次压缩收益很小,反而耗时。可以指定仅存储。
rar a -m0 -n*.jpg -n*.mp4 archive.rar media_folder/-n参数指定仅对匹配的文件进行“存储”操作(不压缩),常与-m0联用。
3. 压缩后删除源文件这是一个需要谨慎使用的参数。
rar a -df archive.rar files_to_compress/-df命令会在成功添加到压缩包后,删除源文件。相当于“移动”到压缩包。务必确保压缩成功后再使用此参数,否则可能导致数据丢失。
4. 创建自解压压缩包虽然Linux下不常用,但rar可以创建Windows格式的自解压包。
rar a -sfx archive.exe folder/生成archive.exe,在Windows上双击即可解压,无需任何其他软件。
注意事项:
rar命令的许多高级功能,如分卷大小计算、高强度加密算法等,在其帮助文档 (rar --help) 中有更详细的说明。对于关键数据的压缩,务必在操作前用rar l或rar t命令确认压缩包内容。另外,由于rar的闭源性,在高度敏感的场景下,社区更推荐使用开源的7z格式进行加密压缩。
5. 图形化前端与集成方案
虽然命令行强大且高效,但并不是所有人都喜欢黑屏白字。在Ubuntu的桌面环境中,你有几种图形化选择。
5.1 文件管理器集成
在安装了unrar和rar之后,Ubuntu默认的文件管理器(GNOME Files, 原名 Nautilus)通常能自动获得解压.rar文件的能力。右键点击一个.rar文件,你应该能看到“解压缩到此处”或类似的选项。这背后调用的其实就是unrar或file-roller(归档管理器)的命令行工具。
压缩功能:通过右键菜单的“压缩”选项,你也可以创建压缩包,但默认格式可能没有rar。你需要确保rar命令已正确安装,有时图形界面才能将其列为可选格式。
5.2 使用Ark(KDE环境)或File Roller(GNOME环境)
这些是功能更全面的图形化归档管理器。
- Ark:KDE桌面的默认工具,功能强大,支持rar的查看、解压和创建(需后端命令行工具支持)。
- File Roller:GNOME桌面的默认工具,同样需要后端命令行工具来支持rar格式。
它们的优点是提供了统一的界面来管理.zip,.tar.gz,.rar,.7z等多种格式,可以直观地查看压缩包内容、拖拽解压部分文件。
5.3 图形化工具PeaZip
如果你需要一个跨平台、功能极其强大且专注于压缩解压的独立图形化工具,PeaZip是一个绝佳的选择。它基于开源技术,自身就包含了对rar格式的完整支持(解压和创建),无需额外安装unrar/rar命令行工具。
安装PeaZip:
sudo apt-add-repository ppa:peazip/ppa sudo apt update sudo apt install peazipPeaZip提供了比系统自带工具更丰富的功能,如高级加密、分卷压缩、文件哈希校验、搜索压缩包内文件等。
个人建议:对于偶尔处理rar文件的普通用户,安装
unrar后使用系统右键菜单解压就足够了。对于需要频繁创建、管理rar压缩包,或者处理加密、分卷等复杂情况的用户,熟练掌握rar命令行是最高效的方式。而对于追求统一图形界面和免配置体验的用户,安装PeaZip这类全能型工具是最省心的方案。
6. 常见问题排查与解决方案实录
在实际操作中,你肯定会遇到一些报错或奇怪的现象。这里我整理了一份“踩坑记录”,希望能帮你快速排雷。
6.1 安装与命令找不到问题
问题:sudo apt install unrar提示找不到包。
- 原因:
multiverse仓库未启用。 - 解决:执行
sudo add-apt-repository multiverse && sudo apt update后重试。
问题:安装后输入rar或unrar提示“命令未找到”。
- 原因:安装路径不在系统的
PATH环境变量中。如果你是从官网下载tar包解压后直接运行的,就可能遇到。 - 解决:
- 找到可执行文件的位置,例如
/home/yourname/rar/rar。 - 创建软链接到系统路径:
sudo ln -s /home/yourname/rar/rar /usr/local/bin/rar - 或者将所在目录加入PATH:在
~/.bashrc末尾添加export PATH=$PATH:/home/yourname/rar,然后执行source ~/.bashrc。
- 找到可执行文件的位置,例如
6.2 解压过程中的典型错误
问题:unrar: error while loading shared libraries: libstdc++.so.6: cannot open shared object file
- 原因:系统缺少运行rar/unrar所需的C++运行库,或者库版本太旧。
- 解决:安装或更新
libstdc++6:sudo apt install libstdc++6。如果问题依旧,尝试从官网下载静态编译版本rar_static来使用。
问题:解压时提示“CRC校验失败”或“文件损坏”。
- 原因:压缩包在下载或传输过程中数据损坏。
- 解决:
- 首先用
unrar t archive.rar测试,确认损坏范围。 - 如果是分卷压缩,检查所有分卷是否下载完整、文件名是否正确。
- 尝试用
rar r archive.rar命令修复(仅对rar格式有效)。 - 最根本的解决方法是重新下载或获取完整的压缩包。
- 首先用
问题:解压出来的中文文件名是乱码。
- 原因:经典的文件名编码问题。压缩包在Windows(GBK/GB2312编码)创建,在Linux(UTF-8编码)解压。
- 解决:
- 使用
unrar的-ierr参数(仅限某些版本)可能无效。更通用的方法是先正常解压,然后用convmv工具转换文件名。 - 安装
convmv:sudo apt install convmv - 假设乱码文件在当前目录:
convmv -f gbk -t utf8 --notest *。-f gbk指定源编码,-t utf8指定目标编码,--notest表示实际执行转换(去掉这个参数则是试运行)。 - 对于压缩包内深层目录的文件,可能需要配合
find命令递归处理。
- 使用
6.3 压缩与密码相关错误
问题:使用rar a -p密码创建加密包时,密码似乎没生效,解压时不需要密码。
- 原因:
-p参数后跟密码时不能有空格。-p MyPassword是错误的,MyPassword会被当作一个需要压缩的文件名。 - 解决:确保命令格式为
rar a -pMyPassword archive.rar file。如果密码包含空格,使用引号:rar a -p"My Password" archive.rar file。
问题:分卷压缩后,如何合并?
- 误解:分卷压缩的
.partX.rar文件本身不是一个需要被“合并”的独立文件。它们是一个整体。 - 正确操作:确保所有
.part1.rar,.part2.rar... 文件都在同一个目录下,然后对.part1.rar执行解压命令unrar x archive.part1.rar,程序会自动读取后续分卷。
问题:想用更高的压缩率,但-m5好像效果不明显?
- 原因:压缩率取决于文件类型。对于文本、代码、数据库等冗余度高的文件,压缩效果显著。对于图片、视频、音频等已经是压缩格式的文件,再用rar压缩,效果微乎其微,有时甚至体积会变大。
- 建议:压缩前用
file命令或观察后缀名判断文件类型。对已压缩格式使用-m0(仅存储)以节省时间。
6.4 性能与资源占用
问题:压缩一个非常大的文件夹(几十GB)时,进程卡住或内存占用极高。
- 原因:rar在压缩时会尝试将文件读入内存进行处理,超大文件可能导致资源紧张。
- 解决:
- 使用
-m1(最快压缩)或-m0(仅存储)来降低CPU和内存消耗。 - 考虑使用分卷压缩
-v,将大任务拆分成小块。 - 对于海量小文件的目录,压缩过程本身(文件遍历、元数据记录)就很耗时,需要耐心等待。
- 监控系统资源,如果内存不足,可以考虑使用
ionice和nice命令降低进程优先级,避免影响系统其他服务:nice -n 19 ionice -c 3 rar a -m1 ...
- 使用
问题:在脚本中自动解压,如何避免交互式提问(如覆盖文件)?
- 解决:使用
-o+(覆盖所有)、-o-(跳过所有)或-o(默认询问)参数。在脚本中通常使用-o+或-o-来确保脚本自动运行。
根据你的业务逻辑选择合适的行为。unrar x -o- archive.rar /target/path/ # 静默跳过已存在文件 unrar x -o+ archive.rar /target/path/ # 静默覆盖所有文件