Files
RedisClipSync/剪切板同步.md

2.2 KiB
Raw Permalink Blame History

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

核心配置项

# 基础
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
  • 从机1slave.listen.channel=machine_a
  • 从机2slave.listen.channel=machine_b
  • 三端 crypto.key 保持一致

发布与安装Linux

  1. 主机执行 ./linux/build-slave-release.sh 生成从机发布包。
  2. dist/redis-clip-sync-slave-<version>.tar.gz 传到从机。
  3. 从机解压后修改 conf/config.properties
  4. 从机执行 sudo ./bin/install-slave.sh,自动启动并设置开机自启。

一键验收(从机):

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"'