こんにちは,むぎやんです.
前回に引き続きsshとrsyncでアップロードです.今回はrsync編です.コマンド1つで差分ファイルの転送(アップロード)完了までやってみます.
下準備
基本的なコマンド
今回はローカルのファイルをサーバーに転送するのでコマンドは,
$ rsync [オプション] SRC ホスト名:DEST
ホスト名
: ssh編で作成したconfigファイルに記述したホスト名.SRC
: 転送元(ローカルファイル).DST
: 転送先.
注意事項
rsyncの説明をしているサイトでは必ずといっていいほど書かれている注意事項としてSRC
の末尾にスラッシュを付ける付けない問題があります.今回はGatsbyでビルドしてできたpublic
ディレクトリの中身を丸々転送したいのでスラッシュを付けます.
$ rsync [オプション] ~/xxxxx/public/ ホスト名:DEST
(ちなみにpublicディレクトリそのものを転送したい時はスラッシュを付けません.)
オプション
今回使うオプションです.
-a
: アーカイブモード(-rlptgoD)と同じ.基本付ける.-c
: 転送の要・不要をチェックサムで判断する.-v
: 転送内容を表示.--stats
: ファイル数や転送サイズを表示する.--delete
: SRCに無いファイルをDSTから削除する.-n
: 予行演習モード.実際には転送しない.
転送
予行演習
-n
オプションを忘れないように.
$ rsync -acvn --stats --delete ~/xxxxx/public/ ホスト名:~/yyyyy/
転送(予定の)内容が表示されるので確認します.
実際に転送
$ rsync -acv --stats --delete ~/xxxxx/public/ ホスト名:~/yyyyy/
予行演習との違いは-n
オプションのみです.
スクリプト
コマンド打ち間違えたりするとこわいのでコマンドラインからえいやっとできるように,package.json
に追記します.
{
...
"scripts": {
"build": "gatsby build",
"develop": "gatsby develop",
...
"deploy": "rsync -acv --stats --delete ~/xxxxx/public/ ホスト名:~/yyyyy/" },
...
}
$ yarn deploy
動きました.
差分の量にもよりますが,FTPとかでアップロードしてた頃と比べると格段に早く転送が終わります.(20分の1とか30分の1ぐらいの時間で.)