BG1REN的博客

技术、生活与无限可能……


Hugo+rsync+lftp发布网站

一般情况下,每次hugo生成静态网站时,网站的很多文件的时间戳会发生变化,哪怕生成前后的文件内容没有改变。

这种情况下,通过ftp工具,依靠文件时间戳来做差异更新,效率就会很低。

可以用 rsync 来解决这个问题。

建立一个 ftp-public 目录,作为hugo输出的 public 目录的本地镜像。这样,将发布网站分为两个步骤:

  1. rsync 同步变更到 ftp-public 目录。这一步,比较文件内容差异,只做差异变更,内容不变的文件的时间戳保持不变。
  2. lftp 同步 ftp-public 目录到网站的FTP服务器。

具体命令如下:

rsync -rv --delete --checksum --progress public/ ftp-public/

rsync 的选项说明:

  • -r 递归同步子目录
  • -v 输出详细操作信息
  • --deleteftp-public/ 中删除 =public/=下不存在的文件或目录
  • --checksum 使用校验和来判断文件是否一致、是否需要更新
  • --progress 显示同步进度
lftp -e "mirror -R --delete --only-newer ftp-public/ /" ftp://ftpuser@ftpserver