826c5e7c64
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.4 KiB
3.4 KiB
Linux 本机与 Google Drive 双向同步配置总结
实现的功能
本机文件夹与 Google Drive 文件夹之间的全自动双向同步:
- 本机路径:
/home/chen/AI-document/学习笔记 - Google Drive 路径:
gdrive:学习笔记 - 同步方向:双向(任意一侧的新增、修改、删除都会同步到另一侧)
- 触发方式:每 15 分钟自动执行一次,也可手动触发
- 冲突处理:以修改时间较新的文件为准
实现方式
核心工具:rclone
rclone 是一个开源命令行工具,支持与数十种云存储服务同步文件,包括 Google Drive。本方案使用其 bisync(双向同步)功能。
整体架构
本机文件夹 ⇄ rclone bisync ⇄ Google Drive
cron 定时任务每 15 分钟调用一次同步脚本,脚本调用 rclone bisync 执行双向同步,结果写入日志文件。
配置步骤
1. 安装 rclone
curl https://rclone.org/install.sh | sudo bash
2. 配置 Google Drive 远程
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 行时自动轮转
核心同步命令:
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)
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 报错中止。删除该行后还需清除损坏的状态文件:
rm -rf ~/.cache/rclone/bisync
~/gdrive_sync.sh
配置日期:2026-05-07