hexo_deploy服务器端命令路径问题

前言

使用 hexo d 来同步本地文件到远程,在使用时遇到一些问题.

  • 远程主机找不到 rsync 命令安装路径
  • 压缩方法太旧

原因分析

  • 使用 ssh username@domain 'command' 在远程运行命令时,
    shell处于与平常不同的状态,一般不加载 PATH 设置,能加载的(bash)也嫌设置麻烦.
  • 改参数指定新的压缩方式就行

解决

  • 使用 --rsync-path 通知rsync命令在远程服务器的位置
  • 使用 -zz 而不使用 -z

比如在本地使用命令

1
rsync --rsync-path=/usr/bin/rsync -avzz -e 'ssh -p 22' public [email protected]:/mnt/sda/www/myblog

就能够成功上传.
hexo drsync 命令进行了包装,配置该命令需要在
/hexo/node_modules/hexo-deployer-rsync/lib/deployer.js
中设置 params 比变量的值,添加了第一个参数
修改了第二个参数

1
2
3
4
5
6
var params = [
'--rsync-path=/usr/bin/rsync',
'-azz',
process.platform === 'win32' ? pathFn.basename(this.public_dir) + '/' : this.public_dir,
args.user + '@' + args.host + ':' + args.root
];