updated on 2019-06-16
ローカル:Mac
Amazon EC2:Amazon Linux
scp -i [公開鍵ファイルのパス] [ユーザ名@ドメイン]:[送信元EC2ファイルパス] [転送先ローカルファイルパス]
# 例 scp -i /keys/hoge.pem user@ec2-xxxx.com:/sqls/hoge.sql /Desktop
scp -i [公開鍵ファイルのパス] [送信元先ローカルファイルパス] [ユーザ名@ドメイン]:[転送先EC2ファイルパス]
# 例 scp -i /keys/hoge.pem /Desktop/hoge.sql user@ec2-xxxx.com:/sqls
筆者の場合は
$scp -i ~/.ssh/EC2/ec2_key_rsa ~/DIARY/dragonarrow/latest.dump tatsuya@xx.xx.xx.xx:/var/www/rails/myApp/
これで /var/www/rails/myApp配下にlatest.dumpが作成されました。
ec2-userでやるとmyAppの権限でエラーを出したため、権限ユーザーでアクセスしました。
原因が二つあり、一つはアップロード先にアップロードのためのディレクトリが用意されていないこと、もう一つは権限の問題。
一つ目に関してはアップロード先のディレクトリにアップロードするディレクトリと同名のディレクトリを用意してあげることで解決する。
二つ目の問題については、アップロードするディレクトリのローカルにおける権限と、アップロード先に用意したディレクトリの権限の両方を気にしてあげる必要がある。権限を持つuserを指定してscpするか、一時的に777にしてあげるのもあり(ほんとは危険・・・)
$ chmod 777 myApp/
scpコマンド便利、ありがたや。