scp より rsync

(2024-03-30)

scp では無理がある

シェルスクリプトでローカルから xserver へと scp していましたが、実行を見ていると 6 MB もあるフォントを毎回アップしています。

今のところコンテンツはとても軽いので scp でもあっという間ですが、動画を scp するようになるとこの方法では無理と気づきました。

なので rsync です。

最近では、xserver と GitHub を連携することもできるようですが、ローカルから rsync する方がずっと簡単です。

xserver でのキー生成時にパスフレーズをブランクにする

xserver でキーを作成する際に、セキュリティのためパスフレーズを要求されますがそれをブランクにして生成すると、 ローカルから ssh の際にパスフレーズを要求されません。

Terminal window
rsync -avzu -e 'ssh -p 10022 -i ~/.ssh/moheno.key' --delete --checksum ~/astroblog/dist/* moheno@sv14154.xserver.jp:~/moheno.xsrv.jp/public_html/

このようにすると、おそらく差分だけをアップロードするようになると思います。

xserver と GitHub の両方へコンテンツをアップするシェルスクリプトは、

#!/bin/sh
# ビルドする
cd ~/astroblog
npm run build
# xserver にデプロイ
rsync -avzu -e 'ssh -p 10022 -i ~/.ssh/moheno.key' --delete --checksum ~/astroblog/dist/* moheno@sv14154.xserver.jp:~/moheno.xsrv.jp/public_html/
rsync -avzu -e 'ssh -p 10022 -i ~/.ssh/moheno.key' --delete --checksum ~/astroblog/public moheno@sv14154.xserver.jp:~/moheno.xsrv.jp/public_html/
# github にデプロイ
stamp=`date '+%y%m%d%H%M%S'`
git add .
git commit -m $stamp
git branch -M main
git push -u origin main

ただし、このシェルスクリプトに実行権限を与えてクリックで実行するとうまくいきません。

コマンドラインから、

Terminal window
./AutoDeploy.sh

だとうまくいくのですが。

この理由が今のところよくわかりません。