ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux服务器安装RAR工具:tar.gz解包与rar/unrar实战指南

Linux服务器安装RAR工具:tar.gz解包与rar/unrar实战指南 简介面向64位Linux系统的RAR 6.1命令行工具测试版用于在主流64位Linux发行版上创建和提取RAR压缩包适合系统管理员、运维工程师和进阶使用者在服务器环境完成归档备份与跨平台传输。压缩包共11个文件体积约590KB包含rar与unrar可执行程序、makefile构建脚本、5个txt说明文档、lst格式列表、htm说明页和sfx自解压模块解压后即可部署到可执行路径使用。该版本支持多卷压缩、生成自解压文件、AES加密、损坏压缩包修复和多语言界面可覆盖跨平台文件交付、长期归档维护和传输异常恢复等场景。已有197人学习下载对经常接触rar格式资源或需要兼容既有压缩包的用户是一份轻量、直接可用的实用工具。1. 一份 tar.gz解决 Linux 服务器上最麻烦的 RAR 交换问题rarlinux-x64-6.1.b1.tar.gz 是我在 Linux 服务器上处理 Windows 同事发来的 RAR 压缩包时最常装的命令行工具。它不是某个民间脚本是 RARLAB 官方出的 RAR for Linux x64 版对应版本号 6.1 beta1用 tar.gz 打包发布解包后是两个二进制rar 和 unrar。它能干两类活把目录压成 .rar以及把 .rar、.zip、.tar 解出来。适合 Linux 运维、嵌入式开发、NAS 玩家这类没有图形界面、又要和 Windows 交换压缩包的场景。下面按我自己的落地顺序讲为什么不用系统自带的 unar、怎么装、常用参数怎么配以及我踩过的 5 个坑。2. RAR for Linux 与 unar/7-Zip 的差异为什么服务器上要装它2.1 rar 与 unrar一个工具包里的两个命令一个容易忽略的事实Linux 发行版默认带的通常是 unar-free 或 bsdtar不是 RARLAB 的 unrar。它们能解一部分 .rar但对 RAR5、加密头、分卷的支持参差不齐。你可以先探测一下系统里现在有什么# 看看系统里已有的解压工具 which unar unrar 7z 2/dev/null # 如果有 unar看版本 unar -version 2/dev/null这段命令输出为空也正常说明这台机器上连最基本的 RAR 解压能力都没有。很多新手在这里就去找图形界面工具但服务器上更常见的是缺这缺那的精简环境直接用命令行判断最快。解压工具的输出一般会带上版本和 RAR 格式支持范围比如 unar-free 对 RAR5 的支持一直滞后遇到高版本压缩包会直接报错。如果只是偶尔解一个压缩包unar 和 7-Zip 都能应付但要在 Linux 上创建 .rar 文件老实说只能拿官方 rar。不是别的工具不够好而是 RAR 压缩算法没有对外开放第三方工具大多只实现了解压。你问“7zip 可以解压 rar 文件吗”答案是可以解但不能创建。这个限制在交付场景里很致命。工具解 .rar建 .rar适用场景unar / unrar-free部分支持不能系统自带偶尔应急7-Zip能解不能桌面环境格式转换rarRARLAB 官方能解能建服务器、备份、交付2.2 能解 RAR 和能“产” RAR是两个完全不同的诉求运维场景里遇到 RAR通常逃不出这三类第一类是 Windows 同事发来设计稿、合同扫描件、日志包后缀是 .rar你需要解压提取内容。这个诉求用 unar 或 7-Zip 都能解决前提是压缩包没有加密文件名、没有用太新的 RAR5 特性。第二类是你要把服务器上的目录打包发给外部人员对方只装了 WinRAR你说“我用 tar.gz 压的”对方十有八九打不开。RAR 是 Windows 生态天然的交换格式两边都认这时候只有官方 rar 命令能稳定产出兼容包。第三类是老 NAS 或嵌入式 Linux 项目里的存量数据几百个 .r00、.r01 分卷躺在磁盘上需要抽取其中某个文件。这类压缩包往往是 RAR4 老格式GNU 系的解压工具碰到多卷经常翻车官方 unrar 反而兼容性最好。这三类诉求的共同点是你不是在做格式研究你是在解决一个 Linux 系统管理里很现实的文件交换问题。与其装三四个工具来回试不如直接上官方包解压和压缩都覆盖参数行为也稳定不会出现“这台机器能解、那台机器不能解”的玄学问题。2.3 6.1.b1 这个版本的格式边界RAR5、RAR4 与兼容参数6.1.b1 属于 RARLAB 6.x 系列默认创建的是 RAR5 格式。RAR5 和 RAR4 的文件扩展名都叫 .rar内部结构完全不同。老设备上装的解压工具不认识 RAR5会报 unknown format 或 unsupported method。先看一下当前版本# 查看版本信息和授权状态 rar -version # 不带参数直接执行会列出可用命令和关键参数 rarrar -version输出里会写明格式版本。如果你的交付对象是一台老 NAS里面固件自带的 unrar 只认 RAR4那创建压缩包时就要加兼容参数常见做法是# 创建 RAR4 格式兼容老 NAS 和老 WinRAR rar a -ma4 legacy.rar ./data/ # 默认 RAR5 格式文件名和元数据都用 Unicode rar a -ma5 modern.rar ./data/-ma4让输出回到 RAR4-ma5显式指定 RAR5。别小看这个参数我在一台 2015 年的 NAS 上就吃过亏默认 RAR5 压出来的包解压端直接拒绝识别加上-ma4后一切正常。如果你手里的环境全是近五年的系统可以不用管这一节但涉及老设备务必在压缩前确认对端能解哪个版本。3. 安装 rarlinux-x64-6.1.b1.tar.gz解包、放进 PATH、验证一条龙3.1 下载前先核对架构与 glibc下载这个包之前先确认系统是不是 x86_64。很多服务器是 ARM 或旧 32 位系统硬塞 x64 包只会得到一句 Exec format error。确认命令很简单# 看系统架构x86_64 就选 x64 包 uname -m # 看 glibc 版本太老的老系统可能跑不动新版 rar ldd --version | head -1x86_64 架构基本没问题真正容易翻车的是精简 Docker 镜像和嵌入式 Linux 项目。官方包里有动态链接的 rar 和静态链接的 rar_static动态版依赖 glibc、libstdc 这些基础库精简镜像里常常缺静态版什么依赖都不要拷进去就能跑。下载后先别急着解压把这两点核对完再动手能省半小时排查时间。3.2 解包并安装到 /usr/local/bin拿到 rarlinux-x64-6.1.b1.tar.gz 后我习惯先列内容再看目录结构避免解出一堆散文件# 先看压缩包内部结构 tar -tzf rarlinux-x64-6.1.b1.tar.gz # 解压到当前目录 tar -xzf rarlinux-x64-6.1.b1.tar.gz # 解出来的应该是 rar 目录 ls -l rar/这个包解开后是一个 rar/ 目录里面有 rar、unrar、rar_static 以及 readme、license 之类的文本文件。下一步是安装到系统 PATH 里。用 install 而不是 cp主要为了设置权限位# 安装到 /usr/local/bin755 权限 sudo install -m 755 rar/rar /usr/local/bin/rar sudo install -m 755 rar/unrar /usr/local/bin/unrar sudo install -m 755 rar/rar_static /usr/local/bin/rar_static # 确认版本 rar -version | head -5装到 /usr/local/bin 有两个好处一是这个目录通常已经在 PATH 里二是比改 /usr/bin 更不容易被系统包管理器覆盖。如果你在 CentOS 系或 Debian 系上操作这两行 install 命令效果一致。注意我没有把 readme 和 license 装进去对运行没影响但生产环境我一般会把 license 文件留一份在 /usr/local/share/doc/rar 下方便追溯。3.3 普通用户安装与 PATH 设置不是所有服务器都有 root 权限容器里和共享开发机上更常见的是普通用户。这时候把整个 rar 目录放到用户目录再把 PATH 指过去# 用户级安装解压到 ~/tools/rar mkdir -p ~/tools tar -xzf rarlinux-x64-6.1.b1.tar.gz -C ~/tools # 在 ~/.bashrc 里追加 PATH echo export PATH$HOME/tools/rar:$PATH ~/.bashrc source ~/.bashrc # 让 unrar 也能作为独立命令使用 mkdir -p ~/bin ln -sf ~/tools/rar/unrar ~/bin/unrar ln -sf ~/tools/rar/rar ~/bin/rar export PATH$HOME/bin:$PATH这里有个注意点rar 命令运行时会在工作目录或安装目录写一些元数据文件比如 rarfiles.lst、rar.ini。如果整个 rar 目录放在用户可写的地方就不会因为权限问题报错。我之前见过有人用 root 把 rar 装进 /usr/local/bin但普通用户执行时报“Cannot create /usr/local/bin/rarfiles.lst”就是因为主目录不可写。遇到这种问题要么给 rar 目录加写权限要么改成用户级安装。3.4 最小验证压一个测试目录再验一遍安装完别急着上生产先做一次最小闭环验证也就是“创建压缩包 完整性测试”两步# 建一个测试目录 mkdir -p /tmp/rartest echo hello /tmp/rartest/a.txt # 创建压缩包 rar a /tmp/rartest.rar /tmp/rartest/ # 做完整性测试 rar t /tmp/rartest.rar这里的rar t是 test 的意思不是 target也不是指定目录新手很容易把t当成路径参数。rar t会把压缩包里的每个文件读出来做 CRC 校验输出 All OK 才算真正安装成功。这一步如果漏了后面出问题很难判断是压缩过程的问题还是磁盘坏道所以每次装完 rar 我都习惯性跑一遍。4. rar 命令核心参数压缩、解压、加密、分卷四个场景一次讲清4.1 创建压缩包rar a 与压缩级别、固实、恢复记录创建压缩包用rar aa 代表 add。生产环境我常用的组合是# 极限压缩 固实 10% 恢复记录 去掉外层路径 rar a -m5 -s -rr10% -ep1 /backup/www_$(date %F).rar /var/www/拆开看每个参数的作用-m5压缩级别从 -m0 到 -m5-m0 是仅存储不压缩-m5 是极限压缩。文本和日志多的时候收益明显视频和图片基本压不动所以视频目录建议用 -m3 平衡速度和体积。-s固实模式。把多个小文件合并成一个连续数据流压缩率明显提升但代价是一个文件损坏会导致后续文件解压失败。配合恢复记录能把这个副作用降到最低。-rr10%追加 10% 的恢复记录。磁盘坏道、下载不完整时恢复记录能救回部分数据相当于给压缩包买了份后悔药。-ep1去掉路径中的外层目录。比如我在 /home/user 下执行这条命令压缩包内路径会从 data/ 开始而不是 home/user/data/避免解压时多套一层目录。固实 恢复记录是个很经典的组合。文件数量多、单体文件小的目录用 -s 收益很大但如果你压的是好几个 GB 的单个视频固实没意义恢复记录也建议调低。我在备份脚本里通常用 -m3 -s -rr5%兼顾速度和安全性。4.2 解压到指定目录rar x 与 rar e 的区别解压有两个容易混淆的命令rar x保留压缩包内的目录结构rar e把所有文件解到同一个目录。看代码# x保留目录结构解压到 /data/restore/ rar x /backup/site_2025.rar /data/restore/ # e全部摊平所有文件丢进同一个目录 rar e /backup/site_2025.rar /data/all/ # 覆盖已存在文件 rar x -o /backup/site_2025.rar /data/restore/ # 跳过已存在文件 rar x -o- /backup/site_2025.rar /data/restore/服务器脚本里我基本只用 x因为压缩包创建时保存了什么结构解压时就还原什么结构不会出现同名文件互相覆盖的问题。只有一种情况用 e你确实不管目录层级只想把里面所有文件摊平到一个目录比如从多个压缩包里抽取图片素材。-o和-o-是覆盖策略前者强制覆盖后者跳过已有文件。批量解压时配合-y可以自动回答所有确认提示适合无人值守脚本。有个细节解压目标目录不存在时rar x 会自己创建目录不需要先 mkdir。我见过不少同事会先 mkdir -p 再解压其实多余。但要注意挂载点权限如果目标路径是只读挂载或 noexecrar 依然会写文件只是执行时可能报权限错误这个放后面讲。4.3 加密压缩-p 与 -hp 的区别RAR 加密有两个常见参数-p只加密文件数据文件名和目录结构可见-hp连文件名一起加密压缩包里列目录只能看到一串星号。代码对比# 仅数据加密文件名可见 rar a -pPssw0rd secret.rar ./docs/ # 全加密文件名也不可见 rar a -hpPssw0rd secret.rar ./docs/ # 解压时输入密码 rar x -pPssw0rd secret.rar /data/out/敏感数据我推荐 -hp因为文件名本身可能就是信息。但要注意命令行里直接带密码会留在 shell history 里生产环境我一般把密码放在单独文件里权限设成 600# 从文件读取密码避免出现在 history 中 PASS$(cat /etc/backup_pass) rar a -hp$PASS backup.rar ./data/关于“rar 压缩包密码忘了强制解压”这个问题实践里没有后悔药可以吃RAR 的加密没有后门恢复记录只能修复数据损坏不能找回密码。短密码可以通过字典或暴力枚举碰运气长密码基本无解。所以服务器上保存密码文件比保存压缩包本身更重要我会把 /etc/backup_pass 纳入备份范围并且每年轮换一次。4.4 分卷压缩与多卷解压大文件交换时经常要分卷尤其要发到微信或者邮件附件有体积限制的场景# 按 100MB 一卷分卷 rar a -v100M big.rar /data/videos/ # 解压时只指定第一卷 rar x big.part1.rar /data/restore/6.x 版本生成的分卷命名是 big.part1.rar、big.part2.rar老格式是 big.r00、big.r01。解压分卷时不用把所有分卷都写进命令行指定第一个rar 会自动找后续卷。有两个前提所有分卷必须在同一个目录文件名前缀必须完全一致。临时拷贝分卷时最容易把 part1 的扩展名改成 .part01.rarrar 会报找不到卷后面避坑章节我会给统一改名的笨办法。分卷通常会和恢复记录搭配使用因为任何一个分卷损坏都会导致整个解压失败。比如-v100M -rr5%每个分卷都带 5% 冗余额坏一个文件还有救回的余地。如果你要防止覆盖已存在的分卷加-vnrar 发现卷已存在会直接跳过而不是覆盖。5. rarlinux 使用避坑5 个踩坑记录与排查方法这一章是我在 Linux 系统故障案例里遇到最多的 RAR 相关问题每个都是“现象 → 原因 → 解决”的完整闭环供你排查时对照。5.1 解包之后命令找不到PATH 却已经加了现象把 rar 安装到 /usr/local/bin 后执行 rar 仍然提示 command not found。原因最常见的是当前 shell 的 PATH 缓存或者会话没重开。另一种很冷门但真实存在的情况下载时浏览器把文件改名成 rar.exe在 Linux 下执行当然跑不了。先做三个检查# 1. 看文件类型必须是 ELFWindows 的 PE 格式跑不了 file /usr/local/bin/rar # 2. 看命令是否生效 which rar # 3. 重新加载命令哈希 hash -r如果 file 输出显示 PE32 executable说明你下载到了 Windows 版如果显示 ELF 但 which 找不到就是 PATH 问题。修正 PATH 后记得 hash -r 清缓存不然 bash 还会记住之前的查找结果。这种问题看起来很基础但真的很常见我处理过的 Linux 运维故障案例里至少有三次是栽在这里。5.2 Windows 压出来的 rar 在 Linux 解压出现中文乱码现象从 Windows 中文环境压缩的 rar 包在 Linux 上解压后文件名变成“绗熸?鏂囦欢”之类的乱码。原因RAR4 格式存储文件名时用的是系统本地编码中文 Windows 下是 GBK而 Linux 侧默认按 UTF-8 解码两边对不上就乱码。RAR5 默认用 Unicode 存储文件名基本不会出现这个问题。所以乱码大概率来自老压缩包。解决思路有两个方向。一是从源头避免让对端 WinRAR 压缩时勾选“文件名使用 UTF-8”RAR5 默认就带二是对已经解乱的文件名做编码转换# 安装 convmv sudo apt install convmv # 把解压目录里的 GBK 文件名转成 UTF-8 convmv -r -f GBK -t UTF-8 --notest /data/restore/--notest是真正执行转换不加它 convmv 只会预览结果。注意这个工具只改文件名不碰文件内容转换前先用rar lb列出压缩包内原始文件名确认确实是 GBK 编码再动手。如果文件名里带换行符或其他特殊字符批量处理前先用find -print0等方式处理别直接用ls配通配符。5.3 解压报 Cannot create directory但目录明明可写现象普通用户在 /data/restore 下有写权限但rar x解压时报 Cannot create directory中途失败。原因压缩包内部路径带了不合理的层级或权限位。常见情况有两种一是包内有盘符路径或根路径rar 试图创建 /C:/ 这类目录二是目标文件系统挂载了节点限制或者包内目录的权限位与当前文件系统冲突。先看包内路径再决定怎么解# 列出压缩包内的完整路径 rar lb archive.rar | head -20 # 用 -ep1 剥掉外层路径再解 rar x -ep1 archive.rar /data/restore/rar lb输出里如果第一行就是 C:\ 或 /home/user/ 这种绝对路径解压时的行为取决于 rar 版本。官方新版默认会拦截路径穿越老版本存在路径穿越漏洞所以我一直建议用 6.x 版本。遇到包内路径异常用-ep1把路径层级剥掉一层大多数问题能解决。5.4 分卷明明都在却提示找不到下一个卷现象所有 big.partX.rar 都在同一个目录rar 解压时却提示 Cannot find volume停下来等下一个卷。原因分卷命名不一致。比如原本是 part1、part2下载工具自动补零成了 part01、part02或者是 Windows 侧的老分卷 .r00、.r01但有人手动改名成了 .part01.rar编号格式对不上。先看实际文件名# 列出分卷确认命名规则 ls -l big.part*.rar # 统一补零命名把 part01 改回 part1 for f in big.part0*.rar; do mv $f ${f/part0/part}; done上面这个笨办法只适合两位数以内的分卷两位数以上的补零逻辑要自己调整。解压分卷时还有个习惯值得养成解压前先ls -l | wc -l数一下分卷数量再和压缩包创建时的体积对比防止下载过程中漏卷。分卷漏一个整包都解不出来这不是什么玄学纯粹是文件系统层面就缺了东西。5.5 执行 ./rar 报 No such file or directory文件明明存在现象rar 文件在权限也是 755但执行时提示 No such file or directory看起来特别诡异。原因这不是文件不存在而是动态链接器或共享库缺失。rar 官方包里的 rar 是动态链接的依赖 glibc、libstdc 等库精简容器、嵌入式 Linux 系统里这些库往往没有或者 glibc 版本太老系统加载器直接拒绝加载报错信息就是这么有迷惑性。排查和解决# 看文件类型和链接方式 file rar # 查看动态库依赖 ldd rar # 精简环境下直接用静态版 ./rar_static a test.rar /tmp/rartest/ldd 输出里有 not found 就说明缺库补库可以但嵌入式系统里补 glibc 不现实更靠谱的做法是把官方包里的 rar_static 复制过去用。static 版没有外部依赖一条命令就能跑。我一般在 Docker 容器里也优先用 rar_static毕竟容器镜像越薄越好不可能为了一个压缩工具再装一整套运行时。6. 把 rar 用进备份流程加密打包、自校验与定时清理6.1 一个可直接改的备份脚本工具装好、参数摸清之后我建议把 rar 编进 Linux 系统管理的备份流程而不是每次手动敲命令。这是一个精简但完整的备份脚本骨架#!/bin/bash # backup_rar.sh -- 加密备份站点目录保留最近 7 份 set -euo pipefail SRC/var/www DEST/backup PASS_FILE/etc/backup_pass STAMP$(date %F-%H%M%S) PASS$(cat $PASS_FILE) # 压缩-m3 平衡-s 固实-rr5% 恢复记录-hp 加密文件名 rar a -m3 -s -rr5% -hp$PASS -ep1 $DEST/site_$STAMP.rar $SRC /tmp/rar_$STAMP.log # 立即做完整性测试失败则脚本退出 rar t $DEST/site_$STAMP.rar /tmp/rar_$STAMP.log # 只保留最近 7 个备份文件 ls -1t $DEST/site_*.rar | tail -n 8 | xargs -r rm -f脚本里几个关键点set -euo pipefail保证 rar 失败时脚本立刻退出不会出现“压缩坏了但旧备份已经被清理”的空窗密码从文件读取避免出现在 shell history 和进程列表里rar t在压缩完成后立刻做自校验等于给备份上了双保险最后一行按时间排序保留 7 份xargs -r在列表为空时不执行删除。6.2 调度与恢复验证脚本就位后加入 crontabchmod x /opt/scripts/backup_rar.sh crontab -e # 每天凌晨 2 点执行 0 2 * * * /opt/scripts/backup_rar.sh备份不是压缩完就结束能解出来才是真的备份。我建议每个月做一次恢复演练从备份里挑一份解压到临时目录抽查文件大小和修改时间至少完整跑一次rar t。我自己第一次把 rar 编进备份脚本时漏掉了自校验这一环赶上磁盘坏道三个月后恢复才发现第二卷校验失败幸好有恢复记录把大部分数据捞了回来。那之后我把“备份后必须自校验”当成默认步骤宁可多花几秒也不赌磁盘没问题。希望帮到你。本文还有配套的精品资源点击获取
返回列表