Hugo+rsync+lftp发布网站

一般情况下,每次hugo生成静态网站时,网站的很多文件的时间戳会发生变化,哪怕生成前后的文件内容没有改变。
这种情况下,通过ftp工具,依靠文件时间戳来做差异更新,效率就会很低。
可以用 rsync
来解决这个问题。
建立一个 ftp-public
目录,作为hugo输出的 public
目录的本地镜像。这样,将发布网站分为两个步骤:
- 用
rsync
同步变更到ftp-public
目录。这一步,比较文件内容差异,只做差异变更,内容不变的文件的时间戳保持不变。 - 用
lftp
同步ftp-public
目录到网站的FTP服务器。
具体命令如下:
rsync -rv --delete --checksum --progress public/ ftp-public/
rsync
的选项说明:
-r
递归同步子目录-v
输出详细操作信息--delete
从ftp-public/
中删除 =public/=下不存在的文件或目录--checksum
使用校验和来判断文件是否一致、是否需要更新--progress
显示同步进度
lftp -e "mirror -R --delete --only-newer ftp-public/ /" ftp://ftpuser@ftpserver