Files
RedisClipSync/剪切板同步.md

75 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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-<version>.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"'
```