Tgr*_*Tgr 8 compression data-recovery
我正在尝试从崩溃的磁盘中恢复 (MySQL) 数据库。有许多最近的转储,它们是损坏的 bz2 文件。由于数据库不经常更改,转储应该几乎相同。bzip2recover从文件中恢复了大约 70-80% 的块,因此通过查找文件中的重叠并将它们连接在一起,可以恢复大部分(如果不是全部)数据。例如:
dump1: |-----------------|xxxxxxxxxxxxxxxx|------------------|
dump2: |-------------|----------------|xxxxxxxxxxxxxxxxxxxxxx|
dump3: |xxxxxxxxxxxxxxxxxxxxxx|---------------|xxxxxxxxxxxxxx|
Run Code Online (Sandbox Code Playgroud)
在这里我可以检测到 dump1 中的第一个块是由 dump2 中的第二个块继续的,由 dump3 中的第二个块继续,在 dump1 中由第三个块继续。通过加入这四个文件,我已经恢复了数据。
问题是有数千个文件(我有 10 个转储,每个转储大约 400 个 1M 块)。是否有一种工具可以自动化这个过程,或者至少是它的一部分(比如检查一个文件结尾和另一个文件开头之间最长重叠的 linux 命令)?
我没有工具可以让您完全完成这项工作,但您可以使用以下工具:
cmp -l dump1 dump2
Run Code Online (Sandbox Code Playgroud)
这将为您提供不同字节及其偏移量的列表。重叠是指没有打印偏移的地方cmp。
此外,您可以使用dd命令复制部分转储并将其附加到另一个转储。
您可以尝试编写自己的使用此类工具的脚本,也可以编写一个小型 C 程序来比较这些文件并复制所需的部分。
我希望这些想法对您有所帮助。