ターミナルからデバイスにアクセスする

ターミナルからデバイスにアクセスする

マウントしたくないフラッシュドライブがあります。代わりに、コンピューター間でファイルを転送するために使用したいだけです。

デバイス ディレクトリ経由でターミナルからフラッシュ ドライブにアクセスする方法はありますか? または、ターミナルからフラッシュ ドライブにアクセスする唯一の方法は、まずフラッシュ ドライブをマウントしてからマウント ポイントにアクセスすることですか?

答え1

ドライブをマウントしないと、どの形式のストレージ メディアにもアクセスできません。ただし、このプロセス全体をターミナルから実行できます。

まず、パーティション ID ( /dev/sdXY) が必要です。lsblkコマンドを使用してこれを見つけることができます。この ID がわかったら、 を実行できます。sudo mount /dev/sdXY /mntこれで、フラッシュ ドライブのファイル システムが で利用可能になり/mnt、ターミナルから使用できるようになります。

のデバイスは/devブロック デバイスと呼ばれ、それらのデバイス内に含まれるファイル システムの生の表現です (該当する場合)。これらのデバイスから直接読み取りや書き込みを行うことはできますが、ファイル システムの抽象化と保護の膨大なレイヤーを無視することになるため、多くの場合、これは良い考えではありません。

ほとんどのユースケースでは、rawブロックデバイスから読み書きするのは、クローン作成やとても低レベルのデバイス操作。ファイルシステムは、抽象化、エラー チェック、およびファイルの安全性の巨大なレイヤーを提供します。


注記:このテキスト ブロックの下のセクションは、教育目的のみを目的としています。結果が簡単に壊滅的になる可能性があるため、重要なシステム/ドライブではこれを試さないでください。以下で私が述べる内容に従った場合、あなたが何をしても私は責任を負いません。

警告されました。

その警告を踏まえて、フラッシュ ドライブの内容を気にしないのであれば、理論的には、raw ブロック操作を使用してフラッシュ ドライブからデータを読み書きすることは可能です。

最も単純な方法としては、次のコマンドを使用して、ファイル (たとえばfiles.zip) をフラッシュ ドライブに書き込みます。

dd if=files.zip of=/dev/sdd bs=1024

これにより、zip ファイルがフラッシュ ドライブの生のブロックにコピーされますが、ドライブ上のパーティションや関連データも (おそらく) 破損します。また、ドライブに書き込まれた「ブロック」の数も記録されます。これをメモしてください。この例では、1234 ブロックがコピーされたとします。

フラッシュ ドライブから別のコンピューターにファイルを読み取りたい場合は、逆のコマンドを使用して実行できます。

dd if=/dev/sdd of=files.zip count=1234 bs=1024

これにより、最初の 1234 ブロックの生のブロック データがドライブ (ZIP ファイルを含む) から取得され、files.zipコンピューターの現在のディレクトリに書き込まれます。また、この ZIP ファイルは、ファイルの末尾のデータが破損しているかゴミになっているなどの理由で、実際には読み取れない可能性があります。必要に応じて、この点に注意してください。必要に応じて、コマンドを使用して ZIP ファイルをheadトリミングできます。

完了したら、フラッシュ ドライブをフォーマットしてパーティションを再分割するなどする必要があるため、大規模な操作には非常に不便です。ファイル システムを使用するだけです。

関連情報