85 lines
2.1 KiB
Markdown
85 lines
2.1 KiB
Markdown
# Redis Clipboard Sync
|
||
|
||
基于 Redis 的双向剪切板同步:主机将本地剪切板广播到从机,从机将本地剪切板上传到主机并按从机 ID 追加写入 TXT 文件。
|
||
|
||
## 构建
|
||
|
||
```bash
|
||
mvn clean package
|
||
```
|
||
|
||
在 `target/` 下生成 `redis-clip-sync.jar`(已包含 Jedis 依赖,可直接运行)。
|
||
|
||
## 运行
|
||
|
||
确保工作目录包含 `config.properties`,或通过参数/系统属性指定配置路径:
|
||
|
||
```bash
|
||
java -jar target/redis-clip-sync.jar
|
||
# 或指定配置
|
||
java -jar target/redis-clip-sync.jar /path/to/config.properties
|
||
java -Dconfig=/path/to/config.properties -jar target/redis-clip-sync.jar
|
||
```
|
||
|
||
## 配置
|
||
|
||
- **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`)。
|
||
|
||
## 目录结构
|
||
|
||
主机启动后会自动创建保存目录:
|
||
|
||
```
|
||
/
|
||
- redis-clip-sync.jar
|
||
- config.properties
|
||
- clipboard_logs/ # 自动创建
|
||
- 192.168.1.50.txt # 从机 A 的记录
|
||
- 192.168.1.51.txt # 从机 B 的记录
|
||
```
|
||
|
||
## 功能验证
|
||
|
||
1. **主机 → 从机**:主机复制一段文字(如 "Hello Slave"),从机剪切板应自动更新为该内容,且从机不会把该内容再上传回主机(防回环)。
|
||
2. **从机 → 主机**:从机复制一段文字(如 "Password123"),主机会在 `./clipboard_logs/<slave.id>.txt` 中追加一条带时间戳的记录,主机剪切板保持不变。
|
||
|
||
记录格式示例:
|
||
|
||
```
|
||
[2024-05-20 10:00:01]
|
||
Password123
|
||
|
||
------------------
|
||
```
|
||
|
||
## 依赖
|
||
|
||
- Java 8+
|
||
- Redis(用于 Pub/Sub 与连接)
|
||
- Maven 3.x(仅构建时)
|