平时常用的是Windows的笔记本,想一键把写好的博客同步到服务器上,但又懒得折腾cygwin装rsync(两端都是Linux的话rsync当然就是首选了),最后还是用WinSCP的脚本来实现文件同步。

获取会话URL

首先使用WinSCP登入到服务器,然后在工具栏标签页->生成会话URL/代码生成会话URL。这里至少需要勾选用户名SSH主机密钥,其他项目任意。建议不勾选密码,在执行脚本时会提示输入密码验证。URL形如以下格式:

sftp://<username>;fingerprint=ssh-<fingerprint>@<hostname>:<port>/

编写WinSCP脚本

我的目的只是同步本地的静态网站文件到远程目录,所以脚本内容也很简单。

2024-03-07编辑:

更改criteria为size和checksum,当文件大小和校验和都不变时认为文件未发生变化,减少重复传输。

open sftp://<username>;fingerprint=ssh-<fingerprint>@<hostname>:<port>/
synchronize remote <local_path> <remote_path> -delete -criteria=size,checksum -transfer=binary
exit

执行脚本

执行脚本时需要用到WinSCP.com,我安装在默认路径,可能需要根据实际情况修改。写成批处理就很简单了,不赘述。

"C:\Program Files (x86)\WinSCP\WinSCP.com" /ini=nul /script="<path_to_script>\sync.txt"

参考