私は最近、ddコマンドを使用して1TBの外付けハードドライブの最初の100MBを上書きしました。これは、私のパーティションテーブルが失われた可能性があることを意味します。 fdisk -l はパーティション情報を表示しません。
ただし、ddコマンドを実行すると実際にドライブがマウントされているため、ファイルエクスプローラを使用してドライブ(すべてのパーティション)のデータにアクセスできます。外付けハードドライブがまだコンピュータに接続されています。これにより、パーティションテーブルが回復可能であると考えられました。
このトピックの検索では、パーティションテーブルを復元できるデータ復旧ツールをお勧めしますが、これらのオプションはドライブがコンピュータから切断されたと想定しています。
/proc/partitionsを見ると、各ブロックデバイスのサイズは提供されますが、セクタのオフセットは提供されません。
Nautilusでファイル構造を見ることができるので、パーティションオフセットを知る必要があるとします。この情報を公開する方法はありますか?
答え1
/sys
正確に言うと、パーティション情報を取得できます/sys/block/<disk>/<partition>/{start,size}
。
このシェル機能は次のように役立ちます。
print_partitions()
{
local disk="$1"
local part
local template="%-6s %16s %16s %16s\n"
printf "$template" Part. "First sector" "Last sector" "# sectors"
for part in "/sys/block/$disk/"sd*; do
st="$(cat "$part/start")"
sz="$(cat "$part/size")"
end=$((st + sz - 1))
printf "$template" "${part##*/}" "$st" "$end" "$sz"
done
}
使用法:
$ print_partitions sdd
Part. First sector Last sector # sectors
sdd1 2048 2099199 2097152
sdd3 2099200 3907029167 3904929968
注:ここのセクターは512バイトのセクターです。
パーティション全体のダンプの場合:
for disk in /sys/block/sd*; do
print_partitions "${disk##*/}"
echo
done
最初のパーティションの始めに外部のスーパーブロックなどの貴重な情報を上書きすることができますが、これは別の話の問題です。