リモート ディレクトリからすべてのファイルをコピーする

Abdullah Bukhari 2024年2月15日
  1. scp コマンド
  2. Bash でファイルをコピーする
リモート ディレクトリからすべてのファイルをコピーする

この記事では、ネットワーク上の異なるホスト間でファイルをコピーする方法について説明します。 さらに、scp コマンドと、それを使用してリモートの場所からファイルをコピーする方法についても説明します。

scp コマンド

セキュア コピー プロトコル (SCP) は、Unix 準拠のオペレーティング システム間でのファイルとフォルダーのスムーズなコピーを促進する、安全にコピーするネットワーク プロトコルです。

scp コマンドは、cp コマンドのより安全な変種です。 セキュア シェル (SSH) 接続を介したリモート コピー中にパスワードとファイルを暗号化し、スニッフィング攻撃から通信を保護します。

scp の詳細については、以下のコマンドを使用してください。

man scp

マニュアル ページ (マニュアル ページの短縮形) は、システム コール、ライブラリ コール、正式な標準と規則、さらには抽象的な概念に関する情報を表示する Unix ユーティリティです。 man ページはカーネルと一緒にダウンロードされるため、インターネット接続は必要ありません。

Bash でファイルをコピーする

Bash でファイルをコピーする方法はいくつかあります。cpcatvim (任意のテキスト エディター)、および scp は、コピーできる多くの方法のほんの一部です。 以下のコードは、Bash でファイルをコピーする方法を探っています。

1) cp <source file>.txt <destination file>.txt
2) cat 0<source_file.txt 1>destination_file.txt
3) cat <source_file.txt >destination_file.txt

Bashでファイルをコピー

最初の方法では、ソース ファイルからコンテンツをコピーし、コピー先ファイルに貼り付けます。 cp は、宛先ファイルが存在しない場合でも内容を貼り付けることに注意してください。

これは、カーネルが宛先ファイルを自動的に作成するためです。

2 番目の方法では、オペレーティング システムのコースで学習した概念を使用します。 ppfdt (プロセス ファイル記述子テーブル) を思い出してください。ファイル記述子 0 はキーボード (stdin) を指し、ファイル記述子 1 はモニター (stdout) を指し、ファイル記述子 2 はモニター (stderror) を指します。

この 2 番目のメソッドは、記述子 0 をオーバーライドして、ソース ファイルを指すようにします。 また、宛先ファイルを指すように stdout をオーバーライドします。

方法 3 は 2 番目の方法と似ていますが、記述子 3 はソース ファイルを指し、記述子 4 は宛先ファイルを指します。

方法 2 と 3 の両方で、読み取りはソース ファイルから行われ、書き込みは宛先ファイルに行われます。 繰り返しになりますが、カーネルは内容が存在しない場合でも宛先ファイルに貼り付けます。

これは、カーネルが宛先ファイルを自動的に作成するためです。

離れた場所にある Bash で安全にファイルをコピーする

scp コマンドの一般的な構文は次のとおりです。

scp [option] [user_name@source_host:path/to/source/file] [user_name@target_host:destination/path]

user_name を指定しない場合、scp は現在のユーザーをデフォルトとして使用します。 ターゲット パスを除外すると、scp コマンドはソースから現在のローカル パスへのコピーを考慮します。

同様に、ソース パスを省略すると、scp コマンドは現在のローカル パスをファイルのコピー元として使用します。

オプションで -r を指定すると、すべてのファイルとサブディレクトリを再帰的にコピーします。 したがって、ファイルをコピーする場合は、オプションを指定しないでください。 ファイルはコピーされますが、サブディレクトリは除外されます。

他のコマンドに対する scp の利点は、ファイルを暗号化するため、はるかに安全であることです。