# 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` 并修改。 ### 手动构建与运行 在项目根目录执行: ```bash mvn -f code/pom.xml clean package ``` 在 `code/target/` 下生成 `redis-clip-sync.jar`(已包含 Jedis 依赖)。 确保工作目录为项目根目录并包含 `config.properties`,或通过参数指定配置路径: ```bash 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) ```properties 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) ```properties 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 的记录 ``` ## 功能验证 1. **主机 → 从机**:主机复制一段文字(如 "Hello Slave"),从机剪切板应自动更新为该内容,且从机不会把该内容再上传回主机(防回环)。 2. **从机 → 主机**:从机复制一段文字(如 "Password123"),主机会在 `./clipboard_logs/.txt` 中追加一条带时间戳的记录,主机剪切板保持不变。 记录格式示例: ``` [2024-05-20 10:00:01] Password123 ------------------ ``` ## 依赖 - Java 8+ - Redis(用于 Pub/Sub 与连接) - Maven 3.x(仅构建时)