OmniSync GDrive

approved

by donespeak

Synchronize your vault with Google Drive - This plugin has not been manually reviewed by Obsidian staff.

1 stars119 downloadsUpdated 1mo agoMIT

OmniSync GDrive

Synchronize your Obsidian vault with Google Drive. Bidirectional sync with conflict resolution, pull-only mode, and git integration.

Features

  • Bidirectional Sync — Keep your vault and Google Drive in sync
  • Pull Only — One-way download from Drive, skip local uploads
  • Conflict Resolution — Compare local and Drive versions, keep local / Drive / both per file
  • Sync Preview — Review all changes before executing
  • Multiple Directory Mappings — Sync different vault folders to different Drive folders
  • Shared Drive Support — Works with Google Shared Drives
  • Git Integration — Auto-commit before and after sync for version history
  • Ignore Rules — Skip files/folders via patterns (.gitignore compatible)
  • Test All — Verify all Drive folder connections with visual indicators

Installation

From Obsidian Community Plugins (pending)

  1. Open SettingsCommunity PluginsBrowse
  2. Search for "OmniSync GDrive"
  3. Tap Install then Enable

Manual Installation

  1. Download gdrive-bisync.zip from the releases page
  2. Create the .obsidian/plugins/gdrive-bisync/ folder in your vault (the folder name must match the plugin ID) and unzip the archive into it
  3. Enable the plugin in SettingsCommunity Plugins

Each release also attaches the flat main.js, manifest.json, and styles.css files, which is what the Obsidian community installer uses. The gdrive-bisync.zip is an additional convenience for manual/BRAT installs and is also produced locally by bash build/build-release.sh (output: dist/gdrive-bisync.zip).

Setup

1. Configure the Plugin

  1. Open SettingsOmniSync GDrive
  2. Click Sign in with Google and follow the device code flow
  3. After signing in, the status bar shows ☁️ GDrive: idle. Use Test All in the Directory Mappings section to verify folder access

2. Add Directory Mappings

  1. In the Directory Mappings section, use the Add button to create a mapping
  2. Set Local Path — the vault folder to sync (e.g., Documents)
  3. Set Drive Folder ID — the Google Drive folder ID (from the URL: https://drive.google.com/drive/folders/<FOLDER_ID>)
  4. Click Test All to verify enabled folder connections (green ✓ / red ✗ status indicators)
  5. Enable the mapping

Usage

Commands

CommandDescription
Sync now with Google DriveFull bidirectional sync (upload + download + delete)
Pull from Google DriveOne-way download only (no uploads, no Drive deletions)
Show sync statusDisplay last sync time and synced file count
Resolve pending conflictsCurrently shows sync status (same as above); conflict review is handled inside the sync/pull flow

Sync Behavior

ActionSyncPull
Local file changed → upload to Drive❌ Skipped
Drive file changed → download to local
Local file deleted → delete from Drive❌ Skipped
Drive file deleted → delete locally
Conflict (both changed)Prompt for resolutionPrompt for resolution

Ignore Rules

Files and folders can be ignored during sync:

  • Patterns — Glob patterns (e.g., *.tmp, .DS_Store)
  • Folders — Directory names to skip (e.g., .trash, .obsidian)
  • Gitignore — Auto-merge patterns from your vault's .gitignore

Configuration

All settings are stored in .obsidian/plugins/gdrive-bisync/data.json:

  • OAuth — Client ID, encrypted tokens, token expiry
  • Sync Mode — Manual, auto-pull, auto-push, or full auto
  • Sync Interval — Auto-sync interval in minutes (default: 30)
  • Directory Mappings — Local path ↔ Drive folder ID pairs
  • Ignore Rules — Patterns and folders to exclude
  • Git Integration — Auto-commit before/after sync

Security

  • OAuth tokens are encrypted with AES-256-GCM before storage
  • The encryption key is generated at runtime and stored in the plugin config
  • Note: The encryption key and encrypted tokens reside in the same config file (data.json). This is standard for Obsidian plugins but means anyone with filesystem access to your vault can decrypt the tokens. Treat your vault's config with the same care as your credentials.
  • Token refresh happens transparently using the stored refresh token. If refresh or decryption fails, the tokens are cleared and you must sign in again.

Development

Prerequisites

  • Node.js 18+
  • npm

Build

npm install
npm run build

Output: main.js

Release

bash build/build-release.sh

Output: dist/gdrive-bisync.zip

Project Structure

src/
├── auth/            # OAuth device code flow, token management
│   ├── OAuthClient.ts
│   └── TokenManager.ts
├── drive/           # Google Drive API client
│   ├── DriveClient.ts
│   ├── DriveChanges.ts
│   └── DriveFile.ts
├── git/             # Git integration
│   └── GitIntegration.ts
├── settings/        # Plugin settings UI and config
│   ├── SettingsManager.ts
│   └── SettingsTab.ts
├── sync/            # Sync engine and conflict detection
│   ├── ConflictDetector.ts
│   ├── SyncEngine.ts
│   ├── SyncPlan.ts
│   └── SyncStateManager.ts
├── types/           # TypeScript type definitions
│   └── index.ts
├── ui/              # Modal dialogs and status bar
│   ├── ConflictResolutionModal.ts
│   ├── SyncPreviewModal.ts
│   └── SyncStatusBar.ts
├── utils/           # Utilities
│   ├── CryptoUtils.ts
│   ├── FileUtils.ts
│   └── IgnoreUtils.ts
└── main.ts          # Plugin entry point

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.