Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

scpコマンド: ローカルのデータベースをEC2データベースにダンプしてロード

updated on 2019-08-06

scpを使ってローカルDBをEC2にダンプ


環境

Rails 5.2

ruby 2.4

AmazonLinux 2

gem 'yaml_db'


手順1 yaml_dbを導入

# Gemfile
gem 'yaml_db'
$ bundle install


手順2 コピーしたいデータをダンプ&ロード

yaml_db の使い方はこんな感じ

$ rake db:dump RAILS_ENV="development"
(config/db/data.yml will be created!)

$ rake db:data:load RAILS_ENV="production"
(production.sqlite3 will be created!)


今回は、ローカルのpostgreSQLデータベースEC2直入れのpostgreSQLデータベースにダンプする


2-1. ローカルのデータベースをダンプしてEC2にアップロード

ローカル
$ cd ~/DIARY/dragonarrow # 自分の作業ディレクトリに移動
$ rake db:dump RAILS_ENV="development" # development環境のDBデータをダンプ
$ scp -i ~/.ssh/AWS/dragonarrow_key_rsa ~/DIARY/dragonarrow/db/data.yml tatsuya@xx.xx.xx.xx:/var/www/rails/froala-blog/db/
data.yml                                      100%  516KB   2.0MB/s   00:00

scpはディレクトリごとアップロードしたい時は -rをつける


2-2. EC2側で、アップロードされたdata.ymlを読み込む

EC2
ec2にssh
$ cd /var/www/rails/froala-blog/
$ bundle exec rake db:data:load RAILS_ENV="production"


終了です。無事ロードされました。




じゃあ逆はどうするの??

ローカルのpostgreSQLデータベースEC2直入れのpostgreSQLデータベースにダンプする


①. EC2のデータベースをダンプ

EC2
ec2にssh
$ cd /var/www/rails/froala-blog/
$ bundle exec rake db:dump RAILS_ENV=production


②. EC2のダンプファイルをダウンロードして読み込む

ローカル
$ scp -i ~/.ssh/AWS/dragonarrow_key_rsa tatsuya@xx.xxxx.xx:/var/www/rails/froala-blog/db/data.yml ~/DIARY/dragonarrow/db/
$ rake db:data:load RAILS_ENV="development" # development環境のDBに読み込む

scpはディレクトリごとアップロードしたい時は -rをつける


最後に


scpコマンドを使うのは、いつもローカルからです。

多分初心者は、わけわからなくなるかもしれませんが、アップロード・ダウンロードどちらもローカルからしかscpコマンドは使わないので、覚えておくとわかりやすいと思います。