我目前正在迁移到一台新服务器,并且在 Dropbox 中有一个使用 Plesk Dropbox Backup 扩展制作的 Plesk 备份文件,.tar 文件大小约为 55GB。
我已将其下载到服务器的 /var/lib/psa/dumps 文件夹中。
问题是我尝试使用 tar xvf 提取 tar 文件,但收到以下错误:
tar:存档中出现意外的 EOF tar:错误无法恢复:立即退出
经过广泛搜索后,我尝试运行 bzip2recover 并收到以下错误:
抱歉,我找不到任何块边界。
我遇到的问题是我无法再访问备份所在的旧 Plesk 服务器,因此我必须能够访问此备份文件中的文件,此备份文件中大约有 100 个站点,但在出现错误之前只提取了大约 30 个站点。
有没有办法解决?
答案1
听起来你对问题有点误判了,因此你的问题很可能只是一厢情愿。你在提取 tar 存档时没有遇到问题。相反,你的问题在于你在第一种情况下如何生成它。
您可以采取一些步骤来确认数据确实丢失了。
错误消息表明您的存档已被截断。如果存档被截断,tar 将提取所有可以提取的文件,并尽可能多地提取最后一个文件。因此,您需要仔细查看 tar 提取的最后一个文件。如果该文件的名称有效,并且文件内容正确(提取的文件被截断除外),则您已确认存档确实已被截断。您可以将最后一个文件的最后几个块与存档的最后几个块进行比较,以进一步验证这一事实。但请注意,如果您的存档在块的中间被截断,则该部分块将不会包含在最后提取的文件中。
此外,将解压后的目录大小与存档大小进行比较。由于您没有对 tar 存档使用任何压缩,因此大小预计会相似。由于 tar 的开销略小于大多数文件系统,因此解压后的目录的总大小实际上预计会略大于原始 tar 文件。为了更准确地比较大小,您可以从解压后的目录中创建一个新的 tar 存档,然后比较两个 tar 文件的大小。
如果提取的目录确实具有与 tar 存档相同的大小,那么您可以几乎可以预期所有可恢复的内容都在该目录中。
您仍然可以询问是否有可能错过了一些选项。 有一种可能性非常小,即档案中的文件头在某个地方被损坏,导致 tar 认为文件比实际大,纯属巧合,之后它仍然找到了有效的文件头。
这种情况极不可能发生,但如果确实发生了,那么在解压的目录中,你应该能够找到一个比它应该更大的文件。如果你发现解压的文件比预期的大几 GB,你可能会幸运地发现一些其中缺失的数据。
但是,几乎可以肯定您的存档已被截断,并且任何元数据被破坏的可能性都很小,以至于 tar 仍可以读取存档并发现它已被截断。因此,我们或多或少可以得出结论,您丢失的任何数据都是由于存档被截断造成的。
在这种情况下,结论是,在您想要备份的 100 个站点中,您实际上只备份了 30 个。并且您没有最后 70 个站点的备份。
因此,我们可以重新表述该问题如下:
我需要恢复 70 个网站,但我没有备份。
有没有办法解决?
如果这样说的话,答案显然是:不。
那么你现在能做什么呢?你必须回去找到有原始数据的机器。因为那是这些数据存在的唯一地方。
除此之外,你最后的选择就是发明一台时光机,在为时已晚之前回到过去并测试你的恢复。恐怕这比恢复你没有备份的数据稍微可行一些。
答案2
如果使用 tar tvf [Filename] ,是否会列出档案内的文件?
如果您的服务器比较旧,那么 tar 文件的格式可能与新服务器使用的格式不同。使用 tar 手册页的存档格式选择中的选项 --posix 或其他选项可能会有所帮助。