这是一个bash脚本用于自动生成Hugo的Public文件并自动上传到服务器。
English | 中文文档
你需要安装好SSH,SCP这类东西。本文档不会教你如何安装,请自行脑补Google
没有ssh和scp你为啥会看这篇文档呢(逃)
这一步是自动化输入密码步骤,安装sshpass的方法可以看这里
因为我在用macOS,所以简单提一下:
Homebrew默认禁止了安装sshpass,但是可以通过第三方的包来安装
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
你会在这里找到 sshpass.rb
下载publi.sh
修改一些变量:
hugoRoot='/Users/xxxxxx/hugo/blog/' # 你的本地hugo网站根目录
publicFolder='/Users/xxxxxx/hugo/blog/public' # 你的hugo public目录地址
zipName='Archive.zip' # 压缩文件名称
zipLoc=$publicFolder/$zipName # 不用管这个
hostname='xxx.xxx.xxx.xxx' # 服务器地址
upTo='/www/wwwroot/webxxx' # 服务器上网站根目录
我的ssh登录账号默认为root,如果你的不是root请自行修改。
这个脚本会自动执行hugo命令来生成public目录,所以不用提前执行一遍。
我用了几个简单的方法来更新网站,仅仅是上传并覆盖,这里有几点你需要知道。
脚本会执行:
- 生成public
- 压缩public的文件
- 上传压缩包
- 解压缩并删除压缩包
脚本不会执行:
- 检查文件是否重复,直接继续文件覆盖
- 不会删除已存在的文件
出于安全原因,不建议将ssh密码直接放置在脚本中,所以我设定为每次执行时都输入一遍ssh密码。
当然你可以在脚本的变量部分新建变量sshpw
并且赋值为你的ssh密码,并且注释掉第26到29行。
我发现我的系统不知道咋滴会把__MACOSX
放到压缩文件里,但是在我的压缩包查看器中找不到。
所以我新增了一个删除文件夹的命令在42行rmdir __MACOSX
,但是这个命令好像有误,因为当文件夹不是空的时候它会出错,可以换成rm -rf __MACOSX
,但是不是什么大事我就没删除它了。
你可以直接删除这个命令。