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

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

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

セキュアコピープロトコルとscp

いくつかの用語を定義しましょう。SCPがあり、がありscpます。大文字のSCPは、SecureCopyProtocolの略です。小文字scpは安全を意味しcpます。言い換えれば、SCPはプロトコルでscpありプログラムです。

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

SCPはやや時代遅れであり、最近ではその使用について懸念が高まっています。OpenSSH 8.8以降、SCPは非推奨になりました。最新の実装scpでは、デフォルトで安全なファイル転送プロトコルが使用されます。SSHは引き続き安全な接続に使用されますが、ファイル転送はSFTPを介して行われます。それはすべて目に見えず、内部で魔法のように発生し、scp構文は同じままです。

このrsyncプログラムをお勧めしますが、このプログラムがインストールされておらず、root権限がない、つまりインストールできないscpコンピューターに遭遇する可能性があります。rsyncオフラインネットワーク上のPCからPCにファイルをコピーする場合scpは問題ありません。動作するscpには、コピー元とコピー元のすべてのコンピューターでSSHが実行されている必要があります。

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

ssh -V

単一のファイルをコピーする

標準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 /:リモートマシンにファイルをコピーする場所。コンピュータ名とパスを区切るコロン「:」に注意してください。

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

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

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

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

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

1つのファイルを取得する

リモートサーバーからファイルをコピーするには、リモートサーバーをソースとして指定し、ファイルをコピーするローカルパスをターゲットとして指定するだけです。「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

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

複数のファイルを任意の方向にコピーするのは非常に簡単です。必要な数のソースファイルを一覧表示できます。ここでは、2つのマークダウンファイルと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/Downloads/

ディレクトリの再帰的コピー

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

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

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

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

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

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

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

認証されているがパスワードなしのアクセスを許可するようにSSHキーを設定することは、はるかに好ましい方法です。パスワードの使用はすぐに混乱します。また、すべてのユーザーアカウントのパスワードを入力するように求められるため、スクリプトを使用してプロセスを完全に自動化することはできません。

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

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

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/

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

その他のオプション

(ファイル属性の-p保持)オプションは、アップロードされたファイルの元のファイル作成、所有者、およびアクセスフラグを保持します。それらは、ソースコンピューター上の元のファイルと同じメタデータを持ちます。

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

-C圧縮)オプションは、コピー時にファイルを圧縮し、受信時に解凍します。これは、コンピュータ間のモデム通信が遅い時代にまでさかのぼります。ペイロードサイズを小さくすると、送信時間を短縮できます。

現在、ファイルの圧縮と解凍に費やされる時間は、おそらく圧縮された転送と圧縮されていない転送の違いよりも長くなります。ただしscp、同じローカルネットワーク上のコンピュータ間でファイルをコピーする場合に最適であるため、転送速度は大きな問題にはなりません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です