如何在linux控制台中修复截断的Tar文件


0

在运行Linux Ubuntu 16.04'的远程服务器上,我从一堆旧的.rar文件(~150G)执行tar文件时耗尽了空间,现在结束tar已“损坏”。那是tar tf我做的时候:

tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

我怎样才能修复这个损坏的焦油?

我试过:

  • 从tar(tar --delete -f mycorruptedtar.tar offendingfile.ext)中删除截断的文件
  • 通过提取未损坏的文件并通过执行将它们添加到新tar来修复它

#!/bin/bash

for file in $(tar -tf mycorruptedtar.tar);
do
        if [ ! "$file" == "offendingfile.ext" ]
        then
                tar xf mycorruptedtar.tar $file
                tar rf newtar.tar $file --remove-files
                tar --delete -f mycorruptedtar.tar $file
        fi
done
  • 我也尝试使用十六进制编辑器删除文件的最后一部分,我认为这是问题所在,但我因为我不知道究竟是怎么修复什么来解决问题而且我不想让事情恶化。

有任何想法吗?


什么是真正的问题?当你得到Unexpected EOF in archivetar已经解压缩它可能(所有完整的文件,甚至截断文件的位)。因此,与ZIP不同,截断的tar可用。
xenoid

我想在添加剩余的文件之前修复tar,我仍然需要添加到tar ...也许另一种选择就是用其他文件创建一个新的tar并保持这个'运行损坏的tar'...我也想知道如何修复文件,如果可能的话
2017年

从理论上讲,应该可以计算最后一个好文件末尾的位置,截断那里的TAR并附加归档结束标记。但是,恕我直言会尽可能地重新设计并重新考虑它将更容易,风险也更小。
xenoid

我同意你的建议。我只是想知道是否有一个自动化的工具/方法来帮助我修复文件任务,然后再设置一个有足够空间的新卷来进行“去焦油/重新定位”。
1917年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.