Files
RedisClipSync/README.md

123 lines
3.8 KiB
Markdown
Raw 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 Clipboard Sync
基于 Redis 的双向剪切板同步:主机将本地剪切板广播到从机,从机将本地剪切板上传到主机并按从机 ID 追加写入 TXT 文件。
## 目录结构
```
RedisClipSync/
code/ # 代码与构建
pom.xml
src/main/java/
target/ # 打包输出 redis-clip-sync.jar
windows/ # Windows 脚本
build-and-run.bat # 一键打包并运行
run.bat # 仅运行(需已打包)
linux/ # Linux 脚本
build-and-run.sh # 一键打包并运行
run.sh # 仅运行(需已打包)
config.master.properties.example
config.slave.properties.example
config.properties # 运行前从 example 复制并修改
README.md
剪切板同步.md
```
## 构建与运行
### 一键脚本(推荐)
脚本会从各自目录自动切换到项目根目录再执行,配置与 `clipboard_logs/` 均在根目录。
**Windows**(在项目根目录或 `windows/` 下执行均可)
- **windows/build-and-run.bat**:先打包再启动。
双击运行,或:`windows\build-and-run.bat [配置文件路径]`(默认 `config.properties`)。
- **windows/run.bat**:不重新打包,直接运行。
用法:`windows\run.bat [配置文件路径]`
**Linux**(需先赋予执行权限:`chmod +x linux/*.sh`
- **linux/build-and-run.sh**:先打包再启动。
`./linux/build-and-run.sh [配置文件路径]`(默认 `config.properties`)。
- **linux/run.sh**:不重新打包,直接运行。
用法:`./linux/run.sh [配置文件路径]`
运行前请将 `config.master.properties.example``config.slave.properties.example` 复制为 `config.properties` 并修改。
### 手动构建与运行
在项目根目录执行:
```bash
mvn -f code/pom.xml clean package
```
`code/target/` 下生成 `redis-clip-sync.jar`(已包含 Jedis 依赖)。
确保工作目录为项目根目录并包含 `config.properties`,或通过参数指定配置路径:
```bash
java -jar code/target/redis-clip-sync.jar
java -jar code/target/redis-clip-sync.jar /path/to/config.properties
```
## 配置
- **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`)。
## 运行目录说明
主机启动后会在配置的 `master.save.dir`(默认 `./clipboard_logs/`)下自动创建保存目录。建议在项目根目录运行脚本,这样 `config.properties``clipboard_logs/` 均在根目录下:
```
RedisClipSync/
- config.properties
- clipboard_logs/ # 自动创建Master
- 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仅构建时