配置rclone bisync同步本地文件夹与GoogleDrive异常求助
核心原因分析
你遇到的错误标记(错误删除双向存在的文件、错误计算传输量)主要和以下几点有关:
路径不匹配:Google Drive 的
My Drive是远程根目录(即GoogleDrive:对应的路径),如果你的本地同步目录/srv/GoogleDrive/下存在My Drive子目录,bisync会认为远程不存在这个目录,从而标记删除本地的My Drive文件夹,同时将远程根目录下的所有文件复制到本地根目录,这就会出现大量错误的删除和复制操作,传输量也会变成全部数据量。--resync 参数的副作用:
--resync会强制重建bisync的状态数据库,忽略之前的同步记录。此时bisync会严格对比两边文件的元数据(修改时间、哈希值等),如果本地复制Google Drive内容时没有保留完整元数据(比如用普通cp而非cp -a或rclone copy),或者Google Drive与本地的时间精度/时区存在差异,bisync会判定文件不匹配,进而标记重新复制或删除。挂载与bisync冲突:如果你的本地同步目录是Google Drive的挂载点,而非独立的本地目录,挂载过程可能导致文件元数据丢失或读取延迟,bisync无法正确识别文件状态,从而产生错误判断。
解决步骤
校验路径一致性
确认本地目录结构与远程完全匹配:远程GoogleDrive:/Papers/FSMs/mp/12.mps应对应本地/srv/GoogleDrive/Papers/FSMs/mp/12.mps,而非/srv/GoogleDrive/My Drive/Papers/FSMs/mp/12.mps。如果本地存在多余的My Drive子目录,直接删除该子目录,将内部文件移到本地根目录。验证文件元数据一致性
用rclone check命令对比两边文件的哈希和元数据:rclone check GoogleDrive: /srv/GoogleDrive/ --verbose --modify-window 1s--modify-window 1s允许时间戳有1秒的误差(适配Google Drive与本地系统的时间精度差异)。如果发现大量元数据不匹配,重新用rclone copy同步远程到本地,确保保留完整元数据:rclone copy GoogleDrive: /srv/GoogleDrive/ --metadata避免滥用--resync参数
首次同步时无需使用--resync,该参数仅用于状态数据库损坏的场景。先去掉--resync运行dry-run测试:rclone bisync GoogleDrive: /srv/GoogleDrive/ --dry-run --verbose如果此时操作正常,再考虑是否需要重建状态库。
分离挂载与bisync目录
不要将bisync的本地目录设为Google Drive的挂载点,使用独立的本地目录存储同步数据,避免挂载带来的元数据异常。
内容的提问来源于stack exchange,提问作者Richard Barraclough

