1. はじめに
scp
コマンドというのは、ssh
コマンドを内部で使って、ローカルホストとリモートホスト間でファイルをコピーするためのコマンドです。ssh
コマンドは SSH という暗号化された安全なプロトコルを使って通信を行うコマンドなので、scp
コマンドも安全であるということになっていました。
しかし、OpenSSH 8.0登場、scpよりsftpやrsyncプロトコルの利用を という記事にあるように、現在では scp
コマンドが推奨されないようですので、その代わりに使える rsync
コマンドとそのオプションを紹介します。
rsync
コマンドもローカルホストとリモートホスト間でファイルをコピーするためのコマンドですが、どちらかというとバックアップ目的で使う印象がありましたし(前回からの差分だけコピーとかできます)、デフォルトでは暗号化が行われません。そのため 「ちょっとしたコピー」であれば scp
コマンドを使う人が多かったのではないでしょうか。rsync
でもオプションを使えば ssh の暗号化が使えますので、多少面倒ですが今後はこちらを使いましょう。
2. scp の代わりとしての rsync コマンドとそのオプション
rsync
コマンドを使って、ローカルにあるファイルをリモートサーバーにコピーする場合のコマンドは以下となります。
(rsync コマンドのオプションはいろいろあるのですが、便利そうなのを付けておきました)
$ rsync -avzP -e <ローカルのファイルパス> <ユーザー名>@<サーバーのホスト名 or IPアドレス>:<パス>
SSHのポート番号を指定したい場合は、以下となります。
$ rsync -avzP -e "ssh -p <ポート番号>" <ローカルのファイルパス> <ユーザー名>@<サーバーのホスト名 or IPアドレス>:<パス>
リモートサーバー上のファイルをローカルにコピーする場合は、「ローカルのファイルパス」と「<ユーザー名>@<サーバーのホスト名 or IPアドレス>:<パス>」の位置を逆にします。
上記で指定しているオプションは以下となります。
オプション | 説明 |
---|---|
-a |
|
-v |
|
-z |
|
-P |
|
-e |
|