"cp"コマンドはブロックデバイスでのみ使用できますか?

"cp"コマンドはブロックデバイスでのみ使用できますか?

~によると私の最後の質問「cp」を使用してテープデバイスや「/dev/lp0」などのデバイスにファイルをコピーすることはできません。しかし、私はまだその理由を理解していません。

この質問を十分に簡単にするには、次のように教えてください。"cp"コマンドはブロックデバイスでのみ使用できますか?

答え1

これについて考える1つの方法は、これらを他のデバイスタイプとして考えることです。 「cp」は、限られた数のデバイスタイプ間でファイルをコピーする方法だけを知っています。ファイルの保存に最も一般的に使用されるデバイスはディスクドライブです。 「cp」は、ディスクドライブと他の制限されたデバイス(/ dev / ttyなど)の間でファイルをコピーする方法を知っています。

テープ、CD、プリンタ、またはネットワークを介して他のコンピュータにデータを書き込んで読み取るには、これらのデバイスの動作方法に関する専門的な知識が必要です。

新しいデバイスタイプが追加されるたびに「cp」が向上することは完全に可能です。しかし、これは時々、いくつかのシステムでは動作し、他のシステムでは動作しないさまざまなコマンドオプションがあることを意味します。

UNIXの設計は、コマンドが1つのことをうまく実行する必要があることです。 「cp」の場合、ディスクファイルをディスクファイルにコピーすることの1つです。

答え2

ブロックデバイスと文字デバイスがあります。キャラクタデバイスの場合、キャラクタストリームが渡されるか、または渡されます。キーボードやテープドライブなどがあります。ブロックデバイスを使用すると、前後に照会が可能なので、ファイル割り当てテーブルを作成してファイルを管理してみてください。ディスクなど。

cpは(マウントされた)ブロックデバイス用です。ファイルが保存されている場所を含むファイルシステムテーブルにエントリを作成します。その後、ファイルはその場所に保存されます。今後(そしておそらく後ろに)追求することも含まれます。キーボードでできないように、テープデバイスではこれを行うことはできません。これがテープドライブにはcatを使用し、ディスクにはcpを使用する理由です。

関連情報