AWS EC2のサーバーにscpでファイルをアップロード/ダウンロードする方法について説明します。
- scpでファイルをアップロード/ダウンロードできない。
- Permission deniedというエラーが発生する。
ファイルをアップロードする手順
1画面左下の検索欄にcmdと入力してコマンドプロンプトを起動します。現在いるディレクトリがC:\Users\user\だと仮定します。
2AWSからダウンロードしたec2key.pemの絶対パスを確認します。ここでは、C:\Users\user\.ssh\ec2key.pemとします。
3アップロードしたいファイルの絶対パスを確認します。ここではD:\data\test.txtとします。
4アップロードするディレクトリを/home/awsuser/とします。コマンドを以下のように入力し、実行します。
「scp -i 秘密鍵のパス アップロードするファイルのパス ユーザー名@ホスト名:アップロード先のディレクトリのパス」という書き方になります。
scp -i C:\Users\user\.ssh\ec2key.pem D:\data\test.txt awsuser@ec2-xx-xx-xx-xx.compute-1.amazonaws.com:/home/awsuser/
scp -i ec2key.pem test.txt awsuser@ec2-xx-xx-xx-xx.compute-1.amazonaws.com:/home/awsuser/
フォルダごとアップロードするには、以下のように-rオプションを付け加えます。
scp -i C:\Users\user\.ssh\ec2key.pem -r D:\data\testfolder awsuser@ec2-xx-xx-xx-xx.compute-1.amazonaws.com:/home/awsuser/
5以下のように表示されたらアップロード成功です。
test.text 100% 3 0.0KB/s 00:00
ファイルをダウンロードする手順
1画面左下の検索欄にcmdと入力してコマンドプロンプトを起動します。現在いるディレクトリがC:\Users\user\だと仮定して、説明を続けます。
2AWSからダウンロードしたec2key.pemの絶対パスを確認します。ここでは、C:\Users\user\.ssh\ec2key.pemとします。
3ダウンロードしたいファイルのパスを確認します。ここでは/home/awsuser/とします。
4現在いるディレクトリ(C:\Users\user\)にダウンロードします。コマンドを以下のように入力し、実行します。
「scp -i 秘密鍵のパス ユーザー名@ホスト名:ダウンロードするファイルのパス ファイルを保存するディレクトリのパス」という書き方になります。
scp -i C:\Users\user\.ssh\ec2key.pem awsuser@ec2-xx-xx-xx-xx.compute-1.amazonaws.com:/home/awsuser/test.txt ./
scp -i ec2key.pem awsuser@ec2-xx-xx-xx-xx.compute-1.amazonaws.com:/home/awsuser/test.txt ./
また、保存先のディレクトリを/にすると”Permission denied”というエラーが発生します。./にしてください。
フォルダごとダウンロードするには、以下のように-rオプションを付け加えます。
scp -i C:\Users\user\.ssh\ec2key.pem -r awsuser@ec2-xx-xx-xx-xx.compute-1.amazonaws.com:/home/awsuser/testfolder ./
5以下のように表示されたらダウンロード成功です。C:\Users\user\にダウンロードしたファイルがあるはずです。
test.text 100% 3 0.0KB/s 00:00
余談
AWS EC2の1年間の無料期間がそろそろ終わるのですが、最初の1ヶ月くらい触っただけで、ずっと放置してました。インスタンスを停止するだけだと料金が発生し続けて、インスタンスを終了するとデータが消えるらしいので、一旦、サーバーからファイルをダウンロードすることにしました。今回は、その方法について調べたことを記事にまとめました。参考になれば幸いです。