ドライブのバイナリコピーにある既存のファイルをどのように表示できますか?

ドライブのバイナリコピーにある既存のファイルをどのように表示できますか?

挨拶

私は最近、Linuxで圧縮と複製の概念を研究しています。

私が紹介されたときddこのコマンドが非常に役に立つことがわかったので、練習としてfat32サムドラ​​イブをファイルに少しずつコピーしました。

私が素直に期待したのは、サムドライブ内のファイルに直接アクセスできるということでしたが、ビット単位でコピーした後は不可能でした。これはdd、コマンドが実際に生成にのみ使用できることを示唆しています。その他ファイルシステムイメージ。

現在、ビット単位のコピーからファイルを読み取ることができるコマンドを探しています。そのようなコマンドは存在しますか?

答え1

これを行う場合cp /dev/sdb1 file.img(または同じddですが、ここで使用することはdd特にデフォルトのブロックサイズの場合は非生産的です)、デバイスの最初のパーティションの元の内容sdbをにコピーしますfile.imgfile.imgその内容はVFAT形式のファイルシステムになります。画像(例:isoイメージにはISO9660タイプのファイルシステムのイメージが含まれているため、ファイルにアクセスするにはustar / paxファイル形式を理解できる必要があるように、その中のファイルにアクセスするにはVFATファイルシステムを理解する必要があります。アーカイブにtar

/dev/sdb1Linuxカーネルは、/dev/sdb1ディレクトリにマウントした後にファイルにアクセスする方法であるVFATファイルシステムを理解しています。

ブロックデバイスを使用して、通常のファイルに含まれるファイルシステムをマウントすることもできますloop

sudo losetup -f --show file.img

fブロックデバイスのように動作しますが、通常のファイルでサポートされているループデバイス(対応するパスの最初のリーデバイスを使用show)が作成されます。

その後、を使用してインストールできますsudo mount /dev/loopXX /some/directory

イメージを変更する予定がない場合は、-rコマンドにループデバイスを追加するか、読み取り専用としてマウントするか、またはオプションを渡して-o roループデバイス自体を読み取り専用にする必要があります。-rlosetup

最近では、次のオプションを使用して直接実行できますmountlosetup-o loop

sudo mount -o loop file.img /some/directory

-o loop最新バージョンでは、通常のファイルをマウントしようとするとループマウントが必要だと仮定するため、これをスキップすることもできます。

sudo mount file.img /some/directory

VFATファイルシステムを理解する他のものはGNUであり、/ MS-DOS / Windowsコマンド(、、、...)プレフィックス(Microsoft / MS-DOS用)mtoolsを使用してVFAT形式のディスク上のファイルまたはディスクイメージにアクセスできます。COMMAND.COMCMD.EXEdirtypecopym

mdir -i file.img

に含まれるVFATファイルシステムのルートの内容が一覧表示されますfile.img

関連情報