作業ログ
Hugo

Hugoで生成したコンテンツをlftpでアップロードする

いまどきはHugoで生成したコンテンツも、

  1. コンテンツを書く
  2. どこかのプライベートリポジトリにプッシュして
  3. どこかでビルドして
  4. ステージング環境で確認して
  5. 公開リポジトリにプッシュして
  6. Webサーバーにデプロイ

みたいなことが当たり前になってきていますね

でもそんなに大事じゃないサイトの構築にそんなにリソースをかけてられない

大事じゃないサイト=なにかをやらかしてとしても、しれっと再デプロイするだけで済んでしまうサイト

でもFTPでやるのは面倒くさい

  1. コンテンツを書く
  2. ローカルでビルドするとWebサーバーにアップロード

くらいでちょうどいい

やってみた

lftpを使えばいいみたい
lftp - Sophisticated file transfer program

インストール

$ sudo apt -y install lftp

設定ファイルを書く

$ nano lftp.dat
open -u [ID],[Password] [FTPServer]
mirror -R --only-newer --verbose=3 --log=/hugo/site/lftp.log /hugo/site/public /
echo end
close
quit

キモなのはmirrorコマンド

mirror [option] [src] [dist] 

上に書いた設定だと

  • -R:[src]がローカル側、[dist]がリモート側になる
  • --only-newer:新しいファイルだけコピーする
  • --verbose=3:コマンドが出す表示の詳細度
  • log=/hugo/site/lftp.log:ログ・ファイルのパス
  • /hugo/site/public:Hugoで生成されるコンテンツが入ったディレクトリ
  • /:Webサーバーのディレクトリ

あとopenコマンドでパスワードを指定するときに、パスワードに&が含まれるときは''(一重引用符)でくくってあげるとうまくいった

lftpでアップロードする

$ lftp -f lftp.dat

で設定ファイルを読み込んで実行される

Hugoでコンテンツを生成したらアップロードする

$ nano site_generate.sh
#!/bin/sh
cd /hugo/site
rm -rf public/
hugo --destination public --theme shirouto
rm lftp.log
lftp -f lftp.dat