先日、ラズパイでNASにしているHDDのパーティションテーブルを、誤って削除してしまいました。
破壊した原因は、HDDをもう1本追加したので、partedというツールでHDDを初期化しようとしていたところ、誤って削除したようだ。
二重化していたにもかかわらず、partedのおせっかい(?)で、両方のパーティションテーブルを破壊したようだ・・・

重要な情報や動画データ等を保存していたため、なんとしても復旧したかったので、その過程を記録します。

ちなみに環境は、Raspberry Pi 2Bです。
NASとして使用しているので、NTFSフォーマットになっています。
Windowsのディスクも、もしかしたらこの方法で復旧できるかもしれません。

それでは。実行していきます。

1.testdiskを導入


Linuxでパーティションを復旧するためのツールとして、testdiskというものがあるようです。
何はともあれ、インストール。
apt install testdisk

2.実行してみる


1.実行
インストールできたら、実行する。
コマンドは、testdisk と打つだけ。
# testdisk

起動すると、対話型で以下のようになる。
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org


TestDisk is free data recovery software designed to help recover lost
partitions and/or make non-booting disks bootable again when these symptoms
are caused by faulty software, certain types of viruses or human error.
It can also be used to repair some filesystem errors.

Information gathered during TestDisk use can be recorded for later
review. If you choose to create the text file, testdisk.log , it
will contain TestDisk options, technical information and various
outputs; including any folder/file names TestDisk was used to find and
list onscreen.

Use arrow keys to select, then press Enter key:
>[ Create ] Create a new log file
 [ Append ] Append information to log file
 [ No Log ] Don't record anything

ログを作るかどうか聞かれている。
作成するか、既存のファイルに追記するか、作らないかの選択。
とりあえず作っておきたいので、[ Create ]を選択。

2.ディスク選択
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org

  TestDisk is free software, and
comes with ABSOLUTELY NO WARRANTY.

Select a media (use Arrow keys, then press Enter):
>Disk /dev/sda - 6001 GB / 5589 GiB - JMicron Generic DISK00
 Disk /dev/sdb - 6001 GB / 5589 GiB - JMicron Generic DISK01
 Disk /dev/mmcblk0 - 7969 MB / 7600 MiB







>[Proceed ]  [  Quit  ]

Note: Disk capacity must be correctly detected for a successful recovery.
If a disk listed above has incorrect size, check HD jumper settings, BIOS
detection, and install the latest OS patches and disk drivers.

ディスクを選んで、[Proceed ](続行) を選択。

3.パーティション種類を選択
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org


Disk /dev/sda - 6001 GB / 5589 GiB - JMicron Generic DISK00

Please select the partition table type, press Enter when done.
 [Intel  ] Intel/PC partition
>[EFI GPT] EFI GPT partition map (Mac i386, some x86_64...)
 [Humax  ] Humax partition table
 [Mac    ] Apple partition map
 [None   ] Non partitioned media
 [Sun    ] Sun Solaris partition
 [XBox   ] XBox partition
 [Return ] Return to disk selection



Hint: Intel partition table type has been detected.
Note: Do NOT select 'None' for media with only a single partition. It's very
rare for a disk to be 'Non-partitioned'.

パーティションは、NTFSです。
今回は6TBのHDDなので、パーティションテーブルは、GPTになっているはず。なので[EFI GPT]を選択。
2TB以下のHDDの場合は、MBRの可能性があるが、その場合は何を選ぶべきか悩む・・・

4.パーティションの探索
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org


Disk /dev/sda - 6001 GB / 5589 GiB - JMicron Generic DISK00
     CHS 729601 255 63 - sector size=512

>[ Analyse  ] Analyse current partition structure and search for lost partitions
 [ Advanced ] Filesystem Utils
 [ Geometry ] Change disk geometry
 [ Options  ] Modify options
 [ Quit     ] Return to disk selection







Note: Correct disk geometry is required for a successful recovery. 'Analyse'
process may give some warnings if it thinks the logical geometry is mismatched.

リカバリするには、[ Analyse  ]でいい。
いろいろオプションがあるようだが、よくわからないので、そのままAnalyseする。

TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org

Disk /dev/sda - 6001 GB / 5589 GiB - CHS 729601 255 63
Current partition structure:
     Partition                  Start        End    Size in sectors

Bad GPT partition, invalid signature.
Trying alternate GPT
Bad GPT partition, invalid signature.










                P=Primary  D=Deleted
>[Quick Search]
                            Try to locate partition

すると上記のような画面になる。
今までに見つかったパーティションを表示する画面だろうか?
そのままQuick Search を選択。っていうか他に選択肢が無い。

TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org

Disk /dev/sda - 6001 GB / 5589 GiB - CHS 729601 255 63
Analyse cylinder     2/729600: 00%


  MS Data                    32768 11721041919 11721009152













  Stop

上記のように、パーティションの調査が始まる。


TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org

Disk /dev/sda - 6001 GB / 5589 GiB - CHS 729601 255 63
     Partition               Start        End    Size in sectors
>P MS Data                    32768 11721041919 11721009152











Structure: Ok.  Use Up/Down Arrow keys to select partition.
Use Left/Right Arrow keys to CHANGE partition characteristics:
                P=Primary  D=Deleted
Keys A: add partition, L: load backup, T: change type, P: list files,
     Enter: to continue
NTFS, blocksize=4096, 6001 GB / 5589 GiB

しばらく待つと、上記のような画面になる。
パーティションを探索できた。Pキーで、内容を確認できる。
今回はこれで内容が確認できたので、このまま復旧する。Enterで継続。

ちなみに横キーで、パーティションを削除することも可能。
複数パーティションがあって、不要なパーティションは削除を選択するといい。

TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org

Disk /dev/sda - 6001 GB / 5589 GiB - CHS 729601 255 63

     Partition                  Start        End    Size in sectors

 1 P MS Data                    32768 11721041919 11721009152













 [  Quit  ]  [Deeper Search] >[ Write  ]
                       Write partition structure to disk

これでパーティション一覧に追加された。
今回はこのパーティションだけなので、このまま[ Write  ]を選択する。
他にもパーティションがある場合は、Deeper Search で更にパーティションを探す。

なお、当然のことながら、Writeを選択すると、もう後戻りはできない。
よく確認してから実行すること。

5.パーティションテーブルの書き込み
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org

Write partition table, confirm ? (Y/N)

Write選択後、パーティションテーブル書くけどいい?と、最後通告が出る。
本当に問題がなければ、Yを選択して書き込む。

TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org


	You will have to reboot for the change to take effect.
	
	
	
	
	
	
	
	
	
	
	
	
	>[Ok]

書き込めたようだ。
リブートが必要とのことなので、後ほどリブートする。
とりあえず[Ok]を選択する。

6.再起動

TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org


Disk /dev/sda - 6001 GB / 5589 GiB - JMicron Generic DISK00
     CHS 729601 255 63 - sector size=512

 [ Analyse  ] Analyse current partition structure and search for lost partitions
 [ Advanced ] Filesystem Utils
 [ Geometry ] Change disk geometry
 [ Options  ] Modify options
>[ Quit     ] Return to disk selection	






Note: Correct disk geometry is required for a successful recovery. 'Analyse'
process may give some warnings if it thinks the logical geometry is mismatched.

最初の画面に戻ってきた。
testdiskは終了してrebootするので、[ Quit     ]を選択。

その後、祈りつつreboot。
# reboot

これで無事復旧できました!!


所感


今回は本気で重要なデータを失ったかと、ものすごく焦りました。
一瞬諦めてフォーマットしようかとも思いましたが、落ち着いて調べていくと、ちゃんと復旧方法があり、無事に復旧することができました。

誤ってパーティションを消してしまったかと思っても、落ち着いて対処しましょう。