split按字节切分大文件最稳妥,不压缩不解压;应先tar+gzip管道流式输出再split,避免双倍磁盘空间;合并须按字母序cat bigfile_part_{aa..az},并用sha256sum校验完整性。
split 命令怎么按大小切分大文件
直接用
最稳妥,它不依赖压缩逻辑,只做纯字节切割,适合后续手动分发或配合
分卷打包。关键不是“压缩分卷”,而是“先打包再切分”——
本身不压缩,也不解压。
按 100MB 切:
(注意后缀下划线不能省,否则生成无后缀文件)
支持
/
/
单位,但别写成
(会报错),必须是
默认每块 1000 行,不加
容易误切文本文件,导致二进制文件损坏
切出来的文件名是
、
… 按字母序排列,不是数字序,合并时得靠 shell 展开:
tar + gzip 分卷压缩的正确链式写法
想一步到位“压缩并分卷”,得把
的输出管道给
,不能先
再切——那样要双倍磁盘空间。管道流式处理才是关键。
安全写法:
末尾的
表示从 stdin 读,
是前缀,切出来是
、
别漏掉
的
,否则
会试图写文件,中断管道
如果目录含中文或特殊字符,加
和
避免 tar 报 warning(不影响切割,但可能干扰后续解压)
合并后解压失败?检查这三处硬伤
常见报错像
或
,基本不是命令写错,而是合并或传输环节出了问题。
合并时用了
,但文件顺序错乱(比如 FTP 上传时重命名过),应改用
显式控制顺序
某一块文件被截断(如网络中断传了一半),
看各块大小是否接近设定值,最后一块小是正常的,但中间块突然变小就可疑
Windows 下用记事本打开过某块文件再保存——会加 BOM 或换行符,破坏二进制完整性,切忌用图形界面编辑器碰任何
类文件
split 切出来的文件怎么验证完整性
没有内置校验,得自己加一层保障。别依赖文件大小一致,要用哈希比对原始流和合并后流。
压缩前先算原数据哈希:
分卷后合并再算一次:
,和
对得上才算真完整
如果只是临时分发,加
更快,但别用于安全场景;
是底线
不提供校验码生成功能,也别指望
,那玩意儿早废弃了,纯属历史包袱
真正麻烦的是跨平台传输后文件权限或换行符被静默修改,哪怕只差一个字节,gzip 就直接拒绝解压——这点容易被忽略,但修复成本最高。
splittarsplitsplit -b 100M bigfile.tar.gz bigfile_part_-bKMG100MB100M-bbigfile_part_aabigfile_part_abcat bigfile_part_* > bigfile.tar.gztarsplittar -czftar -cf - /path/to/dir | gzip -c | split -b 200M - archive.tgz.-archive.tgz.archive.tgz.aaarchive.tgz.abgzip -c-cgzip--format=posix-ogzip: stdin: not in gzip formattar: Unexpected EOFcat bigfile_part_* > outcat bigfile_part_{aa..az} > outls -l.aatar -cf - /path/to/dir | sha256sum > original.shacat archive.tgz.* | sha256sumoriginal.shamd5sumsha256sumsplittar --tape-length