ddrescueとtestdiskを使用して破損したハードディスクファイルシステムを修復する

ddrescueとtestdiskを使用して破損したハードディスクファイルシステムを修復する

ddrescue部分的に回復されたパーティションを処理した後、を使用して故障した外付けハードドライブを保存し、それを適用してtestdisk回復操作を完了するように指示されました。ドライブが2番目のドライブにほぼ完全に保存されているにもかかわらず(急に削除した後に特に面倒なクリック音でWindowsパーティションを挿入したため)、testdiskはまだ新しいドライブを「欠陥」と見なしているようです。具体的には、Quick Searchログに具体的に言及されている少数のフォルダとファイルのみが返されますBad Relative Sector。現在の可能性は次のように聞いたので、どのような追加措置を講じるべきか疑問に思います。

  1. ddrescue の試みを再度実行し、完全に完了するようにし、testdisk がファイルシステムを再生成することを願っています。
  2. 回復したドライブでPhotorecを使用してできるだけ多くのプロジェクトを実行できることを願っています。
  3. 他のツールを使用してデータを回復します。さらに、もう少し詳細な解決策を探してみました。https://forum.cgsecurity.org/phpBB3/viewtopic.php?t=12307しかも。

以下はddrescue操作から抜粋したログです(完全なログが大きすぎてここにあります)。https://pastebin.com/mCi0DgEi):

Rescue Logfile. Created by GNU ddrescue version 1.19
# Command line: ddrescue -f /dev/sdc /dev/sdb /home/marco/Desktop/log1.log

# Start time:   2023-03-28 23:06:35
# Current time: 2023-04-03 17:29:58
# Scraping failed blocks... (forwards)
# current_pos  current_status
0xC6DC9200     /
#      pos        size  status
0x00000000  0x586DF000  +
0x586DF000  0x0000D000  -
0x586EC000  0x67F48000  +
0xC0634000  0x00720000  -
0xC0D54000  0x00034000  +
0xC0D88000  0x00001000  -
0xC0D89000  0x00009000  +
0xC0D92000  0x00001000  -
0xC0D93000  0x0002B000  +
0xC0DBE000  0x00008000  -
0xC0DC6000  0x00001000  +
0xC0DC7000  0x00001000  -
0xC0DC8000  0x00ABC000  +
0xC1884000  0x00001000  -
0xC1885000  0x0000A000  +
0xC188F000  0x00001000  -
0xC1890000  0x002CA000  +
0xC1B5A000  0x00001000  -
0xC1B5B000  0x005FF000  +
0xC215A000  0x00001000  -
......................
0xAAC1E54200  0x00002C00  /
0xAAC1E56E00  0x00000200  -
0xAAC1E57000  0x003B1000  +
0xAAC2208000  0x00000200  -
0xAAC2208200  0x00000C00  /
0xAAC2208E00  0x00000200  -
0xAAC2209000  0x00317000  +
0xAAC2520000  0x00000200  -
0xAAC2520200  0x00000C00  /
0xAAC2520E00  0x00000200  -
0xAAC2521000  0x0001C000  +
0xAAC253D000  0x00000200  -
0xAAC253D200  0x00000C00  /
0xAAC253DE00  0x00000200  -
0xAAC253E000  0x00077000  +
0xAAC25B5000  0x00000200  -
0xAAC25B5200  0x00003C00  /
0xAAC25B8E00  0x00000200  -
0xAAC25B9000  0x0008F000  +
0xAAC2648000  0x00000200  -
0xAAC2648200  0x00000C00  /
0xAAC2648E00  0x00000200  -
0xAAC2649000  0x11CDF4CE000  +
0x1C7A1B17000  0x00000200  -
0x1C7A1B17200  0x00000C00  /
0x1C7A1B17E00  0x00000200  -
0x1C7A1B18000  0x00099000  +
0x1C7A1BB1000  0x00000200  -
0x1C7A1BB1200  0x00000C00  /
0x1C7A1BB1E00  0x00000200  -
0x1C7A1BB2000  0x2CD9ED000  +
0x1CA6F59F000  0x00000200  -
0x1CA6F59F200  0x00000C00  /
0x1CA6F59FE00  0x00000200  -
0x1CA6F5A0000  0x751B76000  +`

また、testdisk 出力の一部は次のとおりです。

` 2023年4月3日月曜日 22:54:40 コマンドライン: TestDisk /log /debug

TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <[email protected]>
http://www.cgsecurity.org
OS: Linux, kernel 4.15.0-142-generic (#146~16.04.1-Ubuntu SMP Tue Apr 13 09:27:15 UTC 2021) x86_64
Compiler: GCC 5.3
ext2fs lib: 1.42.13, ntfs lib: libntfs-3g, reiserfs lib: none, ewf lib: none, curses lib: ncurses 6.0
/dev/sda: LBA, HPA, LBA48, DCO support
/dev/sda: size       625142448 sectors
/dev/sda: user_max   625142448 sectors
/dev/sda: native_max 625142448 sectors
Warning: can't get size for Disk /dev/mapper/control - 0 B - 0 sectors, sector size=512
Hard disk list
Disk /dev/sda - 320 GB / 298 GiB - CHS 38913 255 63, sector size=512 - WDC WD3200BPVT-80JJ5T0, S/N:WD-WXU1EA1LJZPV, FW:01.01A01
Disk /dev/sdb - 2000 GB / 1863 GiB - CHS 243201 255 63, sector size=512 - TOSHIBA EXTERNAL_USB

Partition table type (auto): Intel
Disk /dev/sdb - 2000 GB / 1863 GiB - TOSHIBA EXTERNAL_USB
Partition table type: Intel

Analyse Disk /dev/sdb - 2000 GB / 1863 GiB - CHS 243201 255 63
Geometry from i386 MBR: head=255 sector=63
BAD_RS LBA=2048 63
NTFS at 0/32/33
Current partition structure:
 1 * HPFS - NTFS              0  32 33 243201  48 31 3907025072

Bad relative sector.
Record 5617 has wrong SeqNo (1 <> 2)

search_part()
Disk /dev/sdb - 2000 GB / 1863 GiB - CHS 243201 255 63
NTFS at 0/32/33
filesystem size           3907025072
sectors_per_cluster       8
mft_lcn                   786432
mftmirr_lcn               2
clusters_per_mft_record   -10
clusters_per_index_record 1
     HPFS - NTFS              0  32 33 243201  48 31 3907025072
     NTFS, blocksize=4096, 2000 GB / 1863 GiB

Results
   * HPFS - NTFS              0  32 33 243201  78 13 3907026944
     NTFS, blocksize=4096, 2000 GB / 1863 GiB

Hint for advanced users. dmsetup may be used if you prefer to avoid to rewrite the partition table for the moment:
echo "0 3907026944 linear /dev/sdb 2048" | dmsetup create test0
ntfs_device_testdisk_io_ioctl() unimplemented
NTFS Volume is dirty.


dir_partition inode=5
   * HPFS - NTFS              0  32 33 243201  78 13 3907026944
     NTFS, blocksize=4096, 2000 GB / 1863 GiB
ntfs_readdir failed for cluster 5: Input/output error
Directory /
       5 dr-xr-xr-x     0      0         0  3-Apr-2023 17:45 .
       5 dr-xr-xr-x     0      0         0  3-Apr-2023 17:45 ..
    4335 dr-xr-xr-x     0      0         0  7-Mar-2016 07:57 $RECYCLE.BIN
  530569 dr-xr-xr-x     0      0         0 29-Mar-2016 16:25 Folder1
  531255 dr-xr-xr-x     0      0         0 26-Feb-2016 16:00 Folder2
  524569 dr-xr-xr-x     0      0         0 26-Feb-2016 15:54 Folder3
 1064063 -r--r--r--     0      0      3538  4-Mar-2016 23:54 list.txt

interface_write()
 1 * HPFS - NTFS              0  32 33 243201  78 13 3907026944
ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 65535: Invalid argument
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 65535: Invalid argument
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 65535: Invalid argument
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 65535: Invalid argument
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 65535: Invalid argument
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 65535: Invalid argument
::: several similar lines :::
ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 65535: Invalid argument
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_attr_find: Corrupt inode (-1): Input/output error
ntfs_mst_post_read_fixup_warn: magic: 0x93d9b08c  size: 1024   usa_ofs: 59825  usa_count: 16722: Invalid argument
Using locale 'LC_CTYPE=en_US.UTF-8;LC_NUMERIC=it_IT.UTF-8;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=it_IT.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=it_IT.UTF-8;LC_NAME=it_IT.UTF-8;LC_ADDRESS=it_IT.UTF-8;LC_TELEPHONE=it_IT.UTF-8;LC_MEASUREMENT=it_IT.UTF-8;LC_IDENTIFICATION=it_IT.UTF-8'.`

これまで私がフォローしてきた手順をまとめると、次のようになります。https://archive.is/j66F9 本当にありがとうございます硬いトウモロコシ粉パン初期の質問にあまりにも忍耐を持ってくれてありがとう。

ベストアンサー1

ddrescue の試行を再度実行し、完全に完了したら、testdisk がファイルシステムを再生成することを願っています。

結果中間ログファイルがまだ残っている場合は、ddrescue回復プロセスを再開すると、中断された部分から続行されます。ただし、何らかの方法でターゲットイメージを変更した場合は続行する可能性が大幅に減るため、新しいイメージで再起動(新しいログファイルを使用)を検討する必要があります。

ddrescueターゲットがデバイスである必要はありません。十分に大きいパーティションのファイルは完全に許可されています。

おすすめ記事