bzip2命令中断/取消时是否生成输出文件?远程压缩超时疑问
关于bzip2中断时输出文件的疑问解答
我来给你理清楚bzip2在这类中断场景下的行为——是的,bzip2在被中断、取消或未完全执行时,确实会生成并保留已写入的输出文件,不过这个文件是不完整的,无法正常解压使用。
下面具体说说细节和判断方法:
bzip2的实时写入机制:bzip2不是等整个文件压缩完才一次性生成输出文件的,它是边压缩边往
myfile.xml.bz2里写数据。从你执行bzip2 myfile.xml的瞬间,它就会创建这个输出文件,然后逐步把压缩后的内容写入。一旦中途因为SSH超时、进程被终止等原因中断,它会立刻停止写入,但已经写入的部分会保留在文件里,不会自动删除。怎么判断压缩是否真的完成:
- 检查原文件是否存在:默认情况下,bzip2成功完成压缩后,会自动删除原始的
myfile.xml。如果原文件还在,大概率压缩没完成;要是原文件已经消失,基本可以确定压缩成功了(除非中途出极端错误刚好删掉原文件,这种情况非常少见)。 - 用命令验证文件完整性:直接执行
bzip2 -t myfile.xml.bz2,这个命令会检查压缩文件的完整性。如果没有任何报错输出,说明文件是完整可用的;如果出现类似invalid compressed data--format violated的错误,就说明这个文件是中断后的不完整产物。 - 通过文件大小估算:XML文件用bzip2压缩的比例一般在1:5到1:10之间(取决于文件里重复内容的多少),90GB的原始文件,完整压缩后大概在9GB到18GB左右。如果你的
myfile.xml.bz2大小远低于这个范围,那肯定是没完成的。
- 检查原文件是否存在:默认情况下,bzip2成功完成压缩后,会自动删除原始的
中断后的处理建议:如果验证后发现文件不完整,直接删掉这个无效的
myfile.xml.bz2,重新执行压缩命令就行(前提是原文件还在)。为了避免再次因为SSH超时中断,建议用后台执行的方式,比如:nohup bzip2 myfile.xml &或者用
screen/tmux这类终端复用工具,这样即使SSH断开,压缩进程还会在远程机器上继续运行。
内容的提问来源于stack exchange,提问作者P-S
相关产品推荐
相关产品推荐

