大文件夹压缩中断及tar归档Unexpected EOF问题求助
解决大文件夹压缩中断及EOF错误的方案
方案1:修正tar+pigz的管道命令(避免双重压缩)
你之前的命令里tar -czvf -已启用gzip压缩(-z参数),再管道给pigz会导致双重压缩,这大概率是引发EOF错误的核心原因。同时调整find的路径输出逻辑,确保tar能正确解析长路径:
# 生成带绝对路径的文件列表,规避长路径识别问题 find "$PWD" -type f -not -path "*/fastq*/*" > mytar.list # 移除tar的-z参数,由pigz单独负责压缩,保留多线程配置 tar -cvf - -T mytar.list | pigz -p 32 > ../myobject.tar.gz
如果需要低压缩率(对应原命令的-0),修改为:
tar -cvf - -T mytar.list | pigz -0 -p 32 > ../myobject.tar.gz
方案2:结合分块压缩+长路径处理
若分块需求必须保留,同时解决路径问题,使用以下命令:
# 生成绝对路径文件列表 find "$PWD" -type f -not -path "*/fastq*/*" > mytar.list # 打包后压缩,再分块为20GB每段 tar -cvf - -T mytar.list | pigz -p 32 | split --bytes=20G - ../myobject.tar.gz.part-
合并分块文件时执行:
cat ../myobject.tar.gz.part-* > ../myobject.tar.gz
方案3:用7-Zip处理长路径(推荐)
7-Zip对超长文件路径的原生支持优于tar,同时自带分块、多线程压缩功能,操作更简洁:
# 压缩为20GB分块的7z文件,排除fastq目录,启用32线程无压缩 7z a -v20g -mx0 -mmt32 ../myobject.7z ./210723_VH00461_53_AAAGV5KHV/ -xr!*fastq*
参数说明:
-v20g:分块大小设为20GB-mx0:无压缩模式,若需要压缩可改为-mx5(中等压缩)等-mmt32:启用32线程加速-xr!*fastq*:排除所有包含fastq的路径
解压时直接运行:
7z x ../myobject.7z
方案4:排查隐性中断原因
进程无提示停止还可能由基础问题导致,建议先排查:
- 检查目标磁盘剩余空间:
df -h ../,确保有足够空间容纳压缩产物 - 验证文件读取权限:
ls -l 210723_VH00461_53_AAAGV5KHV/,确认所有待压缩文件均可被当前用户读取 - 查看系统日志:
dmesg | tail -20或/var/log/syslog,排查是否存在磁盘IO错误、内存不足等终止进程的隐性问题
内容的提问来源于stack exchange,提问作者garcesj
相关产品推荐
相关产品推荐

