keepass触发器使用winscp与远程文件同步
本文记录使用winscp命令行下载上传加密文档的触发器配置。
keepass本身支持网络同步功能,但其支持的协议中没有SFTP。第三方插件sftpsync
支持SFTP,在使用过程中发现同步速度较慢,感觉客户端像卡死了一样。
首先下载winscp客户端,建议放到keepass的插件目录.\Plugins\WinSCP\WinSCP.exe
,在触发器中使用相对路径调用,一次配置永久使用。
尝试使用触发器来同步,大致步骤如下:
1、将远程包下载到本地存储为临时文件
2、本地数据库与下载的临时文件合并
3、将合并后的数据库上传到远程
4、删除下载的临时文件
比使用sftpsync
插件同步速度稍快,能感觉得到同步的过程使用体验较好。
winscp的命令行可以参考winscp官方文档。
完整触发器配置如下:(请按实际修改配置)
<?xml version="1.0" encoding="utf-8"?>
<TriggerCollection xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Triggers>
<Trigger>
<Guid>Ppm51bBKFUWG9ts0ku4TSQ==</Guid>
<Name>远程同步</Name>
<Comments>通过winscp与远程同步。
步骤1:下载远程文件存为临时库
步骤2:将本地文件与步骤1下载的文件合并
步骤3:上传至服务器
步骤4:删除临时文件</Comments>
<Events>
<Event>
<TypeGuid>s6j9/ngTSmqcXdW6hDqbjg==</TypeGuid>
<Parameters>
<Parameter>1</Parameter>
<Parameter>Password</Parameter>
</Parameters>
</Event>
</Events>
<Conditions />
<Actions>
<Action>
<TypeGuid>tkamn96US7mbrjykfswQ6g==</TypeGuid>
<Parameters>
<Parameter />
<Parameter>0</Parameter>
</Parameters>
</Action>
<Action>
<TypeGuid>P7gzLdYWToeZBWTbFkzWJg==</TypeGuid>
<Parameters>
<Parameter>Password.kdbx</Parameter>
<Parameter>0</Parameter>
</Parameters>
</Action>
<Action>
<TypeGuid>2uX4OwcwTBOe7y66y27kxw==</TypeGuid>
<Parameters>
<Parameter>.\Plugins\WinSCP\WinSCP.exe</Parameter>
<Parameter>/log="{DB_DIR}\{DB_BASENAME}_WinSCP.log" /ini=nul /command "open sftp://user:password@xxx.xxx.xxx.xxx/ -hostkey=""ssh-rsa 2048 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"" -rawsettings PingType=1 Utf=1 ProxyPort=1" "get ""/keepassFilePath/{DB_BASENAME}.kdbx"" ""{DB_DIR}\{DB_BASENAME}.temp""" "exit"</Parameter>
<Parameter>True</Parameter>
<Parameter>1</Parameter>
<Parameter />
</Parameters>
</Action>
<Action>
<TypeGuid>Iq135Bd4Tu2ZtFcdArOtTQ==</TypeGuid>
<Parameters>
<Parameter>{DB_DIR}\{DB_BASENAME}.temp</Parameter>
<Parameter />
<Parameter />
</Parameters>
</Action>
<Action>
<TypeGuid>2uX4OwcwTBOe7y66y27kxw==</TypeGuid>
<Parameters>
<Parameter>.\Plugins\WinSCP\WinSCP.exe</Parameter>
<Parameter>/log="{DB_DIR}\{DB_BASENAME}_WinSCP.log" /ini=nul /command "open sftp://user:password@xxx.xxx.xxx.xxx/ -hostkey=""ssh-rsa 2048 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"" -rawsettings PingType=1 Utf=1 ProxyPort=1" "put ""{DB_DIR}\{DB_BASENAME}.kdbx"" ""/keepassFilePath/{DB_BASENAME}.kdbx""" "exit"</Parameter>
<Parameter>True</Parameter>
<Parameter>1</Parameter>
<Parameter />
</Parameters>
</Action>
<Action>
<TypeGuid>2uX4OwcwTBOe7y66y27kxw==</TypeGuid>
<Parameters>
<Parameter>%comspec%</Parameter>
<Parameter>/c del "{DB_DIR}\{DB_BASENAME}.temp"</Parameter>
<Parameter>True</Parameter>
<Parameter>1</Parameter>
<Parameter />
</Parameters>
</Action>
<Action>
<TypeGuid>tkamn96US7mbrjykfswQ6g==</TypeGuid>
<Parameters>
<Parameter />
<Parameter>1</Parameter>
</Parameters>
</Action>
</Actions>
</Trigger>
</Triggers>
</TriggerCollection>