Hugoで生成したコンテンツをWebサーバーにデプロイ(アップロード)する

Hugoでコンテンツを生成すると、ftpクライアントなどでWebサーバーにデプロイ(アップロード)するのですが、都度ftpクライアントを使うのも面倒になってくる
そういう時に…

lftpコマンドを利用する

インストールする

$ sudo apt install lftp

設定ファイルを書く

$ nano lftp.dat
open -u userid,'p@ssword0' ftp.example.co.jp
set ftp:charset utf-8
mirror -R --delete --verbose=3 --log=/home/user/hugo-site/lftp.log /home/user/hugo-site/public /
echo finished!
close
quit

mirror -R –delete –verbose=3 でミラーリングアップロードする

オプション 意味
-R ローカル側からサーバー側へアップロードする
src-dirにローカル側、target-dirにサーバー側のパスを指定する
–delete target-dirにあってsrc-dirに無いものは削除される
–verbose=3 表示されるメッセージのレベルを指定する

コンテンツの生成後にアップロードする

コンテンツを生成するスクリプトを書いておく

$ nano site_generate.sh
rm -rf public/
hugo --destination public --theme 適用するテーマ
rm ./lftp.log
lftp -f ./lftp.dat
$ chmod +x site_generate.sh
コンテンツの生成後にアップロードする時は
$ ./site_generate.sh

rsyncコマンドを利用する

インストールする

$ sudo apt install rsync

コンテンツの生成後にアップロードする

コンテンツを生成するスクリプトを書いておく

$ nano site_generate.sh
rm -rf public/
hugo --destination public --theme 適用するテーマ
rsync -avz --update --delete /home/user/hugo-site/public/ user@ftp.example.co.jp:/wwwroot/example.co.jp
$ chmod +x site_generate.sh
オプション 意味
-avz アーカイブモード
動作内容を表示する
転送中のデータを圧縮する
–update target-dirのものがsrc-dirより新しければコピーされない
–delete target-dirにあってsrc-dirに無いものは削除される
コンテンツの生成後にアップロードする時は
$ ./site_generate.sh