リモートにファイルをディレクトリごとアップロードするためにscpコマンドを使うことがあります。
$ scp -r -i [鍵].pem [ローカルファイルパス] ec2-user@[アップロード先IPアドレス]:[アップロード先ディレクトリパス]
Permission deniedが出る場合がある
$ scp -r -i [鍵].pem [ローカルファイルパス] ec2-user@[アップロード先IPアドレス]:[アップロード先ディレクトリパス] scp: /var/www/html/wordpress: Permission denied
このとき原因が二つあり、一つはアップロード先にアップロードのためのディレクトリが用意されていないこと、もう一つは権限の問題です。
一つ目に関してはアップロード先のディレクトリにアップロードするディレクトリと同名のディレクトリを用意してあげることで解決します。
作る前
$ scp -r -i [鍵].pem wordpress ec2-user@[アップロード先IPアドレス]:/var/www/html scp: /var/www/html/wordpress: Permission denied
作った後
$ scp -r -i [鍵].pem wordpress ec2-user@[アップロード先IPアドレス]:/var/www/html scp: /var/www/html/wordpress/wp-config.php: Permission denied scp: /var/www/html/wordpress/wp-trackback.php: Permission denied scp: /var/www/html/wordpress/wp-cron.php: Permission denied scp: /var/www/html/wordpress/index.php: Permission denied scp: /var/www/html/wordpress/wp-activate.php: Permission denied scp: /var/www/html/wordpress/xmlrpc.php: Permission denied scp: /var/www/html/wordpress/wp-config-sample.php: Permission denied scp: /var/www/html/wordpress/wp-links-opml.php: Permission denied scp: /var/www/html/wordpress/readme.html: Permission denied scp: /var/www/html/wordpress/wp-mail.php: Permission denied scp: /var/www/html/wordpress/wp-load.php: Permission denied scp: /var/www/html/wordpress/wp-settings.php: Permission denied scp: /var/www/html/wordpress/wp-comments-post.php: Permission denied scp: /var/www/html/wordpress/wp-admin: Permission denied scp: /var/www/html/wordpress/wp-includes: Permission denied scp: /var/www/html/wordpress/wp-login.php: Permission denied scp: /var/www/html/wordpress/wp-blog-header.php: Permission denied scp: /var/www/html/wordpress/license.txt: Permission denied scp: /var/www/html/wordpress/wp-content: Permission denied scp: /var/www/html/wordpress/wp-signup.php: Permission denied
二つ目の問題については、アップロードするディレクトリのローカルにおける権限と、アップロード先に用意したディレクトリの権限の両方を気にしてあげる必要があります。一時的に777にしてあげるのも手かと思います(ほんとは危険ですが・・・)。
権限変更
$ chmod 777 wordpress/
これで上記のscpコマンドでアップロードできるはずです。