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

scpコマンドを使用してLinuxシステムからリモートシステムにファイルを転送するのに役立つ簡単なチュートリアル。

SCPは「セキュアコピー」の略です。scpLinuxが提供するコマンドラインユーティリティで、安全でないネットワークを介して、あるマシンから別のマシンにファイルとディレクトリを転送できます。

あるシステムから別のシステムにファイルをコピーしたい場合scpは、ファイルとディレクトリを安全に転送するための非常に優れたオプションです。2台の通信機が同じネットワークで接続されている場合、使用scpが可能になります。

scp転送されるファイルと転送に使用されるパスワードの両方が暗号化されているため、機密性と整合性についてはコマンドに大きく依存できます。この転送の進行中に誰かがトラフィックをスヌープしようとしても、機密情報は公開されません。

このチュートリアルでは、scpコマンドのさまざまな例を示します。また、scpコマンドで頻繁に使用されるオプションのいくつかを見ていきます。

scpコマンドの使用を開始する

scpコマンドを使用して、ファイル/ディレクトリを転送できます。

  • ローカルマシンからリモートマシンへ。
  • 2台のリモートマシン間。
  • リモートマシンからローカルマシンへ。

一般的な構文:

scp [Option] [source_file_name] [[email protected]_Host]:destination_folder

このコマンドの基本的な属性を1つずつ理解していきましょう。

  • [source_file_name]これはコピーしたいソースファイルです。
  • [ [電子メールで保護] _Host]これは、ファイルをコピーするリモートシステムのユーザー名です。リモートマシンのIPアドレスも、この属性の ' @'記号の後に使用されます。
  • [destination_folder]これはコピーしたファイルを保存したいディレクトリです。

注:コロン(:)記号は、ローカルとリモートの場所を区別するため、構文で使用されます。:リモートシステムでコロン()を使用して、ファイルのコピー先のディレクトリを指定します。ターゲットディレクトリを指定しない場合、ファイルはリモートシステムユーザーのホームディレクトリにコピーされます。

で使用されるオプション scp

scpコマンドで使用される最も一般的なオプションのいくつかを以下に示します。

オプション 説明
-C 転送するファイルの圧縮を許可する
-v 詳細な出力を与える
-r ファイルとディレクトリを再帰的にコピーする
-p ファイルのアクセス許可、モード、アクセス時間を保持する
-P scpコマンドで使用されるデフォルトのポートを変更する

scpコマンドで頻繁に使用されるオプション

これらのオプションの例については、チュートリアルで詳しく説明します。

ローカルシステムからリモートシステムへのファイルのコピー

scp次の構文を使用して、ローカルシステムからリモートシステムにファイルを転送できます。これにより、ファイルをリモートに配置されたサーバーに転送またはアップロードできます。

一般的な構文:

scp [file_name] [email protected]:[destination_folder]

例:

scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav

この例では、ファイル「apache-tomcat-9.0.8.tar.gz」をローカルシステムからIPアドレスが「143.110.178.221」のリモートシステムにコピーしています。

リモートシステムでは、ファイルは「gaurav」という名前のディレクトリにコピーされます。

出力:

[email protected]:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
[email protected]'s password: 
apache-tomcat-9.0.8.tar.gz                           100% 9589KB  79.8KB/s   02:00    
[email protected]:~$ 

リモートシステムの出力でファイルを確認してみましょう。

[email protected]:~/gaurav# ls
apache-tomcat-9.0.8.tar.gz
[email protected]:~/gaurav#

したがって、scpコマンドを使用してファイルがリモートシステムに正常にコピーされます。

複数のファイルをリモートシステムにコピーする

前の例では、scpコマンドを使用してファイルをリモートシステムに転送する方法を学びました。このコマンドを使用して、ローカルシステムからリモートシステムに複数のファイルを転送する方法を説明します。

一般的な構文:

scp [file 1] [file 2] [file n] [email protected]_host:[specific directory]

この簡単なプロセスを例を挙げて理解しましょう。

例:

scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav

ここでは、リモートシステムにコピーするコマンドに複数のファイルが記載されています。

出力:

[email protected]:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav 
[email protected]'s password: 
ath.html                                      100%  199KB  94.7KB/s   00:02    
abc.txt                                       100%    0     0.0KB/s   00:00    
ppa-purge_0.2.8+bzr56_all.deb                 100% 4360    42.2KB/s   00:00    
[email protected]:~$

リモートシステムの場合:

[email protected]:~/gaurav# ls -l
total 9800
-rw-r--r-- 1 root root       0 Oct  5 08:58 abc.txt
-rw-r--r-- 1 root root 9818695 Oct  5 08:35 apache-tomcat-9.0.8.tar.gz
-rw-r--r-- 1 root root  204057 Oct  5 08:58 ath.html
-rw-r--r-- 1 root root    4360 Oct  5 08:58 ppa-purge_0.2.8+bzr56_all.deb
[email protected]:~/gaurav#

これで、3つのファイルすべてがリモートシステムにコピーされます。

ディレクトリをリモートシステムにコピーする

scpコマンドを使用して、ローカルシステムからリモートシステムにディレクトリをコピーできます。このプロセスは、ファイルをコピーするプロセスと似ています。ディレクトリの内容もコピーするに -rは、scpコマンドでオプションを使用できます。

この-rオプションは、ディレクトリを再帰的にコピーするために使用されます。つまり、ディレクトリ内のすべてのサブフォルダとファイルもコピーされます。

一般的な構文:

scp -r [directory path] [email protected]_host:[target_directory]

例:

scp -r PycharmProjects [email protected]:gaurav

出力:

[email protected]:~$ scp -r PycharmProjects [email protected]:gaurav
[email protected]'s password: 
__main__.py                                   100%  623     7.8KB/s   00:00    
__init__.py                                   100%   23     0.4KB/s   00:00    
completion.py                                 100% 2929    28.1KB/s   00:00    
search.py                                     100% 4728    38.7KB/s   00:00    
uninstall.py                                  100% 2963    32.5KB/s   00:00    
hash.py                                       100% 1681    21.3KB/s   00:00    
check.py                                      100% 1430    16.8KB/s   00:00    
configuration.py                              100% 7125    50.4KB/s   00:00    
show.py                                       100% 6289    49.8KB/s   00:00    
download.py                                   100% 6623    48.2KB/s   00:00  
[email protected]:~$  

コマンドで-rオプションを使用するscpと、ディレクトリ内のすべてのサブフォルダとファイルがローカルマシンからリモートシステムにコピーされます。

scpプロセスに関する詳細情報の表示

-v(小文字のv)オプションを使用して、リモートシステムまたはローカルシステムのいずれかにコピーされているファイルに関する情報を表示できます。このタイプの出力は、詳細出力とも呼ばれます。

このオプションを使用すると、ファイルに関する完全なデバッグ情報が画面に表示されます。

一般的な構文:

scp -v [file_name] [email protected]_host:

例:

scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team

出力:

[email protected]:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team
Executing: program /usr/bin/ssh host 159.89.170.11, user root, command scp -v -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/gaurav/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 159.89.170.11 [159.89.170.11] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/gaurav/.ssh/id_rsa type -1
apache-tomcat-9.0.8.tar.gz                                                                                          100% 9589KB  99.8KB/s   01:36    
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 9826736, received 4016 bytes, in 97.2 seconds
Bytes per second: sent 101133.9, received 41.3
debug1: Exit status 0
[email protected]:~$

ここで、出力では、scpコマンドを-vオプションとともに使用すると、ファイルのデバッグ情報が端末に表示されていることがわかります。

2つのリモートホスト間でファイルを転送する

Linuxでは、複数のリモートホストに接続できます。scpコマンドを使用して、2つのリモートホスト間でファイルとディレクトリを転送できます。

一般的な構文:

scp [email protected]_1:/[file_name] [email protected]_2:[folder_to_save]

構文は少し広いように見えるかもしれませんが、かなり単純です。ここで、コマンドの最初の部分は、ファイルのコピー元のリモートユーザーに関する入力を提供します。コロン(:)であり/、2台のリモートマシン間で転送されるファイル名またはディレクトリ名を指定するために使用されます。

2番目の部分は、ファイルがコピーされるターゲットリモートシステムに関する情報を提供します。

例:

scp -r [email protected]:gaurav [email protected]:/team

ここでは、「gaurav」という名前のディレクトリをローカルシステムからリモートシステムに再帰的にコピーします。ファイルはリモートシステムのフォルダ「team」にコピーされます。

出力:

[email protected]:~$ scp -r [email protected]:/gaurav [email protected]:/team 
[email protected]'s password: 
1.py                                          100%  134   261.3KB/s   00:00    
variables.py                                  100%  377   949.2KB/s   00:00    
abc.txt                                       100%    0     0.0KB/s   00:00    
ath.html                                      100%  199KB  41.8MB/s   00:00    
[email protected]:~$

ここではscp、ローカルシステムでコマンドを使用して、「gaurav」という名前のディレクトリをあるリモートサーバーから別のリモートサーバーに転送しました。

リモートシステムからローカルシステムにファイルを転送する

scpコマンドを使用して、ファイルまたはディレクトリをリモートシステムからローカルシステムに簡単に転送できます。簡単に言うと、scp コマンドを使用して、リモートサーバーからローカルシステムに複数のファイルまたはディレクトリをダウンロードできます。

一般的な構文:

scp [email protected]_host:/files/file.txt /[folder_of_local_system]

出力:

[email protected]:~$ scp [email protected]:how.txt .
[email protected]'s password: 
how.txt                                                                                                             100%   11     0.1KB/s   00:00    
[email protected]:~$

ここでは、ファイルをリモートサーバーからホームディレクトリにダウンロード(コピー)しました。したがって、ドット(.)を使用して、ファイルをホームディレクトリにコピーするコマンドを指定しました。

サンプル出力:

[email protected]:~$ ls -l how.txt
-rw-r--r-- 1 gaurav gaurav 11 Oct  6 09:49 how.txt
[email protected]:~$ 

ここで、ファイルがリモートサーバーからホームディレクトリにコピーされます。

同様にscp、適切なオプションを指定したコマンドを使用して、リモートサーバーから複数のファイルまたはディレクトリをダウンロードできます。

ファイルを圧縮して転送を高速化

大きなファイルの転送には時間がかかる場合があります。この問題はscp-C(大文字のC)オプションを指定してコマンドを使用しているときに対処できます。

この-C オプションを使用すると、大きなサイズのファイルが圧縮され、転送が高速化され、時間が節約されます。

このオプションの興味深い事実の1つは、ファイルが宛先システムに元のサイズでコピーされますが、転送プロセス中にサイズが圧縮されて、より高速な転送が可能になることです。したがって、圧縮はネットワーク上でのみ実行されます。

一般的な構文:

scp -C [file_name] [email protected]_host:[target_folder]

違いを理解するために比較例を見てみましょう。

-Cオプションなしで転送:

[email protected]:~$ scp -rv dlink [email protected]:team
Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/trinity/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22.
debug1: Connection established.

debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 7516504, received 4008 bytes, in 74.6 seconds
Bytes per second: sent 100693.7, received 53.7
debug1: Exit status 0
[email protected]:~$ 

上記の出力から、転送に必要な時間は74.6秒であることがわかります。-Cオプションを使用して同じファイルを転送してみて、違いを観察します。

-Cオプションを使用した転送:

[email protected]:~$ scp -Crv dlink [email protected]:team
Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/trinity/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22.
debug1: Connection established.
.
.
webupload.img                                                                                                       100% 1834KB  98.7KB/s   00:18    
Sending file modes: C0664 1877552 router.img
Sink: C0664 1877552 router.img
router.img                                                                                                          100% 1834KB 100.3KB/s   00:18    
Sink: E
Sending file modes: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip
Sink: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip
DSL-2750U-Release-IN-T-01.00.07.zip                                                                                 100% 3666KB 218.5KB/s   00:16    
Sink: E
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 7518864, received 3828 bytes, in 51.0 seconds
Bytes per second: sent 100245.4, received 51.0
debug1: Exit status 0
debug1: compress outgoing: raw data 7511925, compressed 7513136, factor 1.00
debug1: compress incoming: raw data 1467, compressed 999, factor 0.68
[email protected]:~$

ここ-Cで、scpコマンドでオプションを使用すると、ネットワーク経由でファイルを圧縮できるため、時間の節約になるオプションであることが簡単にわかります。

ファイル転送に別のsshポートを使用する

scpコマンドを使用している間、デプロイされるデフォルトのポートはですport 22。ユーザーは、このポートの選択を自由にカスタマイズできます。あなたは使うことができ-Pて(大文字のPオプション)をscpお好みのポートを使用するためのコマンド。

一般的な構文:

cp -P [new_port_number] [file_name/directory_name] [email protected]:[destination_folder]

例:

scp -P 4248 dlink [email protected]:team

上記のコマンドを使用して、ファイルはリモートサーバーに転送されます。ただし、今回は、使用されるポートport 4248がデフォルトの代わりになりますport 22

結論

このチュートリアルを終えた後scp、あるシステムから別のシステムにファイルを転送またはコピーするために使用されるコマンドの動的な性質について学びました。このオプションは、リモートサーバーからファイルまたはディレクトリをダウンロードするためにも使用できます。したがって、scp複数のシステムとリモートサーバーを同時に処理する必要がある場合、コマンドはファイル転送に非常に役立つと結論付けることができます。


2020年のUbuntu20.04の15のベストテーマ

2020年のUbuntu20.04の15のベストテーマ

多くの新しい更新されたテーマは、Ubuntu20.04の新しいGNOMEデスクトップにインストールする準備ができています。ここに2020年の最高のubuntuテーマのリストがあります

Ubuntuの「Alt-Tab」でWindowsのグループ化を解除する方法

Ubuntuの「Alt-Tab」でWindowsのグループ化を解除する方法

Ubuntuでは、デフォルトで、Windowsの代わりにアプリケーションを切り替えることができます。これを元に戻し、UbuntuのAlt-Tabでタブのグループ化を解除する方法は次のとおりです。

Ubuntu20.04に最適な10以上のGNOME拡張機能

Ubuntu20.04に最適な10以上のGNOME拡張機能

Gno-Menu、Extended Gesturesなどの人気のある拡張機能の多くは、Ubuntu20.04では機能しません。したがって、ここに最も効果的なGNOME拡張機能のリストがあります

7最高のUbuntuダイナミック壁紙アプリ

7最高のUbuntuダイナミック壁紙アプリ

アプリを使用してUbuntuのネイティブ壁紙をスライドショーすることはいつでもできますが、壁紙を動的にダウンロードして設定するためのアプリをいくつか紹介します。

Ubuntuのルートスーパーユーザーの違い

Ubuntuのルートスーパーユーザーの違い

Ubuntuのルートスーパーユーザーの違いは何ですか?さて、ここでカバーしてもらいます。

Ubuntu12.04用のTeamViewer8をインストールします

Ubuntu12.04用のTeamViewer8をインストールします

このビデオでは、完全なガイド付きのubuntu12.04システム用のTeamViewer8をインストールして使用します。しかし、これはウィンドウでも同じように機能します。

2020年のUbuntu用の最高の無料ビデオエディタ

2020年のUbuntu用の最高の無料ビデオエディタ

すべての綿毛を除いて、ここにあなたが素晴らしいビデオを作成するために使うことができるUbuntuのための最高の無料のビデオエディタのリストがあります。

Linuxを使い始めるための9つの基本コマンド

Linuxを使い始めるための9つの基本コマンド

Linuxのハウツーガイドでは、ターミナルで特定の操作を実行することを期待していることがよくありますが、これは最初は恐ろしいように思えます。しかし、心配する必要はありません。このLinuxコマンドのチートシートでは、ターミナルを開いていくつかの便利なコマンドを発行するプロセスについて説明します。

ArchLinuxでパッケージをインストールおよび削除する方法

ArchLinuxでパッケージをインストールおよび削除する方法

Arch Linuxにパッケージをインストールしたいのですが、方法がわかりませんか?多くの人は、DebianベースのディストリビューションからArchに最初に移行するときにこの問題に直面します。ただし、パッケージマネージャーを使用して、Archベースのシステムでパッケージを簡単に管理できます。

UbuntuからAndroidへの5つの最高のWi-Fiファイル転送アプリ

UbuntuからAndroidへの5つの最高のWi-Fiファイル転送アプリ

FTP、ピアツーピアファイル転送、Wi-Fi転送などのメカニズムを使用すると、AndroidとUbuntuの間でファイルを頻繁に共有する場合に時間を節約できます。