mkfs を使用してファイルシステムを変更すると、データが破損しますか?

mkfs を使用してファイルシステムを変更すると、データが破損しますか?

プロジェクト ファイルが入った USB を持っていましたが、USB の再マウント時に断続的に問題が発生しました。マウント コマンドは、ntfs ファイル タイプによる mftmirr の不一致であると表示したため、ファイル システムのフロント エンドを mkfs.ext4 に変更することにしました。これでフラッシュ ドライブの内容は完全に消えてしまいました。さらに調査したところ、mkfs はファイルを削除しないことが確認できたので、この原因は何だったのか疑問に思います。

答え1

mkfsコマンドは、ターゲット ドライブを新しいファイル システムでフォーマットします。フォーマットすると、ファイルを含まない空のファイル システムが作成されます。これがフォーマットの目的です。

そのドライブの使用をやめる読み取り専用で再マウントします。運が良ければ、または同様のソフトウェアを使用してファイルを回復できるでしょうphotorec

答え2

mkfsファイルを明示的に削除しません。ターゲット デバイスでは、既存のものには何も考慮せずに、目的のファイル システムに固有の構造を作成します。新しいファイル システムは空の状態で作成されます。

事実上、古いファイルは消えます。デバイス全体をクリアするオプション (未使用としてマークされたスペースにゼロを書き込むなど) を使用して新しいファイルシステムを作成しない限り、古いデータとメタデータは部分的に存在します。それでも、古いファイルシステムを識別する最も基本的な構造が新しいファイルシステムの最も基本的な構造で上書きされているため、古いデータを取得する簡単な方法はありません。後者は、新しいファイルシステムがあり、それが空であることを示します。このような状況では、OS は古いファイルシステムの残骸を検索しないため、ファイルは消えたように見えます。

まだ適切なツール残骸を探すのが仕事なので、場合によっては一部のデータを取り戻すことができます。可能性を最大化するには、新しいファイルシステムへの書き込みを直ちに停止する必要があります。マウントを解除します。マウントする必要がある場合は、読み取り専用でマウントします。

ファイルを失わずに、あるファイルシステムを別のファイルシステムに変更することを変換. ファミリーのツールはmkfsこれを行いません。一般的に、任意のファイルシステムから別の任意のファイルシステムに変換する方法はありません。いくつかのファイルシステムから変換するツールがあります。特定のファイルシステムの種類を別のものに変更特定のタイプ。NTFS から ext4 への変換を可能にするツールは知りません。これらは非常に異なるため、そのようなツールが存在するとしたら驚きです。ファイルシステム タイプを変更する一般的な方法は、データを別の場所にコピーし、新しい空のファイルシステムを作成し (行ったように)、データをコピーし直すことです。

新しいタイプが古いものと同じであっても、mkfs古いファイルシステムは修正されません。その役割は空のファイルシステムを作成することです。新たにファイルシステムの修正には別のツール(ファミリーから始まるfsck)が必要ですが、LinuxはNTFSを修正するのに十分な機能を備えていないあなたの場合、古いファイルシステム全体を修復するには遅すぎると思います。ファイルの回復に集中する必要があります。

関連情報