Windows下Hexo使用rsync自动部署

安装cwrsync

https://www.itefix.net/cwrsync/client/downloads

解释:

  • WSL:不方便与CMD“跨域交流”,还得设置node共享之类的,麻烦
  • cygwin:如果不是常用,也没必要专门安装它
  • cwrsync:是精简了cygwin最小的文件集,只为了rsync,影响最小

解压到目录,例如 D:\apps\cwrsync。设置环境变量:

1
2
CWRSYNCHOME = D:\apps\cwrsync
PATH = %CWRSYNCHOME%\bin;%PATH%

ssh通过key免密登录

1
2
ssh-keygen -t rsa
ssh-copy-id user@123.xxx.xxx.xxx

以上生成id_rsa和id_rsa.pub两个文件。
可选:把以上文件拷贝到%USERPROFILE%,可以让win自己的openssh共用

安装hexo-deployer-rsync

1
npm install hexo-deployer-rsync --save

修改deployer.js

[site_root]/node_modules/hexo-deployer-rsync/lib/deployer.js

1
2
3
4
5
6
7
8
9
10
11
12
13
+ let sshcmd = 'ssh';
+ if(args.ssh) {
+ sshcmd = args.ssh;
+ }

if (args.port && args.port > 0 && args.port < 65536) {
...
- params.splice(params.length - 2, 0, 'ssh -i ' + args.key + ' -p ' + args.port);
+ params.splice(params.length - 2, 0, sshcmd + ' -i ' + args.key + ' -p ' + args.port);
} else {
- params.splice(params.length - 2, 0, 'ssh -p ' + args.port);
+ params.splice(params.length - 2, 0, sshcmd + ' -p ' + args.port);

配置 _config.yml

1
2
3
4
5
6
7
deploy:
type: rsync
host: 111.222.xxx.xxx
user: xxx
root: /remote/path
ssh: D:/apps/cwrsync/bin/ssh.exe
args: '--chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r'

说明:以上args是为了正确设置权限,否则可能会导致web服务器403

使用方法

1
hexo deploy

参考资料
https://hexo.io/zh-cn/docs/one-command-deployment
https://github.com/hexojs/hexo-deployer-rsync
http://blog.orzjj.com/2023/04/27/%E6%8A%80%E6%9C%AF/hexo/hexo_deply_rsync.html