826c5e7c64
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
130 lines
3.4 KiB
Markdown
130 lines
3.4 KiB
Markdown
# Linux 本机与 Google Drive 双向同步配置总结
|
||
|
||
## 实现的功能
|
||
|
||
本机文件夹与 Google Drive 文件夹之间的**全自动双向同步**:
|
||
|
||
- 本机路径:`/home/chen/AI-document/学习笔记`
|
||
- Google Drive 路径:`gdrive:学习笔记`
|
||
- 同步方向:双向(任意一侧的新增、修改、删除都会同步到另一侧)
|
||
- 触发方式:每 15 分钟自动执行一次,也可手动触发
|
||
- 冲突处理:以修改时间较新的文件为准
|
||
|
||
---
|
||
|
||
## 实现方式
|
||
|
||
### 核心工具:rclone
|
||
|
||
[rclone](https://rclone.org/) 是一个开源命令行工具,支持与数十种云存储服务同步文件,包括 Google Drive。本方案使用其 `bisync`(双向同步)功能。
|
||
|
||
### 整体架构
|
||
|
||
```
|
||
本机文件夹 ⇄ rclone bisync ⇄ Google Drive
|
||
```
|
||
|
||
cron 定时任务每 15 分钟调用一次同步脚本,脚本调用 rclone bisync 执行双向同步,结果写入日志文件。
|
||
|
||
---
|
||
|
||
## 配置步骤
|
||
|
||
### 1. 安装 rclone
|
||
|
||
```bash
|
||
curl https://rclone.org/install.sh | sudo bash
|
||
```
|
||
|
||
### 2. 配置 Google Drive 远程
|
||
|
||
```bash
|
||
rclone config
|
||
```
|
||
|
||
交互式配置过程:
|
||
- 新建远程,命名为 `gdrive`
|
||
- 类型选 `drive`(Google Drive,选项 24)
|
||
- client_id 和 client_secret 留空(使用内置密钥)
|
||
- scope 留空(默认完整访问权限)
|
||
- 使用浏览器完成 OAuth 授权
|
||
- 不配置为 Shared Drive
|
||
|
||
配置完成后可用 `rclone lsd gdrive:` 验证连接。
|
||
|
||
### 3. 同步脚本
|
||
|
||
文件位置:`~/gdrive_sync.sh`
|
||
|
||
脚本主要逻辑:
|
||
- 使用锁文件防止多个实例同时运行
|
||
- 自动检测是否为首次运行,首次运行时加 `--resync` 初始化基准
|
||
- 常规运行使用 `rclone bisync`,冲突以较新文件为准
|
||
- 同步失败时自动尝试 `--resync` 自修复
|
||
- 日志超过 500 行时自动轮转
|
||
|
||
核心同步命令:
|
||
|
||
```bash
|
||
rclone bisync "$LOCAL_DIR" "$REMOTE_DIR" \
|
||
--log-level INFO \
|
||
--log-file "$LOG_FILE" \
|
||
--conflict-resolve newer \
|
||
--filters-file "$HOME/.gdrive_sync_filters"
|
||
```
|
||
|
||
### 4. 过滤规则
|
||
|
||
文件位置:`~/.gdrive_sync_filters`
|
||
|
||
默认排除以下内容:
|
||
- 系统文件:`.DS_Store`、`Thumbs.db`、`desktop.ini`
|
||
- 临时文件:`*.tmp`、`*.temp`、`~$*`、`*.swp`
|
||
|
||
> 注意:`--max-size` 不是过滤文件支持的语法,不能写在 filters 文件里,如需限制文件大小请在命令行参数中添加。
|
||
|
||
### 5. 定时任务(cron)
|
||
|
||
```bash
|
||
crontab -e
|
||
```
|
||
|
||
添加:
|
||
|
||
```
|
||
*/15 * * * * /bin/bash /home/chen/gdrive_sync.sh >> /dev/null 2>&1
|
||
```
|
||
|
||
---
|
||
|
||
## 日常使用
|
||
|
||
| 操作 | 命令 |
|
||
|------|------|
|
||
| 手动触发同步 | `~/gdrive_sync.sh` |
|
||
| 查看同步日志 | `cat ~/.gdrive_sync.log` |
|
||
| 查看定时任务 | `crontab -l` |
|
||
| 修改定时任务 | `crontab -e` |
|
||
|
||
---
|
||
|
||
## 遇到的问题与解决方法
|
||
|
||
### 问题 1:curl 安装脚本管道卡住
|
||
安装命令 `curl ... | sudo bash` 执行完后终端看起来无响应,实际上 rclone 已安装成功。按 `Ctrl+C` 中断后运行 `rclone version` 确认即可。
|
||
|
||
### 问题 2:脚本文件找不到
|
||
直接 `cp gdrive_sync.sh ~/` 因文件不在当前目录而失败。解决方法是用 `nano ~/gdrive_sync.sh` 直接在目标位置创建文件并粘贴内容。
|
||
|
||
### 问题 3:filters 文件语法错误
|
||
`--max-size 1G` 不是 rclone filters 文件支持的语法,导致 bisync 报错中止。删除该行后还需清除损坏的状态文件:
|
||
|
||
```bash
|
||
rm -rf ~/.cache/rclone/bisync
|
||
~/gdrive_sync.sh
|
||
```
|
||
|
||
---
|
||
|
||
*配置日期:2026-05-07*
|