Windows下合并.tar.gz.*分卷文件遇内存错误,求高效方法
解决Windows下分卷tar.gz合并解压的高效方案
直接通过cat管道解压大分卷文件时,容易因一次性加载所有数据到内存导致溢出,且效率低下。以下是两种更稳妥高效的处理方式:
方式一:先合并分卷,再单独解压(推荐,适配CMD/PowerShell/Git Bash)
1. 合并分卷文件
使用系统原生的二进制复制命令,避免内存占用过高:
- CMD环境:
copy /b tvqa_video_frames_fps3_hq.tar.gz.* tvqa_video_frames_fps3_hq.tar.gz/b参数表示以二进制模式合并,防止文本模式下的格式错误。 - PowerShell环境:
Get-Content tvqa_video_frames_fps3_hq.tar.gz.* -Encoding Byte | Set-Content tvqa_video_frames_fps3_hq.tar.gz -Encoding Byte
2. 解压合并后的完整文件
用tar命令解压到目标目录:
tar xzf tvqa_video_frames_fps3_hq.tar.gz -C path/of/compreced/data
如果你的tar支持多线程(比如Git Bash中的tar或安装了pigz),可以用多线程加速解压:
tar --use-compress-program=pigz -xf tvqa_video_frames_fps3_hq.tar.gz -C path/of/compreced/data
方式二:流式处理优化(适合Git Bash/WSL,避免生成中间文件)
如果你不想生成完整的tar.gz中间文件,可以调整管道命令,让tar流式处理时更高效,避免内存过载:
cat tvqa_video_frames_fps3_hq.tar.gz.* | tar --use-compress-program=pigz -xf - -C path/of/compreced/data
这里用pigz替代默认的gzip实现多线程解压,降低单线程解压的耗时和内存压力(Git Bash可通过pacman -S pigz安装pigz)。
注意事项
- 确保所有分卷文件在同一目录下,且文件名排序正确(aa到bi的顺序),系统通配符会自动按字母顺序匹配。
- 合并过程中不要中断,否则会生成损坏的文件。
内容的提问来源于stack exchange,提问作者LAILA EL OUEDEGHYRY
相关产品推荐
相关产品推荐

