scp でなく rsync を使う


scp でファイルをサーバにコピーしようとしたときに、 ある特定のディレクトリ(キャッシュなど)を除外してコピーしようと思った時にやった方法です。 AWS EC2 に対して行いました。 ひとつの git リポジトリ にサーバサイドのコードを全部まとめて入れているので、 部分的にサーバにコピーしたかったんです。

コマンド

説明

上のコマンドでは、 あるディレクトリを除外してリモートマシンにコピーします。 こうすると、 リモートマシンに /home/ec2-user/app ディレクトリ が作成され、 そこに中身がコピーされます。

以下がオプション等の簡単な説明です。

rsync

リモートシェルというのを使ってリモートマシンにアクセスするコマンドです。 基本的に ssh を使うそうです。

-r

recursive オプション です。 再帰的に処理をするので、 ディレクトリごとコピーできます。

-v

よくある verbose オプション です。 詳細情報を表示します。

-e

リモートシェルを指定するオプションです。 ここでは ssh -i ~/sshkeys/key.pem を利用して秘密鍵でアクセスしています。

–exclude

除外するファイルを指定します。 ここでは3つのパターンを指定しています。

単純な場合のコマンド

ディレクトリごとコピーするだけなら scp で次のようにできます。