78b9685ee1ce176dce6c1d1fad538e4398169056
Redis Clipboard Sync
基于 Redis 的双向剪切板同步:主机将本地剪切板广播到从机,从机将本地剪切板上传到主机并按从机 ID 追加写入 TXT 文件。
目录结构
RedisClipSync/
code/ # 代码与构建
pom.xml
src/main/java/
target/ # 打包输出 redis-clip-sync.jar
windows/ # Windows 脚本
build-and-run.bat # 一键打包并运行
run.bat # 仅运行(需已打包)
linux/ # Linux 脚本
build-and-run.sh # 一键打包并运行
run.sh # 仅运行(需已打包)
config.master.properties.example
config.slave.properties.example
config.properties # 运行前从 example 复制并修改
README.md
剪切板同步.md
构建与运行
一键脚本(推荐)
脚本会从各自目录自动切换到项目根目录再执行,配置与 clipboard_logs/ 均在根目录。
Windows(在项目根目录或 windows/ 下执行均可)
- windows/build-and-run.bat:先打包再启动。
双击运行,或:windows\build-and-run.bat [配置文件路径](默认config.properties)。 - windows/run.bat:不重新打包,直接运行。
用法:windows\run.bat [配置文件路径]。
Linux(需先赋予执行权限:chmod +x linux/*.sh)
- linux/build-and-run.sh:先打包再启动。
./linux/build-and-run.sh [配置文件路径](默认config.properties)。 - linux/run.sh:不重新打包,直接运行。
用法:./linux/run.sh [配置文件路径]。
运行前请将 config.master.properties.example 或 config.slave.properties.example 复制为 config.properties 并修改。
手动构建与运行
在项目根目录执行:
mvn -f code/pom.xml clean package
在 code/target/ 下生成 redis-clip-sync.jar(已包含 Jedis 依赖)。
确保工作目录为项目根目录并包含 config.properties,或通过参数指定配置路径:
java -jar code/target/redis-clip-sync.jar
java -jar code/target/redis-clip-sync.jar /path/to/config.properties
配置
- config.properties:主配置,字段与
剪切板同步.md一致。 - config.master.properties.example:主机示例,复制为
config.properties后修改。 - config.slave.properties.example:从机示例,复制为
config.properties后修改。
主机 (Master)
role=MASTER
redis.host=127.0.0.1
redis.port=6379
redis.password=
master.target.channels=machine_a,machine_b
master.save.dir=./clipboard_logs/
从机 (Slave)
role=SLAVE
redis.host=192.168.1.100
slave.listen.channel=machine_a
slave.id=192.168.1.50
slave.id 决定主机端生成的文件名(如 192.168.1.50.txt)。
运行目录说明
主机启动后会在配置的 master.save.dir(默认 ./clipboard_logs/)下自动创建保存目录。建议在项目根目录运行脚本,这样 config.properties 与 clipboard_logs/ 均在根目录下:
RedisClipSync/
- config.properties
- clipboard_logs/ # 自动创建(Master)
- 192.168.1.50.txt # 从机 A 的记录
- 192.168.1.51.txt # 从机 B 的记录
功能验证
- 主机 → 从机:主机复制一段文字(如 "Hello Slave"),从机剪切板应自动更新为该内容,且从机不会把该内容再上传回主机(防回环)。
- 从机 → 主机:从机复制一段文字(如 "Password123"),主机会在
./clipboard_logs/<slave.id>.txt中追加一条带时间戳的记录,主机剪切板保持不变。
记录格式示例:
[2024-05-20 10:00:01]
Password123
------------------
依赖
- Java 8+
- Redis(用于 Pub/Sub 与连接)
- Maven 3.x(仅构建时)
Description
Languages
Java
77.4%
Shell
18.6%
Batchfile
3%
Smarty
1%