データ移行で使える rsync の記述方法色々。
rsync の記述方法というより ssh の書き方みたいな話だけど、メモ。
一応前提っぽいものは
- AWS EC2 から、ロリポップ チカッパプラン サーバーへの移行(同期)
- EC2 への接続は .pem ファイルを使用。
- 同期というか、サーバー引っ越しの際に使ったコマンドのメモ。
こんな感じで。
1.移行先サーバーにログインしている状態で rsync
ssh -i 鍵 ユーザー@host
ロリポサーバーに接続している状態で、rsync コマンドを実行。
$ rsync -avz -e "ssh -i /home/users/xxx/xxx/.ssh/key.pem" ec2-user@host:/var/www/html/ /home/users/xxx/xxx/web/
オプションの -e のあとに ssh -i として key.pem を使用して 指定しているログインユーザーで EC2 に接続。
EC2 の /html/ の中身を、ロリポサーバの /web/ にコピー(同期)。
ssh -l ユーザ -i 鍵 host
ロリポサーバーに接続している状態で、rsync コマンドを実行。
$ rsync -avz -e "ssh -l ec2-user -i /home/users/xxx/xxx/.ssh/key.pem" host:/var/www/html/ /home/users/xxx/xxx/web/
オプションの -e のあとに ssh -l として、ログインユーザーを指定し、-i として key.pem を使用して EC2 に接続。
EC2 の /html/ の中身を、ロリポサーバの /web/ にコピー(同期)。
長い、ね。
2.移行元サーバーにログインしている状態で rsync
EC2 に接続している状態で、rsync コマンドを実行。
$ rsync -avz /var/www/html/ -e "ssh -p 2222" user@host:/home/users/xxx/xxx/web/
同期するディレクトリ /html/ を指定し、オプションの -e のあとに ssh −p(ロリポサーバーはポート指定)として、指定しているユーザーでロリポサーバーに接続。
このあと ssh の password を聞かれ、入力完了すれば、/web/ にコピー(同期)される。
3.どちらにもログインせずに両方リモートにすると怒られる
ふと、なんて言われるのか、もしかしたら出来ちゃうんじゃないかと思ってコマンドを実行してみたけど、怒られた。
rsync -avz -e "ssh -i /home/users/1/chicappa.jp-yuichon/.ssh/wp_blog.pem" root@ec2-54-248-244-139.ap-northeast-1.compute.amazonaws.com:/var/www/html/ chicappa.jp-yuichon@ssh101.lolipop.jp:/home/users/1/chicappa.jp-yuichon/web/
The source and destination cannot both be remote.
rsync error: syntax or usage error (code 1) at main.c(981) [receiver=2.6.8]
あとがき
もっと rsync について詳しく調べるのであれば、以下が参考に。
今回はサーバー移行にあたって、rsync を使ったのだけど、同期で使ったりするのであれば、–delete とか、–exclude とか便利なオプションが他にもあるので、もうちょっと使ってみたいなと。