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的核心,就是两个命令:rarunrar。前者用于创建和修改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官网下载安装(推荐)这是最直接、能获得最新版本的方法。

  1. 访问 RARLAB 官方网站,找到 Linux 版本的下载链接。通常是一个.tar.gz文件。
  2. 使用wget命令下载(请替换为实际的最新链接):
    wget https://www.rarlab.com/rar/rarlinux-x64-6.24.tar.gz
  3. 解压下载的文件:
    tar -xzf rarlinux-x64-6.24.tar.gz
  4. 进入解压后的目录,进行安装:
    cd rar sudo make install
    这个make install脚本会将rarunrar的可执行文件复制到/usr/local/bin目录下,并创建对应的man手册页。

方法二:使用第三方仓库(如UbuntuZilla)有些第三方仓库提供了预编译的包,但版本可能不是最新的,且需要信任该仓库源。操作复杂且有一定风险,对于新手不推荐。

安装成功后,分别运行rarunrar命令,确认两者都已就绪。你会发现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

这是最“粗暴”简单的命令。eextract的缩写。它会将archive.rar中的所有文件解压到当前工作目录下。如果压缩包里有文件夹结构,这个命令会忽略它,把所有文件都“平铺”在当前目录。这很容易导致文件混乱,除非你确认压缩包内本身就没有目录结构。

2. 按原始结构解压到当前目录

unrar x archive.rar

这是我最推荐、最常用的命令。xextract with full path的意思。它会完整地保留压缩包内的所有目录结构,并按照这个结构解压到当前目录。比如压缩包里有一个project/src/main.c,它就会在当前目录下创建project/src/文件夹,然后把main.c放进去。这是最安全、最不容易出错的方式。

3. 解压到指定目录

unrar x archive.rar /home/user/target/

xe命令后,直接跟上目标路径即可。这对于文件管理非常方便。

4. 仅查看压缩包内容而不解压

unrar l archive.rar

l(小写L) 命令会列出压缩包内文件的详细信息,包括大小、压缩后大小、比例、日期和CRC校验值。在解压前,用这个命令看一眼,是个好习惯。

unrar v archive.rar

v(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.rar

t(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.txtdir1目录压缩成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.txt

3. 从压缩包删除文件

rar d archive.rar old_file.txt

4. 修复损坏的压缩包

rar r archive.rar

r(repair) 命令会尝试修复损坏的压缩包,并生成一个修复后的fixed.archive.rar文件。对于部分损坏的情况,这个功能可能能救回大部分数据。

5. 锁定压缩包(防止修改)

rar k archive.rar

k(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 lrar t命令确认压缩包内容。另外,由于rar的闭源性,在高度敏感的场景下,社区更推荐使用开源的7z格式进行加密压缩。

5. 图形化前端与集成方案

虽然命令行强大且高效,但并不是所有人都喜欢黑屏白字。在Ubuntu的桌面环境中,你有几种图形化选择。

5.1 文件管理器集成

在安装了unrarrar之后,Ubuntu默认的文件管理器(GNOME Files, 原名 Nautilus)通常能自动获得解压.rar文件的能力。右键点击一个.rar文件,你应该能看到“解压缩到此处”或类似的选项。这背后调用的其实就是unrarfile-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 peazip

PeaZip提供了比系统自带工具更丰富的功能,如高级加密、分卷压缩、文件哈希校验、搜索压缩包内文件等。

个人建议:对于偶尔处理rar文件的普通用户,安装unrar后使用系统右键菜单解压就足够了。对于需要频繁创建、管理rar压缩包,或者处理加密、分卷等复杂情况的用户,熟练掌握rar命令行是最高效的方式。而对于追求统一图形界面免配置体验的用户,安装PeaZip这类全能型工具是最省心的方案。

6. 常见问题排查与解决方案实录

在实际操作中,你肯定会遇到一些报错或奇怪的现象。这里我整理了一份“踩坑记录”,希望能帮你快速排雷。

6.1 安装与命令找不到问题

问题:sudo apt install unrar提示找不到包。

  • 原因multiverse仓库未启用。
  • 解决:执行sudo add-apt-repository multiverse && sudo apt update后重试。

问题:安装后输入rarunrar提示“命令未找到”。

  • 原因:安装路径不在系统的PATH环境变量中。如果你是从官网下载tar包解压后直接运行的,就可能遇到。
  • 解决
    1. 找到可执行文件的位置,例如/home/yourname/rar/rar
    2. 创建软链接到系统路径:sudo ln -s /home/yourname/rar/rar /usr/local/bin/rar
    3. 或者将所在目录加入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++6sudo apt install libstdc++6。如果问题依旧,尝试从官网下载静态编译版本rar_static来使用。

问题:解压时提示“CRC校验失败”或“文件损坏”。

  • 原因:压缩包在下载或传输过程中数据损坏。
  • 解决
    1. 首先用unrar t archive.rar测试,确认损坏范围。
    2. 如果是分卷压缩,检查所有分卷是否下载完整、文件名是否正确。
    3. 尝试用rar r archive.rar命令修复(仅对rar格式有效)。
    4. 最根本的解决方法是重新下载或获取完整的压缩包。

问题:解压出来的中文文件名是乱码。

  • 原因:经典的文件名编码问题。压缩包在Windows(GBK/GB2312编码)创建,在Linux(UTF-8编码)解压。
  • 解决
    1. 使用unrar-ierr参数(仅限某些版本)可能无效。更通用的方法是先正常解压,然后用convmv工具转换文件名。
    2. 安装convmvsudo apt install convmv
    3. 假设乱码文件在当前目录:convmv -f gbk -t utf8 --notest *-f gbk指定源编码,-t utf8指定目标编码,--notest表示实际执行转换(去掉这个参数则是试运行)。
    4. 对于压缩包内深层目录的文件,可能需要配合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在压缩时会尝试将文件读入内存进行处理,超大文件可能导致资源紧张。
  • 解决
    1. 使用-m1(最快压缩)或-m0(仅存储)来降低CPU和内存消耗。
    2. 考虑使用分卷压缩-v,将大任务拆分成小块。
    3. 对于海量小文件的目录,压缩过程本身(文件遍历、元数据记录)就很耗时,需要耐心等待。
    4. 监控系统资源,如果内存不足,可以考虑使用ionicenice命令降低进程优先级,避免影响系统其他服务: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/ # 静默覆盖所有文件
    根据你的业务逻辑选择合适的行为。