# Redis 剪切板同步说明 本文档与当前代码版本一一对应。 ## 版本对应 - `v1.1.0`(当前) - 主机 -> 从机、从机 -> 主机均使用 AES-256-GCM 传输加密 - 从机 `master_to_slave.log` 启用按条目 TTL 清理(默认 30 秒) - 主从均写统一结构化日志:`direction/source/target` - `v1.0.0` - 仅双向日志同步,不包含传输加密和按条目 TTL 清理 ## 当前运行逻辑 1. 主机监听本地剪切板变化,发布到 `master.target.channels` 的多个频道。 2. 从机订阅自己的 `slave.listen.channel`,收到消息后写 `master_to_slave.log`。 3. 从机监听本地剪切板变化,上传到 `global_clip_upload`。 4. 主机订阅 `global_clip_upload`,收到后写 `slave_to_master.log`。 ## 安全与保留策略 - `crypto.enabled=true` 时启用加密。 - `crypto.key` 必须是 Base64 编码,解码后 32 字节(AES-256)。 - 从机仅对 `master_to_slave.log` 做 TTL 清理,不影响 `slave_to_master.log`。 ## 核心配置项 ```properties # 基础 role=MASTER|SLAVE redis.host=127.0.0.1 redis.port=6379 redis.password= # 主机 master.target.channels=machine_a,machine_b master.id=master # 从机 slave.listen.channel=machine_a slave.id=slave-01 # 日志目录 log.save.dir=./clipboard_logs/ # 加密 crypto.enabled=true crypto.key=REPLACE_WITH_BASE64_32_BYTE_KEY # 从机日志TTL(仅 master_to_slave.log) slave.log.ttl.seconds=30 slave.log.prune.interval.seconds=5 ``` ## 1主2从样例 - 主机:`master.target.channels=machine_a,machine_b` - 从机1:`slave.listen.channel=machine_a` - 从机2:`slave.listen.channel=machine_b` - 三端 `crypto.key` 保持一致 ## 发布与安装(Linux) 1. 主机执行 `./linux/build-slave-release.sh` 生成从机发布包。 2. 将 `dist/redis-clip-sync-slave-.tar.gz` 传到从机。 3. 从机解压后修改 `conf/config.properties`。 4. 从机执行 `sudo ./bin/install-slave.sh`,自动启动并设置开机自启。 一键验收(从机): ```bash bash -c 'set -e; systemctl is-enabled redis-clip-sync >/dev/null; systemctl is-active redis-clip-sync >/dev/null; test -f /opt/redis-clip-sync/lib/redis-clip-sync.jar; echo "[PASS] redis-clip-sync deployed"' ```