简介:rarlinux-x64-6.1.b1.tar.gz 是面向 64 位 Linux 平台(如 Ubuntu、Debian、Fedora)用户的 RAR 命令行压缩工具测试版,适合需要在 Linux 服务器或本地环境中处理 RAR 格式、进行高压缩比打包与解包、制作多卷归档或加密档案的运维与开发人员。压缩包内共 11 个文件,约 590KB,以 txt 说明文档为主体,附有 rar 与 unrar 两个可执行程序、makefile 编译脚本、rarfiles.lst 文件清单、default.sfx 自解压模块及 htm 格式的 order 说明页,文档部分涵盖版本更新记录、许可协议与致谢信息,便于读者在安装前了解改动与授权范围。已有 198 人学习关注。借助这套工具,读者可获得 6.1.b1 版本的原生命令行程序及配套说明,用于实践多卷分卷压缩、AES 加密归档、损坏档案修复与自解压文件生成等操作,同时通过 whatnew 与 readme 文档掌握测试版相对稳定版的功能差异,为后续在 Linux 下替换或补充 tar.gz 工作流提供参考。
1. rarlinux-x64-6.1 这个包到底解决什么问题
rarlinux-x64-6.1 这个包不是发行版仓库里那种只负责解压的 unrar 小工具,而是一套 Linux x64 预编译命令行包,rar 和 unrar 都在里面。它解决的是在 Linux 服务器上直接创建 RAR、做分卷、加恢复记录、加密文件名这类交付需求,尤其适合跨平台传大目录、给 Windows 端回包、做离线归档的运维和开发。它不解决“压缩率玄学”,也不替代备份策略;beta 版更要先小范围验证。适合谁?需要在 x64 Linux 上把一堆文件稳定打成 RAR,并且能接受命令行操作的人。
2. 拆包与落位:从 tar.gz 到可执行命令的路径选择
2.1 预编译二进制包和发行版包的差别
这个 tar.gz 是预编译二进制发布包,不是源码包。解包后通常能看到rar、unrar和说明文件,省掉了编译链和依赖折腾。发行版仓库里的 unrar 往往只覆盖解压场景,版本也偏保守;这个包把创建 RAR 的rar和负责解压的unrar放在一起,版本对齐,适合需要分卷、恢复记录、文件头加密的交付任务。
选型上我一般不会把它解到当前目录再用./rar跑。当前目录解包会让二进制、说明文件和业务文件混在一起,权限也容易丢;换一台机器还得重新找路径。更稳的做法是固定版本目录,比如/opt/rar-6.1.b1,再用/usr/local/bin下的软链暴露命令。这样多版本可以共存,出问题能回退,脚本里也能写绝对路径。
为什么先看tar -tzf?因为不同发布包的顶层目录名不一定相同。直接tar -xzf到目标目录,可能多一层目录,也可能把文件摊平。先列一眼,确认顶层是不是单目录,再决定要不要--strip-components=1,比事后找文件省事。
注意:beta 版不要直接覆盖生产机上正在用的稳定版。先用带版本后缀的命令验证,确认压缩、解压、分卷、校验都跑通,再考虑替换软链。
2.2 解包、校验和安装到固定路径
先列包内结构,再解到独立目录。下面这段命令把“看、解、授权、查依赖、软链验证”放在一条线上,适合在一台新机器上第一次落位。
# 1. 先看包内顶层结构,确认是否带单层目录 tar -tzf rarlinux-x64-6.1.b1.tar.gz | sed -n '1,30p' # 2. 解到独立版本目录;若顶层是单目录,用 --strip-components=1 去掉它 sudo mkdir -p /opt/rar-6.1.b1 sudo tar -xzf rarlinux-x64-6.1.b1.tar.gz -C /opt/rar-6.1.b1 --strip-components=1 # 3. 给可执行文件权限,并检查动态库依赖 sudo chmod 0755 /opt/rar-6.1.b1/rar /opt/rar-6.1.b1/unrar ldd /opt/rar-6.1.b1/rar | grep -E 'not found|libstdc\+\+|libc\.so' || true # 4. 先不覆盖系统命令,用带版本后缀的软链验证 sudo ln -sfn /opt/rar-6.1.b1/rar /usr/local/bin/rar61 sudo ln -sfn /opt/rar-6.1.b1/unrar /usr/local/bin/unrar61 rar61 -? | sed -n '1,12p'tar -tzf只列内容,不解压,用来确认顶层目录;-C指定解包目标;--strip-components=1去掉一层顶层目录,前提是包内确实是单目录结构,如果不是就删掉这个参数。chmod 0755给二进制执行权限;ldd看动态库有没有not found,老镜像上这一步经常能提前暴露问题。ln -sfn是强制软链,rar61、unrar61带版本后缀,先避免和系统已有命令打架。
如果tar -tzf看到顶层不是单目录,直接把--strip-components=1去掉,再检查/opt/rar-6.1.b1下是不是直接出现rar和unrar。路径不对时不要急着继续软链,先用find /opt/rar-6.1.b1 -maxdepth 2 -type f -name 'rar'找实际位置,否则后面rar61 -?会报找不到文件。
2.3 多版本共存与 PATH 顺序
机器上已经有unrar时,最容易翻车的不是安装,而是命令到底走了哪一个。/usr/bin/unrar、/usr/local/bin/unrar、当前目录的./unrar都可能在 PATH 里抢位置。脚本里尤其明显:交互 shell 的 alias 不会带进非交互脚本,PATH 顺序却会。
我一般先跑type -a rar unrar和readlink -f "$(command -v unrar)",把实际路径固定下来。长期共存时用带版本后缀的命令,项目脚本里写/opt/rar-6.1.b1/rar这种绝对路径;需要常用短命令时,再决定是否把/usr/local/bin/rar指向新版本。不要在没验证前直接覆盖/usr/bin/unrar,系统包管理器和别的脚本可能依赖它。
# 看清命令来源和软链终点 type -a rar unrar || true readlink -f "$(command -v rar)" 2>/dev/null || true readlink -f "$(command -v unrar)" 2>/dev/null || true # 临时把新版本放到 PATH 前面做验证,不改系统软链 export PATH="/opt/rar-6.1.b1:$PATH" rar -? | sed -n '1,8p'type -a会按 PATH 顺序列出所有同名命令;readlink -f追到真实文件;export PATH只影响当前 shell,适合验证阶段。验证通过后再决定软链策略,比一上来改系统目录稳。
3. rar 命令的参数骨架:压缩、分卷、加密与恢复记录
3.1 压缩参数:a、-r、-m、-md、-s、-x
rar a是创建或更新压缩包,-r递归目录,-m5最高压缩等级,-md128m指定字典大小,-s开固实压缩,-x排除匹配文件。压缩率不是越高越好:-m5吃 CPU,-md128m吃内存,-s让多个文件共享压缩上下文,体积更小,但单点损坏的影响范围也更大。交付目录里如果有大量小文件,固实压缩收益明显;如果是已经压过的图片、视频,别指望-m5能救回来。
我习惯先cd到父目录再压子目录,避免压缩包内出现一长串绝对路径。下面这段把工作目录切到/data/work,压project目录,排除临时文件和缓存目录。
cd /data/work # 压目录,保留 project/ 相对路径,排除临时文件和缓存 rar a -r -m5 -md128m -s \ -x'*.tmp' -x'*/cache/*' \ /data/backup/project.rar projecta是添加并创建;-r递归子目录;-m5压缩等级 0 到 5,5 最慢;-md128m字典 128MB,压缩和解压端都要有相应内存;-s固实压缩;-x'*.tmp'和-x'*/cache/*'排除指定模式。压缩包内路径以project/开头,解压时不会把/data/work带出来。
如果目录很大,先拿一个子目录试压,确认排除规则生效。rar lt可以看压缩包内文件列表和技术信息,别等压完几十 GB 才发现缓存目录也进去了。-m5和-md128m在内存紧张的机器上要降,尤其是并发跑多个压缩任务时,字典大小乘上并发数就是内存压力。
3.2 分卷与恢复记录:-v、-rr
分卷用-v指定卷大小,比如-v2g是 2GB 一卷;恢复记录用-rr加冗余,比如-rr3%。分卷适合 FAT32 移动盘、邮件附件限制、跨网络分段传输;恢复记录适合怕介质轻微损坏的场景。两者可以一起用,但不要指望恢复记录能救回“少了一个卷”的情况,缺卷是另一类问题。
# 2GB 分卷,加 3% 恢复记录 rar a -r -m5 -v2g -rr3% /data/backup/project.rar project # 对第一个卷做完整性测试;分卷测试从 part1 开始 rar t /data/backup/project.part1.rar-v2g生成.part1.rar、.part2.rar这类卷;-rr3%加恢复记录;rar t做测试。分卷命名和顺序是交付的一部分,传输时不要改名、不要只传其中几卷。恢复记录能修少量坏块,但修复前先保留原始卷,别在原卷上反复操作。
提示:分卷包交付时附一份校验清单,收件方先核对卷数和哈希,再解压。只测
part1不够,最好每个卷都过一遍rar t,至少确认没有明显截断。
3.3 密码、文件列表和文件名头加密
-p用来设密码,-hp会连文件名一起加密。区别很实际:只加密数据时,别人还能列出压缩包里的文件名;-hp之后,没有密码连目录都看不到。给外部交付敏感目录时,我一般用-hp,但要在交付说明里写清楚“需要密码才能列目录”,否则对方会以为包坏了。
密码不要直接拼在命令里。-pPASSWORD会进 shell 历史,也可能被进程列表看到。更稳的是用环境变量加标准输入,或者让命令交互提示。文件列表用-n@包含、-x@排除,适合文件多、规则固定的场景。
# 密码从标准输入读,避免明文进历史命令 printf '%s\n' "$RAR_PASS" | rar a -r -hp -p -m5 /data/backup/secret.rar secret # 用文件列表控制包含和排除 printf '%s\n' 'src/' 'config/' > include.txt printf '%s\n' '*.log' 'tmp/' > exclude.txt rar a -r -n@include.txt -x@exclude.txt /data/backup/select.rar .-hp加密文件头;-p不带密码值时从标准输入或终端读;printf把环境变量送进标准输入,避免密码出现在命令参数里。-n@include.txt按行读包含列表,-x@exclude.txt按行读排除列表,适合规则多的目录。-hp之后unrar l也需要密码,排查时先确认这一点。
3.4 验证:t、lt、vt 和恢复记录检查
压缩完不验证,等于把问题留给收件方。rar t做完整性测试,rar lt看技术列表,rar vt看更详细的卷和文件信息。大包交付前至少跑一次t,分卷包从part1开始跑,确认卷链完整。恢复记录不是“后悔药”的全部,原始数据、校验清单、卷顺序都要一起管。
# 基础完整性测试 rar t /data/backup/project.part1.rar # 看技术信息:卷大小、恢复记录、文件数 rar lt /data/backup/project.part1.rar | sed -n '1,40p' # 详细列表,排查异常路径和属性 rar vt /data/backup/project.part1.rar | sed -n '1,40p't只做测试,不落盘;lt输出技术信息;vt更详细。分卷包测试从第一个卷开始,工具会顺着卷链往下找。输出里重点看卷数、恢复记录百分比、文件路径有没有异常前缀。测试通过再生成哈希清单,顺序不要反。
4. unrar 解压与交付:目录、覆盖、分卷和校验的边界
4.1 x、e、l 三种模式
unrar l只列表,不落盘;unrar x保留目录结构解压;unrar e把文件平铺到目标目录。日常交付优先x,因为目录结构本身就是信息。e适合“只要文件、不要层级”的场景,但同名文件会冲突,解压前先用l看一眼。
# 只看内容,不落盘 unrar l /data/backup/project.rar # 保留目录结构解压到指定目录,已存在文件不覆盖 mkdir -p /data/restore/project unrar x -o- /data/backup/project.rar /data/restore/project/ # 平铺解压,只适合确认没有同名文件的情况 mkdir -p /data/restore/flat unrar e -o- /data/backup/project.rar /data/restore/flat/l列出内容;x带路径解压;e平铺;-o-表示不覆盖已存在文件。目标目录先建好,避免路径权限问题。平铺前一定先l,同名文件在e模式下会互相顶掉,后续很难判断丢了哪一个。
4.2 覆盖策略与路径安全
覆盖策略不要凭感觉。生产恢复目录里,我默认-o-,先保住已有文件;确认要更新时再-o+。-ow适合覆盖前保留旧文件的场景,但具体行为以包内说明为准,别把它当成备份方案。解未知来源的包,先解到隔离目录,不要用 root 直接往业务目录里铺。
| 参数 | 行为 | 适用场景 |
|---|---|---|
-o+ | 直接覆盖已存在文件 | 确认目标目录可重建 |
-o- | 跳过已存在文件 | 恢复、合并、先保命 |
-ow | 覆盖时保留旧文件 | 需要留回退副本 |
| 无参数 | 交互询问 | 手工操作,不适合脚本 |
路径安全也要看。压缩包内如果出现../这类路径,解压时可能跑到目标目录外面。先unrar l看列表,再用x解到空目录,确认路径正常后再合并。不要用e平铺未知包,平铺会丢掉路径信息,排查时更被动。
# 先列表检查异常路径,再解到隔离目录 unrar l /data/backup/unknown.rar | sed -n '1,30p' mkdir -p /data/restore/quarantine unrar x -o- /data/backup/unknown.rar /data/restore/quarantine/unrar l的输出重点看文件名是否带../或绝对路径;隔离目录用来接住解压结果,确认没问题再往业务目录移动。-o-防止隔离目录里已有文件被覆盖,保留现场。
4.3 分卷解压和密码输入
分卷解压从part1开始,不要从中间卷开始。工具会顺着卷链找后续卷,中间缺一卷就会报错。密码输入同理:加密包在列表、测试、解压时都可能要密码,-p不带值会提示输入;脚本里用环境变量加标准输入,别把密码写进命令参数。
# 从第一个卷开始解压,保留目录结构 unrar x -o- /data/backup/project.part1.rar /data/restore/project/ # 加密包:密码从标准输入读,避免明文进历史 printf '%s\n' "$RAR_PASS" | unrar x -p -o- /data/backup/secret.rar /data/restore/secret/part1.rar是入口;-o-不覆盖;-p读标准输入。分卷包不要改卷名,part1、part2的顺序和命名是卷链的一部分。密码含$、!、空格时,交互输入最稳;脚本里用单引号包环境变量赋值,再用printf送入标准输入。
4.4 校验、时间戳和权限
解压后别只看“命令没报错”。先unrar t测包,再抽查解压结果的时间戳、权限和文件数量。跨文件系统复制会受umask影响,权限不一定和源端一致;时间戳也可能因为挂载参数变化。交付验收时用find抽几个文件看属性,比肉眼翻目录可靠。
# 解压前测试,解压后抽查属性 unrar t /data/backup/project.part1.rar mkdir -p /data/restore/project unrar x -o- /data/backup/project.part1.rar /data/restore/project/ find /data/restore/project -maxdepth 2 -type f -printf '%TY-%Tm-%Td %TH:%TM %m %p\n' | sed -n '1,10p'unrar t只测试不落盘;x解压;find -printf输出时间、权限和路径。权限异常先看umask和目标文件系统挂载参数,不要一上来改压缩包。时间戳抽查重点看关键配置文件、脚本和可执行文件,别只看目录。
5. 避坑与排查:五个 RAR 交付现场的高频翻车点
5.1 排查基线:先固定三件事
遇到 RAR 相关问题,我先把三件事固定下来:命令实际走的是哪个二进制、动态库缺不缺、包本身能不能通过测试。顺序不要乱,否则容易在“版本不对”和“包坏了”之间来回猜。下面这段是排查基线,适合贴到故障记录里。
# 固定二进制来源、依赖和包完整性,再谈其他 readlink -f "$(command -v rar)" 2>/dev/null || true ldd "$(command -v rar)" 2>/dev/null | grep 'not found' || true rar t /data/backup/project.part1.rarreadlink -f追软链终点;ldd找缺失动态库;rar t判断包是否完整。三步都过,再去看路径、权限、密码和分卷命名。三步里任意一步异常,先解决那一层,别直接重装。
5.2 五个高频翻车点
1. 现象:执行rar报动态库缺失或 GLIBC 版本不够。
原因:这个包是预编译二进制,依赖宿主机的 glibc、libstdc++ 等运行库;老镜像、精简容器、 musl 环境里经常缺。解决:先用ldd /opt/rar-6.1.b1/rar看缺哪个库,再决定换同代基础镜像还是换运行环境。不要从别的机器硬拷.so进来,版本错配会把问题藏得更深。容器里优先选和二进制构建环境接近的 glibc 镜像,验证rar -?能正常输出再继续。
2. 现象:明明装了新版本,rar还是旧行为,unrar版本也对不上。
原因:PATH 里/usr/bin/unrar排在/usr/local/bin前面,或者旧软链没更新;交互 shell 的 alias 也会干扰判断。解决:type -a rar unrar看顺序,readlink -f "$(command -v unrar)"看终点,脚本里改用绝对路径。需要短命令时再用ln -sfn更新/usr/local/bin下的软链,更新完重新开 shell 或hash -r清缓存。
3. 现象:分卷解压报“无法打开 part2”或测试到一半失败。
原因:卷名被改过、传输丢卷、只传了部分卷,或者从part2开始解压。解决:按ls -1 project.part*.rar排序核对卷数,收件方先对哈希清单,再unrar t project.part1.rar从第一个卷测。卷名和顺序是卷链的一部分,不要为了“看起来整齐”重命名。缺卷时不要反复解压,先补齐文件。
4. 现象:密码明明是对的,命令却提示密码错或直接失败。
原因:密码含$、!、空格,被 shell 展开;-pPASSWORD写法把密码带进历史;-hp加密文件头后列表也需要密码,误判成包坏。解决:交互输入最稳,脚本里用环境变量加printf '%s\n' "$RAR_PASS" | unrar x -p ...,密码值用单引号赋值。先unrar l确认是否需要密码,再解压;不要用明文密码参数反复试。
5. 现象:beta 版压出的包在旧工具上打不开,或生产任务偶发失败。
原因:6.1.b1 是 beta 版,格式细节和参数行为可能随构建变化;旧版解压工具不一定认识新特性。解决:生产环境先保留稳定版回退,beta 版只做验证;压缩后强制rar t,跨端交付附上工具版本要求;关键数据同时留一份通用格式。不要把唯一备份押在 beta 版上,这是血泪经验里最贵的一条。
6. 进阶技巧:把压缩、校验和清单写成一条脚本
手工敲命令迟早会漏。我现在的做法是把“压到临时目录、逐卷测试、生成哈希、原子落盘”写成一个小脚本,失败时不污染输出目录。下面这段适合目录交付,分卷大小和恢复记录按需改。
#!/usr/bin/env bash set -euo pipefail src=${1:?usage: pack.sh <dir> <out_dir>} out_dir=${2:?usage: pack.sh <dir> <out_dir>} parent=$(dirname "$src") base=$(basename "$src") work=$(mktemp -d) trap 'rm -rf "$work"' EXIT # 1) 先压到临时目录,失败不留半成品 ( cd "$parent" && rar a -r -m5 -md128m -s -rr3% -v2g "$work/$base.rar" "$base" ) # 2) 逐卷测试,再生成校验清单 for f in "$work"/*.rar; do rar t "$f" >/dev/null; done ( cd "$work" && sha256sum ./*.rar > SHA256SUMS ) # 3) 原子落盘 mkdir -p "$out_dir" mv "$work"/* "$out_dir"/set -euo pipefail让脚本遇错即停;mktemp -d加trap保证临时目录清理;cd "$parent"再压$base,避免压缩包内出现绝对路径;-rr3%加恢复记录,-v2g分卷;rar t逐卷测试;sha256sum生成清单;最后mv到输出目录。参数表里重点看-v和-rr,这两个直接决定交付形态。
| 变量/参数 | 作用 | 调整建议 |
|---|---|---|
$1 | 源目录 | 用绝对路径或稳定相对路径 |
$2 | 输出目录 | 不要和源目录相同 |
-v2g | 2GB 分卷 | 按介质和传输限制改 |
-rr3% | 3% 恢复记录 | 介质差就加,别当备份 |
SHA256SUMS | 卷校验清单 | 和卷一起交付 |
我踩过的坑是脚本里直接rar a "$out.rar" "$src",结果压缩包内带了一长串绝对路径,收件方解压后目录深得没法用。从那以后我每次打包都强制cd到父目录再压相对名,并且先跑rar t再交付;没有校验清单的包,后面排查就像开盲盒。希望帮到你。
本文还有配套的精品资源,点击获取