データの復旧について

パピーリナックスを初めて使う方

モデレータ: 暇人, YoN, nyu

naree
記事: 10
登録日時: 15/07/04(土) 10:11

データの復旧について

投稿記事 by naree »

USB接続のHDD のデータ用の領域を誤って linux-swap に設定してしまいました。
GParted で確認しました。今はHDDを取り外しています。
元に戻すことは可能でしょうか?いくらかでも復旧できたらと思っています。

puppy、mint20 と windows10 が起動できます。
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: データの復旧について

投稿記事 by thinkpadnerd »

英語で書かれた記事しかありませんが...

ntfs や ext4 パーティションを誤って swap に設定してしまったケース
https://askubuntu.com/questions/98790/h ... -partition

ext4 パーティションの復元は、3つ目の回答に書かれています。

TestDisk というツールを使うようです。ubuntu や debian のレポジトリにあります。(debian/ubuntu 系の puppy なら、パッケージマネージャから入れられます。)

TestDisk マニュアル
https://www.cgsecurity.org/wiki/TestDisk_Step_By_Step
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: データの復旧について

投稿記事 by thinkpadnerd »

パーティションのタイプを swap に変更しただけなら、データは残っている可能性が高いです。実際に swap として使った場合は、データが上書きされて修復が難しくなると思います。

ファイルを個別に救出するのは最後の手段ということで、まずはパーティションテーブルの修復(復元)を試みたらどうでしょう。
TestDisk で "Analyse" を実行するのがポイントのように思われます。ファイルが残っていれば、ファイルのリストも確認することができるようです。(〜ようです、というのは実行したことがないもので...)

日本語の解説もありました。検索すれば、他にも解説記事が見つかると思います。また、TestDisk の Windows版もあるのですね。
TestDisk の使い方
https://pctrouble.net/software/testdisk.html

追記
Linux 版をインストールして操作してみました。
# testdisk
で起動。
途中で前の画面に戻る場合、たいていは [Quit] を選択すればいいのですが、[Quit] がない場合は q キーを押すと戻ります。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
naree
記事: 10
登録日時: 15/07/04(土) 10:11

Re: データの復旧について

投稿記事 by naree »

ありがとうございます。
MX Linuxをインストールしてデータのパーティーションだけが見えないので
分かったのですが、 swap を読み書きするほどの作業はしていないので、
復旧の可能性は期待できるかなと思い。慎重に作業しようと思います。
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: データの復旧について

投稿記事 by thinkpadnerd »

Analyse -> Quick Search と進んで、該当するパーティションを選択したうえで、p キーでファイルのリストを確認、t キーで(パーティション)タイプの変更ができると思います。(画面の下のほうに操作方法が表示されています。)

最後に [Write] を選択するまでは、変更は書き込まれません。

うまくいくことを祈ります。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
naree
記事: 10
登録日時: 15/07/04(土) 10:11

Re: データの復旧について

投稿記事 by naree »

現在 LxPupXenial を使っています。TestDisk をパッケージマネージャから
インストールできましたので、 [Write] は押さずにいろいろ確認中です。

つぎつぎと分からない用語が出てきますので、確認しながらあせらずに
作業するつもりです。ありがとうございます。
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: データの復旧について

投稿記事 by ルビー »

復旧したいデータの重要度にもよりますけど、いろいろやる前に、ddコマンドなりでディスクの現在の状態のままのバックアップを取っておいた方が良いと思います。

ディスク容量が多ければ、それなりの時間が掛かりますが、復旧に失敗した時の取り返しがつきます。
naree
記事: 10
登録日時: 15/07/04(土) 10:11

Re: データの復旧について

投稿記事 by naree »

別の使っていないHDDでテストしています。HDDの容量の関係でDDコマンドなどの
バックアップは残念ですができません。

なぜか testdisk の結果が GPerted で検証すると [write] しても反映されていません
なにか間違った操作なのかな?と、いろいろ試しています。
testdisk や fdisk では変更できている表示なのですが GPerted では NG です。逆に
GPerted の変更は testdisk や fdisk では反映されています。

なにか、必要な情報はありますか?

Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 33761279 33759232 16.1G 83 Linux
/dev/sdb2 33761280 312580095 278818816 133G 83 Linux

上記は swap を 解除し ファイルタイプも 82 -> 83 になっている fdisk -l の
結果ですが、GPerted では swap のままです。
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: データの復旧について

投稿記事 by thinkpadnerd »

naree さんが書きました: 20/09/16(水) 13:39 なぜか testdisk の結果が GPerted で検証すると [write] しても反映されていません
puppy のファイルマネージャでドライブ(パーティション)の中にあるファイルは見えますか?

GParted に反映されない件については、最初に紹介した英語の記事にそれらしいことが書かれています。
以下引用(機械翻訳ですが、どうにもおかしいところは修正しました)
NTFSパーティションのリカバリは、Albaの提案に従ってtestdiskを使用すると比較的簡単でした。 ext4をリカバリするには、さらにいくつかの手順が必要でした。testdiskを使用してリカバリした後、gpartedのlinux-mintライブブートドライブは、ホームパーティションをスワップと見なしました。 testdiskで私は次のことをしなければなりませんでした:ディスクとパーティションの種類を選択した後、詳細 (Advanced) に進み、ext4パーティションを選択し、下部の[タイプ]を選択し、タイプを「MSデータ」に変更してから「ext4」に変更します。 下部に[スーパーブロック]オプションがあります。 これにより、次のようなスーパーブロックの場所(私が推測するバックアップ)のリストが得られました。

-----
Partition Start End Size in sectors



MS Data 614402048 894853119 280451072 [Home]
superblock 0, blocksize=4096 [Home]
superblock 32768, blocksize=4096 [Home]
superblock 98304, blocksize=4096 [Home]
superblock 163840, blocksize=4096 [Home]
superblock 229376, blocksize=4096 [Home]
superblock 294912, blocksize=4096 [Home]
superblock 819200, blocksize=4096 [Home]
superblock 884736, blocksize=4096 [Home]
superblock 1605632, blocksize=4096 [Home]
superblock 2654208, blocksize=4096 [Home]

To repair the filesystem using alternate superblock, run
fsck.ext4 -p -b superblock -B blocksize device
-----

別のターミナルタブで実行しました

fsck.ext4 -p -b 32768 -B 4096 /dev/sda1

そして最後にgpartedはドライブをスワップではなく、ext4として認識しました。ドライブをマウントして、最終的にすべてのファイルを確認しました。
TestDisk で変更した結果が GParted に反映されない、とする記事は他にもどこかで見かけました。ちょっと GParted にクセがあるようです。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
naree
記事: 10
登録日時: 15/07/04(土) 10:11

Re: データの復旧について

投稿記事 by naree »

ひとりで騒がせています。ごめんなさい。こんなアホもいるということで
安心できるフレッシュメンバーもいるかなぁ。

昨夜は、頭が飽和状態だったので一晩眠って頭を冷やし、今朝、何とかテスト用の
HDDでデータをコピーした sdb1 を swap に変更して、その後、データの復旧に
成功しました。

まだ、自信はないので何度かテストしてから本番HDDに挑戦してみます。
naree
記事: 10
登録日時: 15/07/04(土) 10:11

Re: データの復旧について

投稿記事 by naree »

復旧できました。
thinkpadnerd さん、ルビー さんどうもありがとうございました。

役にたつか分かりませんが、手順を書いておきます。

GParted で sdb3 の swap領域を削除しました。

testdisk 起動
Disk /dev/sdb 選択 -> Proceed -> Intel -> Analyse -> QuickSearch
>P Linux Swap 選択
T: change type t Proceed ? 83 RET [write] ?(T/N) Y
swap 82 -> ext3 83 です。

ここで You will have to reboot for the change to take effect.と表示され
るので、reboot します。これで GParted と fdisk などの整合性がとれました。

testdisk を起動し Disk /dev/sdb を選択
Proceed -> Intel -> Advanced
> 3 P Linux を選択し Superblock で表示を確認

Disk /dev/sdb - 160 GB / 149 GiB - CHS 19457 255 63

Partition Start End Size in sectors

> Linux 12997 144 12 19457 53 52 103774208
superblock 32768, blocksize=4096 []
superblock 98304, blocksize=4096 []
 ・
 ・

fsck.ext3 を起動(このパーティションは ext3 です)

root# fsck.ext3 -p -b 32768 -B 4096 /dev/sdb3
/dev/sdb3 was not cleanly unmounted, check forced.
/dev/sdb3: Resize inode not valid.

/dev/sdb3: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)

root# mount /dev/sdb3 /mnt/sdb3
root# ls /mnt/sdb3

ファイルリストが無事表示されました。GParted でも確認できました。
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: データの復旧について

投稿記事 by thinkpadnerd »

後学のため、教えていただきたいことがいくつかあります。
naree さんが書きました: 20/09/18(金) 05:17 GParted で sdb3 の swap領域を削除しました。
この時点では「未割り当て」の状態になったということでしょうか?
naree さんが書きました: 20/09/18(金) 05:17 これで GParted と fdisk などの整合性がとれました。
この後も作業が続くということは、puppy は問題のパーティションを linux フォーマットと認識できていないということですね?
naree さんが書きました: 20/09/18(金) 05:17 /dev/sdb3: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)
この後、fsck を実行されたのでしょうか?

-----
ともあれ、復旧が成功してよかったです。 :)
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
naree
記事: 10
登録日時: 15/07/04(土) 10:11

Re: データの復旧について

投稿記事 by naree »

分かりにくくてすみません。

なんとなくうまく行ったので GPerted で swap で解除してたのですが
sdb3 を swap の状態で 変更作業をしてみました。

fdisk で確認します。 /dev/sdb3 が Linux swap です。
----------------------------------------------------------------------------------------------------
root# fdisk -l /dev/sdb
Disk /dev/sdb: 149.1 GiB, 160041885696 bytes, 312581808 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xac4c45b3

Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 105029631 105027584 50.1G 83 Linux
/dev/sdb2 105029632 208805887 103776256 49.5G 83 Linux
/dev/sdb3 208805888 312580095 103774208 49.5G 82 Linux swap / Solaris
----------------------------------------------------------------------------------------------------

testdisk を起動ます。

Create -> Disk /dev/sdb 選択
Proceed -> Intel --> Analyse --> Quick Search    

Partition が緑表示に

P Linux Swap を選択し
T: change type の T を入力

partition type の List が表示される (swap 82, Linux 83)

Proceed
New partition type [current 82] ? 83 [RET]
Enter: to continue [RET]

[write]
write partition struture to disk を選択

Write partition table, confirm ? (Y/N)  Y [RET]

You will have to reboot for the change to take effect.

>OK [RET]

Q,Q.... で testdisk を終了

さらに
You have to reboot for the change to take effect.
と表示される (reboot 必須でしょうか) 

(testdisk の作業は終了)

この時点では GPerted を再起動しても /dev/sdbv3 lunux-swap になった
ままですが fdisk コマンドの結果は
----------------------------------------------------------------------------------------------------
root# fdisk -l /dev/sdb
Disk /dev/sdb: 149.1 GiB, 160041885696 bytes, 312581808 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xac4c45b3

Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 105029631 105027584 50.1G 83 Linux
/dev/sdb2 105029632 208805887 103776256 49.5G 83 Linux
/dev/sdb3 208805888 312580095 103774208 49.5G 83 Linux
----------------------------------------------------------------------------------------------------
と Linux swap / Solaris --> Linux に変更されています。

reboot 後

GPerted では、まだ /dev/sdbv3 は lunux-swap です。

fsck.ext3 コマンドを実行 (-p option はいらないのかな?)
----------------------------------------------------------------------------------------------------
root# fsck.ext3 -p -b 32768 -B 4096 /dev/sdb3
/dev/sdb3 was not cleanly unmounted, check forced.
/dev/sdb3: Resize inode not valid.

/dev/sdb3: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)
root#
----------------------------------------------------------------------------------------------------

これで やっと GPerted もファイルシステムが ext3 表示になりました。
ただ PCManFM には sdb3 は表示されないようです。reboot が必要?
ROX-filer と GPerted でも reboot しないとマウントできないようです。

reboot しない状態でも、mount と ls で sdb3 のファイル確認はできました。
----------------------------------------------------------------------------------------------------
root# mount /dev/sdb3 /mnt/sdb3
root# cd /mnt/sdb3
root# ls
Brahms Symphony No.4 - Arvid Yansons - SKD.mp3
Brahms Symphony No.4 - Blomstedt_RCO(2007Live).ogg
Brahms Symphony No.4 - Daniel Barenboim.aac
Brahms Symphony No.4 - Eiji Ooue - Osaka_Phil.mp3
Brahms Symphony No.4 - Eugene Ormandy.mp3
Brahms Symphony No.4 - Fabio Luisi NHKSO.mp3
Brahms Symphony No.4 - Giulini - SKB (1996Live)_old1.flac
Brahms Symphony No.4 - Giulini - SKB - (1996Live).flac
Brahms Symphony No.4 - Hengelbrock_NDRso(2011Live).mp3
Brahms Symphony No.4 - Honeck - DSOB - (2012Live).m4a
lost+found
root#
----------------------------------------------------------------------------------------------------

このあと 再 reboot で GPerted, ROX-filer, PCManFM が正常に動作しました。
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: データの復旧について

投稿記事 by thinkpadnerd »

naree さんが書きました: 20/09/18(金) 22:23 sdb3 を swap の状態で 変更作業をしてみました。
検証作業と詳しい解説ありがとうございました。
概ね、英語の記事に書かれていたとおりの手順でよかったということですね。
TestDisk も fsck コマンドもかなり有用なツールらしいことが分かりました。 :)
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
naree
記事: 10
登録日時: 15/07/04(土) 10:11

Re: データの復旧について

投稿記事 by naree »

LxPupXenial、MX 19.2 では問題はないのですが

bionicpup32,64 でまだ起動時に sda2 は swap OKで、sdb3 は swap にできない
と failed と赤字で警告されます。
pmount は sdb3 を swap 領域と認識しています。
Gperted はファイルシステムは ext3 ですがマウントできません。
fdisk では、ext3 の表示ですが、

mount /dev/sdb3 /mnt/sdb3

は mount-FULL となってしまいます。マウントポイントなし?
bionicpup32 は今回の修正後にインストールしました。なにか修正しきれていなのでしょうか?
4つのOSは、すべてフルーガル・インストールです。LxPupXenial メインなので気づくのが
遅れてしまいました。
返信する