技術ノート Linux Linux で scp コマンドを使用する方法

Linux で scp コマンドを使用する方法

重要なポイント

  • SCP は、SSH を使用して Linux コンピュータ間でファイルをコピーするための安全かつ簡単な方法です。使いやすく、ファイルを安全に転送できる手段です。
  • SCP は OpenSSH バージョン 8.8 以降非推奨であると考えられており、最新の実装ではデフォルトでファイル転送に SFTP を使用します。ただし、構文は同じままです。
  • rsync は scp よりも優先されますが、自己完結型ネットワーク上のコンピューター間でファイルをコピーするには scp が依然として適切なオプションです。転送に関与するすべてのコンピュータで SSH が実行されている必要があります。

scp コマンドを使用すると、Linux コンピュータ間で ファイルを簡単かつ安全にコピー できます。 SSH セキュリティ を使用しますが、何よりもシンプルです。 cp を使用できる場合は、 scp を使用できます。

Linux で scp コマンドを使用する方法

scp とセキュア コピー プロトコルとは何ですか?

いくつかの用語を定義しましょう。 SCP と scp あります。大文字の SCP は Secure Copy Protocol を表します。小文字の scp secure cp を表します。言い換えれば、SCP はプロトコルであり、 scp はプログラムです。

scp 、リモート Linux コンピュータ 間でファイルを安全にコピーする手段として設計されました。 SSH を使用して安全な接続を確立します。 SSH (セキュア シェル) は、リモート Linux コンピュータへのアクセスやログインによく使用される 暗号化 ネットワーク プロトコルです。 Linux ディストリビューション では、SSH 機能は OpenSSH によって提供されます。

SCP はやや歯が長く、現代での使用に関して懸念が表明されています。 OpenSSH バージョン 8.8 以降、SCP は非推奨とみなされています。 scp の最新の実装では、デフォルトで Secure File Transfer Protocol が使用されます。 SSH は安全な接続に引き続き使用されますが、ファイル転送は SFTP によって処理されます。これはすべて目に見えず、内部で魔法のように行われ、 scp 構文は同じままです。

rsync プログラムは rsync scp も優先されますが、rsync がインストールされていないコンピュータや、 root 権限がないコンピュータではインストールを続行できない場合があります。自己完結型ネットワーク上のコンピュータからコンピュータへファイルをコピーする場合、 scp はまったく問題ありません。 scp 機能するには、コピー先またはコピー元のすべてのコンピューターで SSH が実行されている必要があります。

コンピューターにインストールされている OpenSSH のバージョンを確認するには、次のように入力します。

 ssh-V 

Linux で scp コマンドを使用する方法

scp を使用して単一ファイルをコピーする

標準の cp コマンドと同様に、 scp ファイルをソースの場所からターゲットの場所にコピーします。ファイルをリモート コンピュータにコピーするには、リモート コンピュータの IP アドレスまたはネットワーク名を知っている必要があります。ファイルの送信先の場所に対する書き込み権限を持つユーザー アカウントの資格情報も必要です。

「sample.txt」というファイルをローカル ネットワーク上の「fedora-34」というコンピュータに送信する場合の構文は次のとおりです。

 scp ./sample.txt dave@fedora-34.local:/home/dave/Downloads/

コマンドは次のもので構成されます。

  • scp : scp コマンド
  • ./sample.txt : 送信するファイル。これは現在のディレクトリにあります。
  • dave@ : ファイルの送信先となるリモート コンピューター上のユーザー アカウント。
  • fedora-34.local : リモート コンピューターのネットワーク名。
  • :/home/dave/Downloads/ : リモート コンピューター上のファイルのコピー先の場所。コンピューター名とパスを区切るコロン「:」に注意してください。

リモート コンピュータ上のアカウントのパスワードを入力するように求められ、ファイルがコピーされます。

リモート コンピュータ上でファイルに別の名前を付けたい場合は、ターゲット パスにファイル名を追加できます。同じファイルをコピーして「異なるファイル.txt」という名前を付けるには、次の構文を使用します。

 scp ./sample.txt dave@fedora-34.local:/home/dave/Downloads/ Different-file.txt

scp コマンドは既存のファイルをサイレントに上書きするため、ファイルをコピーするときは注意してください。コピーするファイルと同じ名前のファイルがターゲット コンピュータ上にすでに存在する場合、そのファイルは上書きされて失われます。

ターゲット コンピューターがデフォルトの SSH ポート 22 を使用していない場合は、 -P (ポート番号) オプションを使用して適切なポート番号を指定できます。

Linux で scp コマンドを使用する方法

単一ファイルの取得

リモート サーバーからファイルをコピーするには、リモート サーバーをソースとして指定し、ファイルをコピーするローカル パスをターゲットとして指定するだけです。 「development-plan.md」というファイルをリモート コンピューターからローカル コンピューターの現在のディレクトリにコピーします。

 scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md 。

ローカル パスにファイル名を追加すると、ファイルがコピーされ、その名前が付けられます。

 scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md ./dp-1.md

ファイルはコピーされますが、名前は指定したファイル名に変更されます。

 ls -hl *.md 

Linux で scp コマンドを使用する方法

複数のファイルをコピーする

複数のファイルをどちらの方向にもコピーするのは簡単です。ソース ファイルは好きなだけリストできます。ここでは、2 つの マークダウン ファイルと 1 つの CSV ファイル をコピーしています。

 scp ./dp-1.md ./dp-2.md ./dp-3.csv dave@fedora-34.local:/home/dave/Downloads/

3 つのファイルがリモート コンピュータにコピーされます。ワイルドカードも使用できます。このコマンドは、最後のコマンドとまったく同じことを行います。

 scp ./dp. dave@fedora-34.local:/home/dave/ダウンロード/ 

Linux で scp コマンドを使用する方法

scp 経由でディレクトリを再帰的にコピーする

-r (再帰) オプションを使用すると、単一のコマンドで ディレクトリ ツリー全体をコピーでき ます。 2 つのファイルを「data」というディレクトリに配置し、「data」ディレクトリ内に「CSV」というディレクトリを作成しました。 CSV ファイルを「data/CSV」ディレクトリに配置しました。

このコマンドは、ファイルをコピーし、リモート コンピュータ上にディレクトリ構造を再作成します。

 scp -r ./data dave@fedora-34.local:/home/dave/Downloads/ 

Linux で scp コマンドを使用する方法

リモートサーバー間でのファイルのコピー

scp に、あるリモート サーバーから別のリモート サーバーにファイルをコピーするように指示することもできます。構文は非常に単純です。ソース サーバーのアカウント名とネットワーク アドレス、およびターゲット サーバーのアカウント名とネットワーク アドレスを指定します。ファイルはソース サーバーからコピーされ、ターゲット サーバー上の場所にコピーされます。

構文は単純ですが、他のすべてが適切に配置されていることを確認するには、もう少し考える必要があります。当然のことですが、ファイルをコピーしようとしているリモート サーバー上の場所には、コマンド ラインで指定したユーザー アカウントがアクセスできる必要があります。また、そのユーザー アカウントには、その場所に対する書き込み権限が必要です。

より微妙な前提条件は、ローカル コンピューターとソース コンピューターの間、およびソース サーバーとターゲット サーバーの間にも SSH アクセスが設定されている必要があることです。 SSH を使用してソース サーバーからターゲット サーバーにログインできることを確認します。それができない場合、 scp 接続できません。

認証されているがパスワードなしのアクセスを使用できるように SSH キーを設定すること は、断然推奨される方法です。パスワードの使用はすぐに面倒になり、ユーザー アカウントごとにパスワードの入力を求められるため、スクリプトを使用してプロセスを完全に自動化することができなくなります。

各リモート サーバーで使用しているユーザー アカウントの SSH キーをセットアップします。これにより、これら 2 人のユーザーに他のサーバーへのシームレスな SSH アクセスが提供されました。これにより、これら 2 つのユーザー アカウントを使用して、どちらの方向にもファイルを転送できるようになります。

ローカルの Ubuntu コンピューターから発行された scp コマンドを使用して、 Manjaro コンピューターの「davem」ユーザー アカウントから Fedora コンピューターの「dave」アカウントにファイルをコピーする場合の構文は次のとおりです。

 scp davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/

何も言わずにコマンドラインに戻ります。何かが起こった形跡はない。ニュースがないことは良いニュースであるという前提に基づいて、 scp このリモート間のコピーのエラーのみを報告します。 Fedora コンピュータを確認すると、Manjaro コンピュータからのファイルがコピーされ、受信されていることがわかります。

デフォルトでは、ファイルはソース コンピュータからターゲット コンピュータに直接コピーされます。 -3 (3 方向) オプションを使用してこれをオーバーライドできます。

このオプションを使用すると、ファイルはローカル コンピュータを介してターゲットからソースに転送されます。これを実現するには、ローカル コンピューターからターゲット コンピューターへのシームレスな SSH アクセスが必要です。

 scp -3 davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/

ローカル コンピューター経由でファイルを送信している場合でも、まだ何かが起こった兆候はありません。もちろん、プリンの証拠は、ターゲットのコンピュータをチェックすることです。

その他の SCP オプション

-p (ファイル属性を保持) を指定すると、元のファイルの作成、所有権、および転送されたファイルのアクセス フラグが保持されます。これらには、ソース コンピューター上の元のファイルと同じメタデータが含まれます。

エラー メッセージが表示された場合は、コマンドを繰り返し、 -v (詳細) フラグを使用して、転送試行に関する詳細情報を確認してください。出力で障害点を特定できるはずです。

-C (圧縮) オプションは 、ファイルのコピー時に圧縮し 、受信時に解凍します。これは、コンピュータ間のモデム通信が低速だった時代にまで遡ります。ペイロードのサイズを小さくすると、送信時間が短縮される可能性があります。

現在、ファイルの圧縮と解凍にかかる時間は、圧縮伝送と非圧縮伝送の差よりも長くかかる可能性があります。ただし、 scp 同じ LAN 上のコンピュータ間でファイルをコピーするのに最適であるため、転送速度はあまり問題になりません。

「 Linux で scp コマンドを使用する方法」に関するベスト動画選定!

【ワンポイントレクチャー】Linuxでの圧縮と解凍のコマンド解説【Linux初心者:第6回】
scp コマンド – Linux でファイル/フォルダーを安全に転送するための SCP