目次
scp
でファイルをサーバにコピーしようとしたときに、 ある特定のディレクトリ(キャッシュなど)を除外してコピーしようと思った時にやった方法です。 AWS EC2 に対して行いました。 ひとつの git リポジトリ にサーバサイドのコードを全部まとめて入れているので、 部分的にサーバにコピーしたかったんです。
コマンド
1 |
rsync -rv -e 'ssh -i ~/sshkeys/key.pem' --exclude '**/__pycache__' --exclude '**/*.pyc' --exclude '**/.idea' ~/project/app ec2-user@12.34.56.78:/home/ec2-user/ |
説明
上のコマンドでは、 あるディレクトリを除外してリモートマシンにコピーします。 こうすると、 リモートマシンに /home/ec2-user/app
ディレクトリ が作成され、 そこに中身がコピーされます。
以下がオプション等の簡単な説明です。
rsync
リモートシェルというのを使ってリモートマシンにアクセスするコマンドです。 基本的に ssh
を使うそうです。
-r
recursive オプション です。 再帰的に処理をするので、 ディレクトリごとコピーできます。
-v
よくある verbose オプション です。 詳細情報を表示します。
-e
リモートシェルを指定するオプションです。 ここでは ssh -i ~/sshkeys/key.pem
を利用して秘密鍵でアクセスしています。
–exclude
除外するファイルを指定します。 ここでは3つのパターンを指定しています。
単純な場合のコマンド
ディレクトリごとコピーするだけなら scp
で次のようにできます。
1 |
scp -r user@remote:/copy/from /copy/to |