Linuxでファイルをコピーするために使用されるLinuxのcpコマンドについてはすでにご存知でしょう。 cpコマンドはローカルマシンでのみ使用できます。
しかし、リモートのLinuxシステムからファイルをコピーするのはどうでしょうか。リモートサーバーまたはリモートサーバーにファイルをコピーするには、scpというコマンドを使用できます。
雑学クイズ:scpはセキュアコピーの短縮形です。
scpコマンドの構文
scpコマンドの構文と使用法はcpコマンドに似ており、これらのscpコマンドの例ですぐにわかります。
ただし、最初にscpコマンドの構文を見てみましょう。
scp <options> source_path destination_path
コピーするファイルのソースに応じて、ソースはクライアントまたはサーバーのいずれかになります。ソースがクライアントの場合、宛先はサーバーであり、その逆も同様です。
でもそれは単純すぎるようですね。 scpコマンドの主な焦点は、ソースまたは宛先パス形式の正しい形式を使用することです。
サーバー上のファイルまたはディレクトリへの一般的なパスは、次の形式で表されます。
<username>@<ip_address_of_system>:<path_to_the file/directory>
実際には、scpコマンドで[email protected]を使用することもできますが、「ホスト名を解決できませんでした」というエラーが発生する可能性が高くなります。 「。
これは、ホスト名とIPアドレスの関連付けが、サーバーのネットワークのネットワーク構成に依存しているためです。実際のIPアドレスを使用すると、問題を回避できます。
scpコマンドを使用する前に覚えておくべきこと
Linuxシステムでscpコマンドを使用できるようになる前に必要なものがいくつかあります。
- scpコマンドは内部でsshを使用するため、sshがクライアントマシンとサーバーマシンの両方にインストールされ、実行されていることを確認してください。 sshがインストールされていない場合は、コマンド “ sudo apt install ssh”を使用してインストールします。 Debianベースのマシンで、またはディストリビューションのそれぞれのパッケージマネージャーを使用します。
- リモートシステムのユーザー名とパスワードを知っている必要があります。リモートホストのパスワードを入力するように求められます。ファイル転送はのみ開始されます リモートホストの正しいパスワードを入力したとき。
Linuxでのscpコマンドの使用:10の実用例
サーバーへのパスを指定するためのscpコマンドとフォーマットの構文を確認したので、scpコマンドの使用方法を見てみましょう。
1。 scpコマンドを使用してファイルをリモートシステムにコピーする
単一のファイルをローカルマシンからリモートホストにコピーするには、ファイルへのパスをソースパスとして指定し、ファイルをコピーする必要があるリモートホストのパスを指定します。
scp abc.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
2。 scpコマンドを使用してリモートシステムからファイルをコピーする
リモートシステムからローカルシステムへのファイルのコピーはほとんど同じです。リモートシステム上のファイルへの完全なパスとローカルシステム上のパスを指定する必要があります。
したがって、リモートシステムから現在のディレクトリにファイルをコピーするには、次の方法でコマンドを使用するだけです。
scp [email protected]<ip_address_of_xyz>:/remote/user/home/abc.txt .
3。 scpコマンドを使用して複数のファイルをコピーする
ローカルマシンからホストに複数のファイルをコピーするには、ソースパスとしてファイルの名前を指定するだけです。
scp abc.txt def.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
4。 scpコマンドを使用してディレクトリ全体をコピーする
scpを使用してディレクトリをコピーすることも、cpコマンドと同じです。 -rオプションを使用して、ソースパスとしてフォルダーの名前を指定できます。これは再帰モードと呼ばれます。
scp -r ~/Desktop/test [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
複数のディレクトリを指定して、それらすべてを1つのコマンドでコピーすることもできます。
5。出力のファイル転送の詳細を参照してください
コピー中に舞台裏で何が起こっているのか知りたい場合は、-vオプションを使用して、デバッグ、終了ステータス、暗号化、復号化など、実行されているすべてのプロセスを確認できます。これは冗長モードと呼ばれます。
scp -v abc.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
6。 2つのリモートホスト間でファイルをコピーする
これまで、ローカルマシンからリモートマシンにコピーする方法を見てきました。
あるリモートコンピュータから別のリモートコンピュータにファイルをコピーするには、上記のようにリモートコンピュータの形式で送信元と宛先の両方のパスを指定します。
scp [email protected]<ip_address_of_abc>:<path_of_file_or_folder> [email protected]<ip_address_of_xyz>:<path_of_file_or_folder
言うまでもなく、ここでは両方のシステムのパスワードを知っている必要があります。
7。圧縮してファイルをコピーする[転送時間を短縮する]
多数のファイルを一緒にコピーしようとすると、個々のファイルすべての合計に相当するサイズの単一のファイルを転送するよりも時間がかかります。
ファイル転送の速度を上げる必要があると思われる場合は、-Cオプションを使用してファイルを圧縮し、ファイルを転送できます。
最良のことは、転送中にのみ圧縮が行われることです。転送が完了すると、ファイルは元の形式で保存されます。 arhciveファイルは表示されませんが、リモートサーバー上にあるすべての個々のファイルが表示されます。
scp -C abc.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
8。ファイル転送の帯域幅を制限する
ファイルの転送が帯域幅の大部分を利用していると思われる場合は、-lオプションに続けて新しい帯域幅レートを使用して、ファイル転送の帯域幅を減らすことができます。
scp -l 800 abc.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
コマンドで指定する帯域幅はキロビット/秒ですが、ファイルの転送中は、scpコマンドの出力に転送速度がキロバイト/秒で表示されることに注意してください。
1バイト=8ビットであるため、コマンドパラメータの8300キロビット/秒は、コマンド出力で100キロバイト/秒になります。
9。コピーされたファイルの元の属性を保持する
ファイルのアクセス許可や所有権、ファイルのタイムスタンプなど、元のファイル属性を保持する必要がある場合は、-pオプションを使用します。
scp -p abc.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
10。 scpコマンドの出力を非表示にする
scpコマンドの長い出力に慣れていない場合は、-qオプションを使用してコマンドの出力を回避できます。これはかなりモードと呼ばれます。
ファイルのコピーの進行状況も隠します。
scp -q abc.txt [email protected]<ip_address_of_xyz>:/home/xyz/Desktop
上記の例では、ローカルマシンからリモートホストにファイルをコピーする方法を見てきました。リモートホストからローカルマシンにファイルをコピーする必要がある場合は、リモートホストからコピーするファイル/フォルダーのパスをソースパスとして、ファイル/フォルダーをローカルマシンに貼り付ける必要があるパスを宛先として書き込みます。パス。
scpコマンドの詳細については、そのマニュアルページを参照してください。
コンピュータ間でファイルを安全にコピーするためにscpコマンドを最大限に活用する方法を理解したことを願っています。個人的には、rsyncにはより多くの機能があるため、scpよりもrsyncコマンドを使用する方が好きです。
問題が発生した場合は、下のコメントセクションでお気軽に質問してください。また、他のすばらしいscpコマンドのヒントを知っている場合は、ここで他のメンバーと共有してください。