【Linux】scpコマンドの使い方


この記事はプロモーションを含みます。

Linux

Linuxにおけるscpコマンドの使用方法を解説します。

scpコマンドについて

scpコマンドは、通常のcpコマンドと異なり、以下のようなことが出来ます。

  • ローカルマシン(コマンドを実行する側)とリモートマシン間でのコピー
  • リモートマシン同士でのコピー

また、通信にはsshを使用するため、通信内容については暗号化されています。

その他、sshコマンドと同様に、コマンドを使用する際、下記のような注意点があります。

コマンド実行時にパスワードの入力を求められる

下記のように、リモートマシンに接続する際、機器のパスワードを求められます。
この場合、パスワードを入力し、Enterキーをクリックすることで先に進めます。

[root@localhost ~]# scpコマンド
root@192.168.56.105's password:
初回実行時にフィンガープリントの登録を求められる

下記のように、リモートマシンに接続する際、フィンガープリントの登録を求められます。
この場合、「yes」と入力し、Enterキーをクリックすることで先に進めます。

[root@localhost ~]# scpコマンド
The authenticity of host '192.168.56.105 (192.168.56.105)' can't be established.
ECDSA key fingerprint is SHA256:a6natbKJ32I7Cxyz/MRoitKc5Z/nyIwLUwfaEOZeDtE.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.56.105' (ECDSA) to the list of known hosts.

scpコマンドの書式とオプション

ここでは、scpコマンドの書式とオプションを説明します。

書式

scpコマンドの基本的な書式です。

scp [オプション] コピー元 コピー先

オプション

scpコマンドで使えるオプションです。(使用頻度が低いものは省略しています)

オプション説明
-cデータの暗号化方式を指定する
-Cデータを圧縮してコピーする
-F SSH設定ファイルSSHの設定ファイルを指定する
-l 帯域通信帯域を制限する(Kbit/s単位)
-oSSHのオプションを使用する
-pコピー元のタイムスタンプやパーミッションを保持する
-P ポート番号接続に使用するポートを指定する
-q実行状況などの情報を表示しない
-rディレクトリを再帰的にコピーする
-i 秘密鍵ファイルssh接続に使用する鍵ファイルを指定する
-v詳細な実行状況を表示する

オプションを使用しない例

オプションを使用せずに、コピーを行う例です。

ローカルからリモートへコピー

ローカルマシンからリモートマシンへコピーを行います。

scp コピー元 [接続先ユーザ]@ホスト名(IPアドレス):コピー先
[root@localhost workspace]# scp test_file_01.txt root@192.168.56.105:/home/workspace/
root@192.168.56.105's password:
test_file_01.txt                              100%    0     0.0KB/s   00:00

リモートからローカルへコピー

リモートマシンからローカルマシンへコピーを行います。

scp [接続先ユーザ]@ホスト名(IPアドレス):コピー元 コピー先
[root@localhost workspace]# scp root@192.168.56.105:/home/workspace/test_file_01.txt /home/workspace/
root@192.168.56.105's password:
test_file_01.txt                              100%    0     0.0KB/s   00:00

リモートマシン同士でコピー

リモートマシンからリモートマシンへコピーを行います。

scp [接続先ユーザ]@ホスト名(IPアドレス):コピー元 [接続先ユーザ]@ホスト名(IPアドレス):コピー先

ここでは、例としてリモートマシン上で「test_file_01.txt」を「test_file_02.txt」にリネームしつつコピーを行っています。
また、リモートマシン同士では、コピー元と先の2回パスワードを求められるようです。

[root@localhost workspace]# scp root@192.168.56.105:/home/workspace/test_file_01.txt root@192.168.56.105:/home/workspace/test_file_02.txt
root@192.168.56.105's password:
root@192.168.56.105's password:
test_file_01.txt                              100%    0     0.0KB/s   00:00
Connection to 192.168.56.105 closed.

-r オプションでディレクトリのコピー

[-r]オプションを使用することで、ディレクトリを再帰的にコピーすることが可能です。

書式

[-r]オプションを使用する場合の書式になります。

scp -r コピー元のパス コピー先のパス

実行例

下記は、ローカルマシンの「test_dir_01」ディレクトリをディレクトリ配下のファイルも含めて、リモートマシンにコピーする例です。

[root@localhost workspace]# scp -r test_dir_01/ root@192.168.56.105:/home/workspace/
root@192.168.56.105's password:
test_file_01.txt                              100%    0     0.0KB/s   00:00

-q オプションで実行状況を表示せずコピー

[-q]オプションを使用することで、コマンドの実行状況を表示せずにコピーを行うことが可能です。
シェルとかに組み込む際に使えそうなオプションですね。

書式

[-q]オプションを使用する場合の書式になります。

scp -q コピー元のパス コピー先のパス

実行例

下記のように実行状況が表示されずに処理が行われます。

[root@localhost workspace]# scp -q test_file_01.txt root@192.168.56.105:/home/wo
rkspace/
root@192.168.56.105's password:

コメント

タイトルとURLをコピーしました