[Mac] Hugo の更新を lftp で行う
WordPress で構築していたいくつかのサイトを次々に Hugo へ移行している。
オンラインで Hugo について書かれたページを見ると自動デプロイする方法が紹介されている。
でも、滅多に更新しないサイトについてはわざわざそういう仰々しい方法を採らなくても、Hugo で生成したファイルを FTP でアップロードしてしまえばいい。
僕は FTP クライアントとして FileZilla を使っているが、なぜか FileZilla にはミラーリング機能がない。そこでコマンドラインツールの lftp を使うことにした。ロシア製のツールのようだ。
FileZilla - The free FTP solution
https://filezilla-project.org/
LFTP - sophisticated file transfer program
https://lftp.yar.ru/
(1)Homebrew で lftp をインストールする。
$ brew install lftp
$ lftp -v
LFTP | Version 4.9.2 | Copyright (c) 1996-2020 Alexander V. Lukyanov
参考:
lftp — Homebrew Formulae
https://formulae.brew.sh/formula/lftp
(2)試しに仮実行してみよう。
$ lftp
lftp の中に入った。
以下のコマンドで FTP サーバーに接続する。
> open -u {FTP ユーザー名},{FTP パスワード} {FTP サーバーのアドレス}
以下のコマンドで Hugo の public ディレクトリを FTP サーバーへミラーリングする(仮実行)。
> mirror -R --only-newer --ignore-time --exclude=".DS_Store" --dry-run {public ディレクトリへのパス} {FTP サーバーのディレクトリーへのパス}
-R は --reverse のことで、このオプションを付けることでアップロードになる。
更新されたファイルのみアップロードするため、--only-newer オプションを付けているが、--only-newer オプションは --ignore-time と合わせてうまく動くようだ。
--exclude=".DS_Store" を付けることで、Mac の.DS_Store をアップロードから除外している。
--dry-run が仮実行という意味。仮実行がうまく動いているようなら、--dry-run オプションを除いて実行すれば本実行ができる。
以下のコマンドで FTP サーバーから切断し、lftp を終了する。
> close
> exit
スクリプトを作ってこれらを自動実行すると楽だが、数行のコマンドなので毎回手入力で実行しても良さそうだ。
なお、hugo コマンドを実行してアップロードファイルを生成する前に、一旦 public ディレクトリ内のファイルは削除しておく。hugo コマンドは上書きなので不要ファイルが残ったままとなってしまう。不要ファイルを残したままにすると、のちのち Google Adsense や Google Search Console へ登録したりするときに問題が生じたりする。
参考:
LFTP - the manual page
https://lftp.yar.ru/lftp-man.html
lftpの使い方 - 雑多なプログラムメモ
https://hn-carter.sakura.ne.jp/posts/to-use-lftp/
[mac]lftpコマンドでFTPサーバに一括アップロードをする
https://blog.hello-world.jp.net/posts/mac-2-2662
Hugoで生成したコンテンツをlftpでアップロードする #Hugo - Qiita
https://qiita.com/_takeuchi_/items/84aa2d0fc6d6a522e843
Why lftp mirror --only-newer does not transfer "only newer" file? - Stack Overflow
https://stackoverflow.com/questions/11490145/why-lftp-mirror-only-newer-does-not-transfer-only-newer-file
Hugo | Yuuniworks Note
https://note.yuuniworks.com/study/hugo
この記事が気に入ったらサポートをしてみませんか?