Wiifefsの元に戻す --all --force /dev/sda? /dev/sda

Wiifefsの元に戻す --all --force /dev/sda? /dev/sda

オペレーティングシステム:Debian uname -aBullseye

Linux backup-server 5.10.0-5-amd64 #1 SMP Debian 5.10.24-1 (2021-03-19) x86_64 GNU/Linux

私は方法を探しています。元に戻すwipefs注文する:

wipefs --all --force /dev/sda? /dev/sda

前の構造は次のとおりです。

fdisk -l /dev/sda

Disk /dev/sda: 223.57 GiB, 240057409536 bytes, 468862128 sectors
Disk model: CT240BX200SSD1  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 8D5A08BF-0976-4CDB-AEA2-8A0EAD44575E

Device       Start       End   Sectors   Size Type
/dev/sda1     2048   1050623   1048576   512M EFI System
/dev/sda2  1050624 468860927 467810304 223.1G Linux filesystem

そして、コマンドの出力は次のようになりますwipefs(まだ私の端末にあります)。

/dev/sda1: 8 bytes were erased at offset 0x00000052 (vfat): 46 41 54 33 32 20 20 20
/dev/sda1: 1 byte was erased at offset 0x00000000 (vfat): eb
/dev/sda1: 2 bytes were erased at offset 0x000001fe (vfat): 55 aa
/dev/sda2: 2 bytes were erased at offset 0x00000438 (ext4): 53 ef
/dev/sda: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 8 bytes were erased at offset 0x37e4895e00 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa

記事を見つけたかもしれません。https://sysbits.org/、今すぐ: https://sysbits.org/undoing-wipefs/

引用しますワイプそして元に戻すそこで私はそれが正常かどうかを知りたかったし、私のサーバーで安全にできるかどうかを知りたかったのですが、まだサーバーを再起動していないので、問題を解決する方法を見つけようとしました。地獄スペルエラー:

  1. ワイプ部分

    wipefs -a /dev/sda
    
    /dev/sda: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
    /dev/sda: 8 bytes were erased at offset 0x3b9e655e00 (gpt): 45 46 49 20 50 41 52 54
    /dev/sda: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa
    
  2. 元に戻す部分

    echo -en '\x45\x46\x49\x20\x50\x41\x52\x54' | dd of=/dev/sda bs=1 conv=notrunc seek=$((0x00000200))
    echo -en '\x45\x46\x49\x20\x50\x41\x52\x54' | dd of=/dev/sda bs=1 conv=notrunc seek=$((0x3b9e655e00))
    echo -en '\x55\xaa' | dd of=/dev/sda bs=1 conv=notrunc seek=$((0x000001fe))
    
    partprobe /dev/sda
    

可能な代替ソリューション

testdisk私はSSDドライブでこれを実行して多くのパーティションを見つけましたが、次の2つだけがオリジナルと一致しました。

TestDisk 7.1, Data Recovery Utility, July 2019
Christophe GRENIER <[email protected]>
https://www.cgsecurity.org

Disk /dev/sda - 240 GB / 223 GiB - CHS 29185 255 63

     Partition                  Start        End    Size in sectors

 1 P EFI System                  2048    1050623    1048576 [EFI System Partition] [NO NAME]
 2 P Linux filesys. data      1050624  468860927  467810304

Write(パーティション構造をディスクに書き込む)ことはできますか?そうでなければなぜならないのですか?

答え1

幸いなことに、wipefs実際に拭いた部分が印刷されます。

これら、

wipefs -a /dev/sda
/dev/sda: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 8 bytes were erased at offset 0x3b9e655e00 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa

echo -en '\x45\x46\x49\x20\x50\x41\x52\x54' | dd of=/dev/sda bs=1 conv=notrunc seek=$((0x00000200))
echo -en '\x45\x46\x49\x20\x50\x41\x52\x54' | dd of=/dev/sda bs=1 conv=notrunc seek=$((0x3b9e655e00))
echo -en '\x55\xaa' | dd of=/dev/sda bs=1 conv=notrunc seek=$((0x000001fe))

全体的に私は合理的なようです。

しかし、オフセットはあなたの場合とは異なります!で得られた値を使用する必要がありますwipefs

オフセット値(0x3b9e655e00対0x37e4895e00)に基づいて、そのディスクはユーザーディスクよりわずかに大きい(〜256GB対〜240GB)。その値を使用すると、ディスクの末尾にあるバックアップGPTが破損することを意味します。最初のコピーが破損しない限り、すべてのパーティションツールはそれを書き換えることができる必要があるため、これは重要ではありません。

ただし、その逆が真であり、ディスクサイズ内の誤ったオフセットを使用すると、最終的にドライブの任意の部分が上書きされます。悪い。

また、ファイルシステムのマジックナンバーも正しい場所になければなりません。


VFATイメージで消去と元に戻すことをテストし、バージョンを読む前に頭に次のように書きました。

printf "$(printf '\\x%s' 46 41 54 31 36 20 20 20)" |
  dd bs=1 conv=notrunc seek=$(printf "%d" 0x00000036) of=test.vfat

これは単一のwipefs出力ラインに対するものです(他の出力ラインでも繰り返し)。

test.vfat: 8 bytes were erased at offset 0x00000036 (vfat): 46 41 54 31 36 20 20 20

先頭にネストされたprintfを使用すると、出力を手動で変更せずに出力をコピーして貼り付けることができますwipefs46 41 54 31...\x46\x41\x54\x31...

繰り返しますが、正しいオフセットに正しい値を入力するように注意する必要があります!

追加の自動化はそれほど悪くないかもしれませんが、関連するリスクを考慮すると、広範なテストなしにこのようなスクリプトを公開することはできなくなります。

可能であれば、いたずらをする前にディスクの内容のコピーを作成してください。

答え2

私の質問にキャンセルwipefs、私はRecreate Partitionを使用することを選択しましたtestdisk。測定に時間がかかるので(単にクリックするのではなく)、これを避けることをお勧めします。Writeその前に、両方のパーティションを再確認する必要がありました。testdisk構造を読んでみましょう。ずっと読んでみました。いくつかのディレクトリ - かなり大丈夫だった。


私が考えなかったのは、基本的なファイルシステムでした。確かに今は始まっていません。

私はライブLinux MintでGPartedの写真を撮った。

不明なファイルシステム - GParted


コマンドの完全な出力は次のとおりですwipefs

/dev/sda1: 8 bytes were erased at offset 0x00000052 (vfat): 46 41 54 33 32 20 20 20
/dev/sda1: 1 byte was erased at offset 0x00000000 (vfat): eb
/dev/sda1: 2 bytes were erased at offset 0x000001fe (vfat): 55 aa
/dev/sda2: 2 bytes were erased at offset 0x00000438 (ext4): 53 ef
/dev/sda: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 8 bytes were erased at offset 0x37e4895e00 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa

削除されたコンテンツを元に戻すには:

まず、私のExt4パーティションは次のようになります。

echo -en '\x53\xef' | dd of=/dev/sda2 bs=1 conv=notrunc seek=$((0x00000438))
partprobe /dev/sda2

これでインストールが可能で、すべてのファイルを読み取ることができます。

2.私のEFIパーティション:

echo -en '\x46\x41\x54\x33\x32\x20\x20\x20' | dd of=/dev/sda1 bs=1 conv=notrunc seek=$((0x00000052))
echo -en '\xeb' | dd of=/dev/sda1 bs=1 conv=notrunc seek=$((0x00000000))
echo -en '\x55\xaa' | dd of=/dev/sda1 bs=1 conv=notrunc seek=$((0x000001fe))
partprobe /dev/sda1

再起動してサーバーにSSHで接続しましたが、今は問題ありません。

答え3

ちょうど「書き込み」(パーティション構造をディスクに書き込む)を押すことができますか?

すべてのパーティションがリストされている場合にのみ適用されます。

パーティション表の回復

もしすべてのパーティションのリストそしてこの場合のみで確認済み書くEnter、y、およびOKを押します。

これでパーティションがパーティションテーブルに登録されました。

関連情報