split 分卷与合并
把大归档拆成定长的小文件,便于按介质容量拷贝、分片传输和断点续传;还原时按顺序合并即可。它的价值在介质受限的场景最明显:单文件必须小于 U 盘、光盘或某个上传接口的大小限制。代价是引入了顺序依赖,任何一卷缺失都会让合并结果无效,因此分卷必须配校验和。
基本信息
| 适用平台 | Linux/Unix(GNU coreutils 的 split) |
|---|---|
| 常用参数 | -b 分卷大小、-d 数字后缀、-a 后缀长度、-n 按数量均分 |
| 合并方式 | cat 按序拼接,或按后缀序号显式列出 |
| 校验 | 合并后用 sha256sum -c 验证完整归档 |
典型使用场景
- 离线介质拷贝:把归档拆成适合单张光盘或单个 U 盘的大小
- 上传接口限制:对象存储或接口有单文件大小上限时按块上传
- 分片传输:多链路并行搬运大文件,之后合并
- 邮件或工单附件限制:按大小分卷提交
- 长期保存:分卷后按卷编号与校验和记录清单,便于缺卷核查
分卷与还原
分卷与还原
tar -cf - /data | zstd -T0 -o full.tar.zst # 先做完整归档
split -b 2G -d -a 2 full.tar.zst full.part- # 每卷 2G,数字后缀 full.part-00
ls -lh full.part-* # 核对卷数与大小
sha256sum full.part-* > parts.sha256 # 逐卷记录校验和,缺卷可查出
sha256sum -c parts.sha256 # 合并前校验每一卷
cat full.part-* > restored.tar.zst # 按序合并
sha256sum restored.tar.zst > restored.sha256 && sha256sum -c restored.sha256参数与行为
| 参数 | 含义 | 注意 |
|---|---|---|
| -b | 每卷大小,支持 K/M/G | 单位按 1024 进制,注意与介质容量的差异 |
| -d | 数字后缀 | 排序稳定,避免字母序造成的顺序问题 |
| -a | 后缀长度 | 卷数超过 100 时需加长,否则会覆盖 |
| -n | 按数量均分 | 适合分给多人的场景 |
数字后缀能提供稳定的合并顺序,优于字母后缀在脚本中的通配展开。归档清单要把卷数、每卷校验和与总校验和一起留档,缺一卷时能立刻定位。
合并前先确认磁盘剩余空间:合并出的完整归档与各分卷会同时占用空间,容量不足会在拼接中途失败,留下一个看起来正常但实际截断的文件。