Skip to content

About

Windows Google Drive resumable multi-source sync with configurable deduplication, progress, retries, and capacity guards.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

DriveBridge

DriveBridge 是一个面向 Windows 的 Google Drive 大批量增量下载工具。它基于系统自带的 robocopy,支持多账号并行、断点续传、多个历史目录联合去重、实时进度、定时刷新文件清单和目标盘容量保护。

适用于 Google Drive for desktop 挂载目录持续产生新文件的场景,例如 Google Earth Engine 导出结果、长期实验产物和大批量归档数据。

功能

  • 多个 Google Drive 源目录并行下载,每个源一个独立任务。
  • 使用 robocopy /Z 断点续传,网络或 Drive 虚拟盘短暂错误后自动重试。
  • robocopy 详细日志使用 Unicode,中文路径不依赖系统代码页。
  • RecognitionDirectories 可配置多个已下载目录;任一目录存在完整文件即跳过。
  • 所有新文件只写入唯一的 Destination,历史识别目录只读不改。
  • 每秒显示完成比例、当前速度、平均速度、文件数和当前文件。
  • 定时刷新源清单;发现新文件后等待当前文件完整落盘,再只重启对应账号。
  • 目标盘剩余容量低于阈值时停止全部任务并保留断点。
  • 关闭 CMD/PowerShell 窗口时,通过 Windows Job Object 自动结束子 robocopy。
  • 可选的 Google Drive 缓存占用检查与安全清理。

系统要求

  • Windows 10/11
  • PowerShell 7(命令 pwsh)
  • Google Drive for desktop(用于挂载源目录)
  • 系统自带 robocopy

快速开始

  1. 下载或克隆仓库。

  2. 复制示例配置:

    Copy-Item .\config.example.psd1 .\config.psd1
  3. 编辑 config.psd1,至少修改 Sources、Destination 和 RecognitionDirectories。

  4. 双击 Start-Sync.cmd。

config.psd1 已被 .gitignore 忽略,可以安全保存本机路径;公开仓库只包含 config.example.psd1。

配置

配置文件是 PowerShell 数据文件:

@{
    Sources = @(
        'G:\My Drive\EarthEngineExports'
        'H:\My Drive\AnotherExportFolder'
    )
    Destination = 'E:\GoogleDriveDownloads'
    RecognitionDirectories = @(
        'D:\OldGoogleDriveDownloads'
        'E:\GoogleDriveDownloads'
    )
    MinFreeGB = 20
    ListRefreshMinutes = 60
    CacheCheckMinutes = 60
    EnableCacheManagement = $false
    CacheRoot = '%LOCALAPPDATA%\Google\DriveFS'
    RetryCount = 1000000
    RetryWaitSeconds = 5
    InterPacketGapMs = 0
    ProgressRefreshSeconds = 1
    RequireGoogleDriveProcess = $true
    GoogleDriveProcessName = 'GoogleDriveFS'
    GoogleDriveInstallRoot = 'C:\Program Files\Google\Drive File Stream'
    LogDirectory = '.\logs'
    InstanceMutexName = 'Local\DriveBridge_GoogleDrive_ResumableSync'
}

主要字段:

字段 作用
Sources 一个或多个 Google Drive 挂载源目录
Destination 新文件唯一写入目录
RecognitionDirectories 判断文件已下载的目录,可包含旧磁盘和目标目录
MinFreeGB 目标盘停止下载的剩余空间阈值
ListRefreshMinutes 运行中重新扫描源文件清单的周期
CacheCheckMinutes Drive 缓存占用检查周期
EnableCacheManagement 是否启用缓存检查和上轮完整结束后的缓存清理
RetryCount / RetryWaitSeconds robocopy 重试次数和间隔
InterPacketGapMs robocopy /IPG 限速参数;0 表示关闭
ProgressRefreshSeconds 进度刷新周期

相对路径以 config.psd1 所在目录为基准。环境变量使用 %NAME% 语法,例如 %LOCALAPPDATA%。

去重规则

DriveBridge 按以下条件判断文件完整:

  1. 相对路径一致;
  2. 文件大小一致;
  3. 修改时间差不超过 2 秒(兼容 robocopy /FFT)。

匹配文件可以位于任意 RecognitionDirectories。robocopy 只接收所有识别目录中都缺失的文件名,并始终写入 Destination。

为保证筛选精确,同一个源目录不能在不同子目录中出现同名文件;检测到时程序会停止并给出错误。

缓存管理

EnableCacheManagement = $false 是安全默认值。

启用后,程序会记录 Drive 内容缓存占用。只有上一轮全部源都完整同步并留下完成标记时,下一次启动才会暂停 Google Drive、清理 content_cache,然后重启 Drive。中断运行不会留下完成标记,因此不会删除断点所需缓存。

命令行

只运行一轮:

pwsh -NoLogo -NoProfile -File .\Sync-GoogleDrive.ps1 -ConfigPath .\config.psd1 -Once

命令行参数可以临时覆盖同名配置项,例如:

pwsh -NoLogo -NoProfile -File .\Sync-GoogleDrive.ps1 `
  -ConfigPath .\config.psd1 `
  -MinFreeGB 50 `
  -ListRefreshMinutes 30

测试

pwsh -NoLogo -NoProfile -File .\Run-Tests.ps1

测试全部使用系统临时目录和独立实例锁,不读写用户的真实同步目录。

详细覆盖范围见 测试说明。

安全提示

  • 首次使用建议关闭缓存管理,确认下载和断点行为后再开启。
  • RecognitionDirectories 只用于识别,不会被程序删除或同步覆盖。
  • 程序不会删除 Destination 中的额外文件。
  • 本工具只适用于你有权访问和下载的数据。

许可证

MIT

About

Windows Google Drive resumable multi-source sync with configurable deduplication, progress, retries, and capacity guards.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages