脚本怎样分卷压缩超大体积文件

wen 实用脚本 30

本文目录导读:

脚本怎样分卷压缩超大体积文件

  1. 方法一:使用 7-Zip(推荐,跨平台且效率最高)
  2. 方法二:使用 WinRAR(Windows 环境经典方案)
  3. 方法三:使用内置的 zip 命令(Linux/Mac 原生)
  4. 方法四:使用 tar + split(Linux/Mac 纯系统命令)
  5. 解压分卷压缩包的方法
  6. 关键注意事项
  7. 总结:哪种最适合你的场景?

分卷压缩超大文件(例如超过 100GB 的单个文件),核心在于限制单个分卷的大小,并将文件切割成多个连续的压缩包(如 .zip.001, .zip.002.rar.part1)。

以下是针对 WindowsLinux/Mac 主流方法的详细脚本和命令。

使用 7-Zip(推荐,跨平台且效率最高)

7-Zip 是处理大文件的首选工具,因为它支持 LZMA2 算法且能很好地利用多核 CPU,以下脚本使用 7z 命令行。

Windows(批处理 .bat 或 PowerShell)

假设你要压缩 大型视频文件.mp4,希望每个分卷不超过 2GB

批处理脚本 (compress.bat):

@echo off
REM 请将 7z.exe 的路径加入环境变量,或者使用完整路径
SET "FILE_PATH=C:\Users\你的用户名\Videos\大型视频文件.mp4"
SET "OUTPUT_DIR=C:\Users\你的用户名\Videos\分卷压缩包"
SET "VOLUME_SIZE=2000M" 
REM 创建输出文件夹(如果不存在)
if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"
REM 执行分卷压缩
REM -v2000M 表示每个分卷 2000 MB(约 2GB)
REM -mx=5 表示压缩率(0=仅存储,9=极致压缩),对于超大文件,建议用 1 或 0 来节省时间
7z a -t7z -mx=1 -v%VOLUME_SIZE% "%OUTPUT_DIR%\大型视频文件.7z" "%FILE_PATH%"
echo 分卷压缩完成!文件位于 %OUTPUT_DIR%
pause

参数解释:

  • -t7z:指定压缩格式为 7z(比 zip 体积小)。
  • -mx=1:使用最快压缩模式(处理百 GB 级别速度优先)。
  • -v2000M:分卷大小,支持 M(兆)、G(吉)、K(千)。

Linux / macOS(Shell 脚本)

#!/bin/bash
# compress.sh
INPUT_FILE="/home/user/big_data.iso"
OUTPUT_DIR="/home/user/archives"
VOL_SIZE="2G"  # 每个分卷 2GB
# 创建输出目录
mkdir -p "$OUTPUT_DIR"
# 执行 7z 分卷压缩
7z a -t7z -mx=1 -v${VOL_SIZE} "${OUTPUT_DIR}/big_data.7z" "${INPUT_FILE}"
echo "压缩完成,分卷位于:$OUTPUT_DIR"

使用方式:

chmod +x compress.sh
./compress.sh

使用 WinRAR(Windows 环境经典方案)

如果你的环境默认安装了 WinRAR,可以使用 CLI 的 rar.exe

批处理脚本 (compress_rar.bat):

@echo off
set "RAR_PATH=C:\Program Files\WinRAR\Rar.exe"
set "INPUT=C:\Data\large_database.dump"
set "OUTPUT=C:\Data\RarParts\large_db.rar"
set "PART_SIZE=1000M"  REM 每个分卷 1GB,支持 M、G、K
"%RAR_PATH%" a -v%PART_SIZE% -m0 -ep1 "%OUTPUT%" "%INPUT%"
REM -m0 表示仅存储(不压缩,适合已经压缩过的文件或需要极快速度);改为 -m3 为标准压缩
pause
  • 注意-v1000M 表示每个卷 1000M,WinRAR 会自动生成 large_db.part1.rar, large_db.part2.rar 等。
  • -ep1:从路径中排除基名(确保压缩包内不包含完整路径)。

使用内置的 zip 命令(Linux/Mac 原生)

如果你不想安装 7-Zip,可以使用 zip 命令的 -s 选项。但是zip 对于单文件超大(> 4GB)且需要高效压缩的情况不太理想,主要适合快速打包。

Shell 脚本:

#!/bin/bash
INPUT="/data/video.mp4"
OUTPUT_PREFIX="/data/archive.zip"
SPLIT_SIZE="2G"  # 或写成 2000m
# -s 指定分卷大小,-0 表示仅存储(最快)
zip -s ${SPLIT_SIZE} -0 ${OUTPUT_PREFIX} ${INPUT}
# 会生成 archive.z01, archive.z02, ..., archive.zip

注意zip 分卷在 unzip 解压时要求所有分卷在同一目录下。


使用 tar + split(Linux/Mac 纯系统命令)

这种方法先打包再切割,完全不需要额外工具,适合远距离传输前做简单分块。

脚本示例:

#!/bin/bash
INPUT_FILE="megafile.bin"
OUTPUT_DIR="/backup"
SPLIT_SIZE="1G"  # 每个文件 1GB
# 1. 先用 tar 打包(也可以不压缩,如果不想压缩则去掉 -z)
tar -czf - "${INPUT_FILE}" | split -b ${SPLIT_SIZE} - "${OUTPUT_DIR}/megafile.tar.gz.part-"
# 生成的文件:megafile.tar.gz.part-aa, megafile.tar.gz.part-ab, ...

合并与解压命令:

# 合并
cat ${OUTPUT_DIR}/megafile.tar.gz.part-* > megafile.tar.gz
# 解压
tar -xzf megafile.tar.gz

优点: 纯系统自带,无需安装。
缺点: 分卷不包含索引信息,合并时顺序必须正确(按文件名排序 part-aa, ab, ac)。


解压分卷压缩包的方法

无论哪种工具,解压分卷时必须把所有分卷文件放在同一个目录,然后执行:

  • 7z7z x 大型视频文件.7z.001 -o目标文件夹
  • WinRAR:双击 part1.rar,或在终端 unrar x 文件.part1.rar
  • ZIPunzip 文件.zip(自动识别分卷,或者用 7z x
  • Tar + split:先 cat 合并再解压(见上文)

关键注意事项

  1. 压缩率与时间取舍:大文件(如视频、数据库)往往已经是压缩过的,建议使用 “仅存储/无压缩” 模式(-mx=0-m0),节省时间且体积几乎不变。
  2. 分卷大小选择:常见有 2000M(2G)、1000M(1G)或 4096M(4G,适合 FAT32 文件系统)。
  3. 文件格式兼容性:如果对方是 Windows 用户,推荐使用 RAR(WinRAR 通用)或 7Z,如果跨平台,7Z 最稳妥。
  4. 命名完整性:传输时不要改名或漏掉任何一个分卷文件(如 .7z.001.z01),否则解压会失败。

哪种最适合你的场景?

场景 推荐方案 原因
你的机器上装有 7-Zip 7-Zip 脚本 速度快、压缩灵活、跨平台
需要发给普通 Windows 用户 WinRAR 脚本 .rar 格式在中国用户中最常见
服务器只有 Linux 核心命令 Tar + Split 无需安装任何东西,但合并较麻烦
超大型文件(数 TB) 7-Zip + 仅存储模式 避免内存溢出,分卷稳定

复制上面的脚本,修改文件路径和分卷大小,即可一键分卷压缩任意超大文件。

抱歉,评论功能暂时关闭!