75 lines
2.2 KiB
Markdown
75 lines
2.2 KiB
Markdown
# 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"'
|
||
```
|