Synology Drive と git

(2025-10-08)

github

Synology Drive でドキュメントを同期してきましたが、このブログプロジェクト astroblog はドキュメントとは別に管理しており、 ローカルで作成したコンテンツを xserver へデプロイするのと同時に git で管理していました。

AstroDeploy.sh
#!/bin/sh
# ビルドする
cd ~/astroblog
yarn build
# xserver にデプロイ
rsync -avzu -e 'ssh -p 10022 -i ~/.ssh/moheno.key' --checksum ~/astroblog/dist/* moheno@sv12345.xserver.jp:~/moheno.xsrv.jp/public_html/
rsync -avzu -e 'ssh -p 10022 -i ~/.ssh/moheno.key' --checksum ~/astroblog/public moheno@sv12345.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

上のようにして github にデプロイして、別のコンピュータから

cd ~/astroblog
git pull

とすれば、github からローカルにファイルが転送されるのでとても便利と思っていました。

しかし、astroblog を含むホームディレクトリをすべて Synology Drive で同期すると git pull 時にエラーが発生します。

よく考え見るとこれは当然で、そもそも github というものはチームでプロジェクトを開発するためのものであり、 私のように個人でプロジェクトを作成する場合には Synology Drive でプロジェクトが同期されていれば必要ないものだと気づきました。

Synology Drive による同期で十分

Synology Drive によって NAS をハブとして 3 台のコンピュータが /home/moheno を同期していれば、コンピュータの電源を入れた時に /home/moheno/astroblog は自動的に同期されます。

ローカルで、

cd ~/astroblog
yarn dev

で astro を立ち上げて編集し、編集が終わったら AstroDeploy.sh を起動すると自動的にローカルのコンテンツが xserver に rsync されます。

rsync なので差分しかアップロードせず、ほとんどの場合あっという間に終了します。

つまり AstroDeploy.sh に github を設定する必要はなくなりました。
ローカルでビルドして xserver にデプロイするだけです。

AstroDeploy.sh
#!/bin/sh
# ビルドする
cd ~/astroblog
yarn build
# xserver にデプロイ
rsync -avzu -e 'ssh -p 10022 -i ~/.ssh/moheno.key' --checksum ~/astroblog/dist/* moheno@sv12345.xserver.jp:~/moheno.xsrv.jp/public_html/
rsync -avzu -e 'ssh -p 10022 -i ~/.ssh/moheno.key' --checksum ~/astroblog/public moheno@sv12345.xserver.jp:~/moheno.xsrv.jp/public_html/

github はチームでプロジェクトを作成するには便利なのでしょうが、設定が難しくよく理解せず動かすと割と頻繁にエラーが発生し、それを解決するためにそれなりの時間を要してきました。

その必要性は全く無かったわけで、今後はとても便利になると思います。
これで github のプロジェクトも削除できます。

Synology Drive で同期しても動かない

Synology Drive で同期しても他のコンピュータで astroblog を動かそうとしても動きません。
これは直感的には少しわかります。

chatGPT によると「node_modules は同期しない方が良い」からだそうで、でも最初は同期で動くはずとか言ってたんですけどね。

そして、docker にすればうまく行くはずとの言葉に乗せられていろいろやってみたのですが、動かないので問い詰めると

現状の Astro プロジェクトは 相対パス・リンク設計が Docker 配信に適していない

とのことで docker で astro はやめることにしました。

chatGPT には妙なクセがあって、できないことを自信満々であたかもできるかのように主張することがあるので注意が必要です。

結局は、これまで通り github を利用して git push したり git pull することにしました。