【4】GCP(GCE)のVMインスタンスにファイルを転送する(Cyberduck, scpコマンド)
- 1. 公式サイト
- 2. 目標
- 3. 注意点
- 4. 参考サイト様
- 5. ファイル転送方法の種類
- 6. Cyberduck(Mac)を使う
- 7. Linux の scp コマンドを使う
- 8. ファイル転送のパーミッション
- 9. 関連リンク
これはHerokuからGCP無料枠にRailsアプリを引越ししたときにやったことシリーズの【3】の続きです。
GCE に 作成した VM インスタンスに Docker などのインストールをし、設定を行ったところです。
今回はソースコードや設定ファイルなどを転送する方法について書いてみたいと思います。
1. 公式サイト
2. 目標
3. 注意点
- 参考サイト様によると、
GCP の Google Cloud Storage の無料枠を使う時は、バケット作成時に無料枠対象のリージョンを指定しないと有料になるようです。
4. 参考サイト様
本当に参考になりました。ありがとうございます!
- GCP の Google Cloud Storage 無料枠を使うには注意が必要 - 動かざることバグの如し
- SCP の使い方(permission で二度とはまらないために) - Qiita
- Linux – How to Securely Copy Files Using SCP examples
5. ファイル転送方法の種類
GCE のインスタンスにファイルを転送する方法としては次の項目が代表的なものとして挙げられます。
CIなどを使用しているケースはここでは扱いません。
- Github などの git のホスティングサイトを経由してファイルを pull する
- Linux の scp コマンドを使う
- gcloud の scp コマンドを使う
- Google Cloud Storage にアップロードし、インスタンスにダウンロードする
- FTP ファイル転送ソフト(Cyberduck など)を使う
私は Github からソースコードを pull しています。
.gitignore に入っているような.env
やmaster.key
ファイルなどは Cyberduck を使って転送しています。
今の所これで事足りています。
当エントリでは Cyberduck と scp コマンドを使う方法について触れてみたいと思います。
6. Cyberduck(Mac)を使う
前提としてCyberduck 公式サイトからダウンロードしてインストールされているとします。
私の PC が Macbook なので Mac 前提で説明いたします。
起動後、左上の「新規作成」ボタンをクリックします。
ダイアログの転送方法のリストから、
「SFTP(SSH による暗号化 FTP)」を選択します。
以下の項目を入力し、「接続」ボタンをクリックします。
項目 | 入力内容 |
---|---|
サーバ | GCE のインスタンスの外部 IP アドレス |
ポート | 22 番を塞いだ代わりに開けたポート番号※このシリーズ【2】参照 |
ユーザー名 | SSH 接続する時のユーザー名 |
SSH Private Key | ~/.ssh/[SSH ログインの時に使う認証鍵の名前] |
接続できるとユーザーのディレクトリが表示されます。
デフォルトだと隠しファイルは表示されないので、
「表示」→「不可視ファイルを表示」と
「環境設定」→「ブラウザ」→「'.'で始まるファイルを表示」にチェックしておくとよいです。
これでファイル転送したり、ディレクトリを作ったり出来るようになりました。
ファイルを転送する場合、画面の上の方の「アクション」ボタンを押して
「アップロード」を選択するとできます。
7. Linux の scp コマンドを使う
ローカルのファイルをリモートにコピーする時はこのような書式になります。
scp ファイル名 接続先:パス名
次の例のように実行できます。
ここで使っているオプションは次の通りです。
・ -i は秘密鍵ファイル
・ -P はポート番号
・ -r はディレクトリ内のデータを再帰的にコピーする
$scp -i ~/.ssh/google_compute_engine -P 40022 test.txt sakura@[GCEの外部IPアドレス]:./
カレントディレクトリのtest.txt
を sakura ユーザーのディレクトリの直下にコピーしています。
$scp -i ~/.ssh/google_compute_engine -P 40022 -r test sakura@[GCEの外部IPアドレス]:./
カレントディレクトリのtest
ディレクトリと配下のデータを sakura ユーザーのディレクトリの直下にコピーしています。
8. ファイル転送のパーミッション
Cyberduck でも scp コマンドでも、何もしないとファイルを転送する時は SSH 接続したユーザーのディレクトリ配下にしか転送出来ません。
他のディレクトリに転送しようとするとパーミッションエラー(Permission denied)になるからです。
自分一人でサーバーを使っている分にはディレクトリのパーミッションを 777 に変更してしまうのが手っ取り早いやり方だと思います。
$sudo chmod -R 777 /home/test
複数の人が使っている場合は(絶対に運用ルールを決めるべきですが)
777 にするよりは、一時的に root 権限でログインし、ファイルをユーザーディレクトリ → コピー先にコピーする
という方法のほうがいいかなあという気がします。
今回はこれで終わりです。
次回はサーバー上でDockerコンテナを動かしてみたいと思います。
9. 関連リンク
- 【1】HerokuからGCP無料枠にRailsアプリを引越ししたときにやったこと(GCE+Docker+Rails+Puma+PostgreSQL+Nginx+Let's Encrypt)
- 【2】GCP(GCE)で無料のVMインスタンスを作る(Always Free無料枠、外部IPアドレス取得、SSH接続、22番ポート対応)
- 【3】GCEのVMインスタンスにDockerとDocker Composeをインストールする。他設定(スワップ領域追加、タイムゾーン設定)
- 【4】GCP(GCE)のVMインスタンスにファイルを転送する(Cyberduck, scpコマンド)
- 【5】GCP(GCE)でRailsアプリを外部IPアドレス+3000番ポートで動かしてみる(環境変数COMPOSE_FILE、GCE+Docker+Rails+Puma+PostgreSQL)
- 【6】DNSテスト用に無料の独自ドメインを取得してGoogle Cloud DNSでネームサーバの設定をする(GCE,freenom,http+独自ドメイン+ポート3000でアクセスする)
- 【7】SteveLTN/HTTPS-PORTALを使ってLet's Encryptで全自動SSL対応を行う(GCP(GCE),Rails,Nginxリバースプロキシ,Docker)