keepass触发使用winscp与远程文件同步

发布时间 2023-12-27 10:57:49作者: 三点一圆

本文记录使用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>