Disclosure: we make Ambifold, a two-way sync app for Linux that runs rclone bisync inside. It is in a private beta, by invitation, in October and November 2026, and the public beta is planned for 1 December 2026. Sections 1 to 4 work without it. If something here is wrong or out of date, please tell us at support@ambifold.com.
In short
- bisync remembers both sides. After each run it saves a list of the files on each side. The next run compares both sides with those lists, then copies new and changed files and carries deletes across, both ways. The very first run uses
--resync; normal runs must not. - By hand, you need five things: a current rclone (Ubuntu's and Mint's package is too old), your own Google client, a filter file, a script with the safety flags, and a systemd timer. Everything is below, tested with rclone v1.75.1.
- What goes wrong: a
--resyncat the wrong time, lost listing files, renamed folders and Google Docs.--max-delete, a backup folder and Drive's trash limit the damage. - GUIs: rclone's own GUI has no bisync screen. Rclone UI, Rclone Manager and RcloneView can start bisync jobs. Ambifold runs bisync in the background for you, with a preview, a stop before mass deletes and backups.
How we checked: we ran the script, the filter file and the failure cases below with rclone v1.75.1 on Linux Mint 22.3, between two local folders, and checked the systemd files with systemd-analyze verify. The parts specific to Google Drive follow rclone's documentation and what we learned running bisync against Drive inside Ambifold. Not sure whether you want sync at all? Our guide to mounting versus syncing Google Drive explains the difference.
1. What bisync does
bisync works with two paths. In this guide, Path1 is a folder on your computer and Path2 is a folder in your Google Drive. After every successful run, bisync saves a listing of each side in its working folder (by default ~/.cache/rclone/bisync).
On the next run, it lists both sides again and compares each one with its saved listing. A file that is new or changed on one side is copied to the other. A file that was deleted on one side is deleted on the other. A file that changed on both sides is a conflict, and bisync keeps both versions.
The first run is different. There are no saved listings yet, so you run bisync once with --resync. A resync copies every file that is missing on one side to the other, so both sides end up with all the files. It deletes nothing. When a file exists on both sides but differs, one version replaces the other. By default the Path1 version (your computer's) wins, even if it is older. Add --resync-mode newer to keep the newer one instead.
Never put --resync in your schedule. rclone's documentation is clear on this: because a resync only copies, a file you delete would come back from the other side on every run, and a renamed file would end up under both names. Use it only:
- for the first run between two folders;
- after you change your filter file;
- when bisync stops with an error that says it needs one.
bisync exits with code 0 when a run succeeds, 1 when a run failed but a later one may work, 2 for a mistake in the command, and 7 for a serious error. rclone's documentation says a 7 needs a --resync, but with --resilient (used in the script below) some code-7 errors clear by themselves on a later run. Step 8 explains how to tell.
2. Doing it by hand
The examples sync ~/DriveSync on your computer with a folder called DriveSync in your Drive, through an rclone remote called gdrive. Change the names to suit you.
Step 1: install a current rclone
Ubuntu 24.04 and 26.04 offer rclone 1.60.1 in their repositories (checked 16 October 2026). Linux Mint 22 uses the same package, and so will the coming Linux Mint 27 “Adrien”, which is built on Ubuntu 26.04. That version predates bisync's fixes in 1.64 and 1.66, among them one where --resync could wrongly delete empty folders and duplicate files that existed only in Drive, and it lacks most of the flags below (--resync-mode, --recover, --max-lock, --conflict-resolve, --backup-dir1). Check yours with rclone version. If it is older than 1.66, remove it and install rclone's current release, with its install script or with the .deb file from rclone.org/downloads:
sudo apt remove rclone
sudo -v ; curl https://rclone.org/install.sh | sudo bash
rclone version
We checked this guide against rclone v1.75.1 (4 September 2026). v1.75.2 (9 October 2026) fixes security issues and bugs elsewhere in rclone; its changelog lists no changes to bisync.
Step 2: connect Google Drive with your own client
rclone's Google Drive page says its shared client ID “will stop working during 2026”, and that creating your own is “now required”. Our guide to creating your own Google Drive client ID walks you through it, with pictures (rclone's own page: making your own client ID). Then run rclone config:
- Choose n (new remote) and name it
gdrive. - For the storage type, enter
drive. - Paste your client ID and client secret.
- For the scope, choose 1 (full access). Leave the other questions at their defaults.
- Sign in with Google in the browser window that opens.
If you already have a remote that uses the shared client, edit it in rclone config, enter your client ID and secret, then run rclone config reconnect gdrive:.
Step 3: make the two folders and the check files
mkdir -p ~/DriveSync
rclone mkdir gdrive:DriveSync
touch ~/DriveSync/RCLONE_TEST
rclone copyto ~/DriveSync/RCLONE_TEST gdrive:DriveSync/RCLONE_TEST
Both folders must exist before the first run. The two RCLONE_TEST files are for --check-access: with it, bisync stops unless it finds the file in the same place on both sides. That catches a disk that isn't mounted or a wrong path before anything is deleted. Leave the files where they are. bisync checks for them during --resync too, so create them first.
Step 4: a filter file
Save this as ~/.config/drive-bisync/filters.txt. Each line that starts with - leaves matching files out of the sync, and a pattern that ends with / leaves out a whole folder.
# Files bisync leaves alone. After any change to this file,
# run once with --resync (try it with --dry-run first).
- .~lock.*#
- *~
- *.swp
- *.tmp
- .Trash-*/
- .directory
- node_modules/
These are LibreOffice lock files, editor backup and swap files, temporary files, trash folders on other disks, the folder settings KDE writes, and a folder of downloaded code packages. Add your own, such as a folder of large videos.
bisync keeps a checksum of this file (in filters.txt.md5 next to it). If the file changes, the next run stops and asks for a --resync. Otherwise files that are newly left out would look deleted. Keep your filters in this file rather than as --exclude options on the command line, because bisync checks only the file for changes.
Step 5: the script
Save this as ~/.local/bin/drive-bisync, then make it executable with chmod +x ~/.local/bin/drive-bisync:
#!/bin/bash
# One two-way sync pass between ~/DriveSync and gdrive:DriveSync.
# Options you add are passed to rclone, for example --dry-run or --resync.
set -eu
LOCAL="$HOME/DriveSync"
REMOTE="gdrive:DriveSync"
STATE="$HOME/.local/state/drive-bisync"
FILTERS="$HOME/.config/drive-bisync/filters.txt"
# Keep the backups of replaced and deleted local files for 30 days.
cutoff=$(date -d '30 days ago' +%F)
for day in "$STATE"/backup/????-??-??; do
if [[ -d $day && ${day##*/} < $cutoff ]]; then rm -rf -- "$day"; fi
done
exec rclone bisync "$LOCAL" "$REMOTE" \
--workdir "$STATE/work" \
--filters-file "$FILTERS" \
--check-access \
--max-delete 50 \
--resilient --recover --max-lock 2m \
--conflict-resolve newer --conflict-loser num --suffix-keep-extension \
--create-empty-src-dirs \
--backup-dir1 "$STATE/backup/$(date +%F)" \
--drive-skip-gdocs \
--disable ListR \
-v "$@"
If command -v rclone shows rclone somewhere other than /usr/bin, write that full path in place of rclone: the timer in step 7 may not find it otherwise. What each option does:
| Option | What it does |
|---|---|
--workdir |
Keeps bisync's listings out of ~/.cache, which cleaning tools empty. Without its listings, bisync needs a --resync. |
--check-access |
Stops the run unless the RCLONE_TEST files from step 3 are found on both sides. |
--max-delete 50 |
Stops the run, without changing anything, if more than 50% of the files on either side were deleted. In bisync this is a percentage, not a number of files as in rclone sync. 50 is the default; a lower number stops sooner. With --create-empty-src-dirs, deleted folders count too. |
--resilient |
After a less serious error, lets the next scheduled run try again instead of locking you out until a --resync. |
--recover |
After a crash or a power cut, carries on from the last successful run instead of asking for a --resync. |
--max-lock 2m |
Lets the lock file of an interrupted run expire. Without it, a stale lock blocks every later run. Two minutes is the shortest value allowed. |
--conflict-resolve newer, --conflict-loser num, --suffix-keep-extension |
When a file changed on both sides, the newer version keeps the name and the older one is kept next to it on both sides, as for example report.conflict1.odt. Without --conflict-resolve, both versions are renamed. The last option keeps the file extension at the end, so the copy still opens in the right app. |
--create-empty-src-dirs |
Syncs empty folders too. Decide before the first run: switching it later needs a --resync. |
--backup-dir1 |
Moves files on your computer that a run deletes or overwrites into a backup folder, one per day, instead of removing them. The script deletes those folders after 30 days. On the Drive side, rclone moves deleted files to Drive's trash by default, and Drive keeps earlier versions of a replaced file in its version history, so --backup-dir2 is optional. |
--drive-skip-gdocs |
Leaves Google Docs, Sheets and Slides out (see section 3). |
--disable ListR |
Makes sure Drive is listed folder by folder, without --fast-list (see section 3). |
-v |
Logs every decision, so you can see why a file was copied or deleted. |
bisync compares files by size and modification time unless you set --compare. Adding checksum catches a change that keeps the same size and time, but then rclone reads every file on your computer on every run, which is slow for a large folder. --slow-hash-sync-only is a middle way that rclone's documentation explains.
Step 6: the first run
First, see what the resync would do, without changing anything:
~/.local/bin/drive-bisync --resync --resync-mode newer --dry-run
Read the output. The line “Path2 … Resync is copying files to … Path1” is followed by the files that would come down from Drive, and “Path1 … Resync is copying files to … Path2” by those that would go up. Each file is marked “Skipped copy as --dry-run is set”. If it looks right, run it for real, then run a normal pass:
~/.local/bin/drive-bisync --resync --resync-mode newer
~/.local/bin/drive-bisync
A good run ends with “Bisync successful”, followed by a summary of what was transferred.
Step 7: run it on a schedule with a systemd timer
rclone's documentation says bisync can't watch for changes and “must be blindly run periodically”. A systemd user timer does that. Create three files in ~/.config/systemd/user/.
drive-bisync.service:
[Unit]
Description=Two-way sync of ~/DriveSync with Google Drive (rclone bisync)
OnFailure=drive-bisync-alert.service
[Service]
Type=oneshot
ExecStart=%h/.local/bin/drive-bisync
# On logout or shutdown, give bisync time to stop cleanly.
KillSignal=SIGINT
TimeoutStopSec=120
drive-bisync.timer:
[Unit]
Description=Run drive-bisync every 5 minutes
[Timer]
OnBootSec=2min
OnUnitActiveSec=5min
[Install]
WantedBy=timers.target
drive-bisync-alert.service, which shows a notification when a run fails:
[Unit]
Description=Show a notification when drive-bisync fails
[Service]
Type=oneshot
ExecStart=/usr/bin/notify-send --urgency=critical "Drive sync failed" "Run: journalctl --user -u drive-bisync -n 50"
Then switch the timer on, and test the notification:
systemctl --user daemon-reload
systemctl --user enable --now drive-bisync.timer
systemctl --user start drive-bisync-alert.service
systemctl --user list-timers
A few things to know:
- Logs:
journalctl --user -u drive-bisyncshows every run; add-fto follow along. - Stopping cleanly: on SIGINT, bisync finishes or cancels its copies and saves its state, which takes up to 90 seconds. That is why the service sends SIGINT and waits 120 seconds.
- Pausing:
systemctl --user stop drive-bisync.timer, andstartto resume. - Logged out: user timers run only while you are logged in. To run them all the time, run
loginctl enable-lingeronce. - Large folders: every run lists both folders in full. If runs take minutes, set a longer interval.
Step 8: when bisync stops
- “Safety abort: too many deletes”. Nothing was changed. The log lists the deleted files. To see what a forced run would do, run
~/.local/bin/drive-bisync --dry-run --force. If that is what you meant, run it once with--force. If not, put the files back (from your desktop's Trash, or from the trash on drive.google.com), and the next run carries on normally. - Conflicts. Find them with
find ~/DriveSync -name '*.conflict[0-9]*'. Compare the two versions, keep what you need and delete the other; the delete syncs too. - Exit code 7. Read the log first. After a passing problem, such as a missing
RCLONE_TESTfile because a disk wasn't mounted, it says “Error is retryable without --resync due to --resilient mode”: fix the cause, and the next run carries on. If it says “must run --resync”, or that it “cannot find prior Path1 or Path2 listings”, later runs keep failing, even when the next line calls the error retryable. Then run the dry-run resync from step 6, read it, and run it for real. - A lock file. With
--max-lock 2m, an old lock expires by itself. Delete a.lckfile in~/.local/state/drive-bisync/workby hand only whenpgrep -a rcloneshows no bisync still running.
3. What goes wrong
A resync at the wrong moment
A resync assumes nothing was deleted. Files you deleted on one side since the last successful run come back from the other side, and where both sides have a version, one replaces the other. With the script above, a replaced file on your computer goes to the backup folder, and a replaced file in Drive stays in its version history. Still, always run --dry-run first, and delete again what came back.
Lost listings
bisync can't run without the listings from its last run. It stops with “cannot find prior Path1 or Path2 listings” (exit code 7), and you need a resync, with the risks above. Listings get lost when:
- a cleaning tool empties
~/.cache(the reason for--workdirin the script); - you rename or move
~/DriveSyncor the Drive folder, or change the paths in the script: the listings are named after the two paths, so bisync looks for new ones; - a serious error makes bisync rename them to
.lst-err, on purpose, to block the next run.
Renamed or moved folders
bisync doesn't track folders. If you rename a folder inside ~/DriveSync, the next run sees every file in it as deleted and every file under the new name as new. It deletes the old files in Drive (they go to Drive's trash) and uploads them again under the new name. The new copies in Drive don't have the old ones' sharing settings, comments or version history: those stay with the files in the trash. The same happens the other way when a folder is moved on drive.google.com.
If the folder holds more than half of your files, --max-delete stops the run first. In our test, it stopped even when we had renamed the folder the same way on both sides. The safest way to rename a big folder:
- Stop the timer.
- Rename the folder in the same way on your computer and on drive.google.com.
- Run
~/.local/bin/drive-bisync --dry-run --force. It should show the files as “New or changed in both paths” and delete nothing. - Run it once with
--force, then start the timer again.
rclone's documentation also suggests --track-renames, which bisync supports since v1.66. Renamed files still count toward --max-delete.
Google Docs, Sheets and Slides
Google's own documents are not ordinary files. Without --drive-skip-gdocs, bisync downloads them as converted copies (.docx, .xlsx, .pptx and .svg by default). That causes surprises:
- If you rename or move a converted copy on your computer, bisync deletes the Google document in Drive (to the trash) and uploads a plain file in its place.
- If you edit a converted copy, rclone v1.75.1 can't write it back into the Google document unless you set
--drive-import-formats: the copy fails with “can't update google document type without --drive-import-formats”, and the run ends with an error. With that option, the conversion can lose formatting. - With
--drive-export-formats url, you get link files instead. They are read-only placeholders, and deleting one deletes the Google document.
We recommend --drive-skip-gdocs from the first run: your documents stay in Drive, and you open them in the browser. Switching it later makes bisync add or remove the converted copies on your computer.
--fast-list with Google Drive
--fast-list lists Drive with fewer, bigger requests, which is much faster. On rclone's Drive page, listing a folder of 10,600 folders and 39,000 files took 22 minutes without it and 58 seconds with it. But with Drive, those grouped requests can come back incomplete: there are known Google bugs (rclone issues #3114 and #4289), and the Drive page notes that, on shared drives, recently uploaded files may be missing. To bisync, a file missing from Drive's listing looks deleted in Drive, so it deletes your local copy.
rclone's bisync page says bisync uses --fast-list by default and recommends --disable ListR to avoid it. When we read rclone v1.75.1's code, bisync listed Drive folder by folder unless --fast-list was given. Either way, don't add --fast-list to scheduled runs; --disable ListR in the script makes sure. The cost is speed: sync the folders you need, not your whole Drive.
Other traps
- Two tools on one folder. Never let bisync and another sync app (or a second bisync) sync the same folder, and don't put the folder inside an rclone mount or the file manager's Drive folder. Our two-way sync safety checklist covers this and more.
- An encrypted home folder. If
findmnt -n -o FSTYPE -T ~/DriveSyncsaysecryptfs, add--modify-window 1sto the script. eCryptfs stores modification times in whole seconds, and without it, files that were just downloaded can look changed on every run. - Leftovers after a crash. rclone writes a download under a temporary name such as
report.pdf.1a2b3c4d.partialand renames it when it is complete. A crash or power cut can leave one behind, and the next run may sync it as a real file. Delete such leftovers. - Sleep. The timer counts only the time the computer is awake, so after it wakes, the next run comes within a few minutes.
4. GUIs that exist
Checked on 16 October 2026, on each project's own pages. Whichever you choose, check how it handles the first --resync, --max-delete and Google Docs before you point it at files that matter.
| App | bisync | On Linux | Keep in mind |
|---|---|---|---|
rclone's own GUI (rclone gui) |
No bisync screen | Built into rclone since v1.74 (May 2026); opens in your browser. | Its screens are Dashboard, Explorer, Remotes, Mounts, Serves and Settings. The older rclone rcd --rc-web-gui loads a web UI whose project is now archived and points to rclone gui. bisync is available through rclone's remote-control API (sync/bisync), for apps built on it. |
| Rclone UI | Yes: a Bisync screen with a resync switch and an optional schedule | AppImage, .deb and .rpm (v3.7.5, 18 September 2026), and Flathub. | Open source (Apache 2.0). Free, “with the option to unlock deeper functionality” in a paid licence. |
| Rclone Manager | Yes: bisync is one of the rclone commands its tasks run | Flathub, AUR, .deb, .rpm and AppImage (v0.3.3, 23 September 2026). | Open source (GPL 3.0). Also has workflows with schedules and folder watchers. Downloads rclone for you if it is missing. |
| RcloneView | Yes: sync jobs have a “Bidirection (Beta)” direction | AppImage, .deb and .rpm (version 1.6.8). | Its guide calls Bidirection “a beta feature” that “is not officially supported” and is “not recommended for production use”. Scheduled jobs need its paid PLUS licence. |
| Rclone Browser | Not in its feature list | AppImage (latest release 1.8.0, 17 February 2020). | Open source (MIT). Browses remotes, transfers files, mounts, and saves tasks to run again. |
| Celeste | Its own two-way sync | No longer developed. | Archived on GitHub; its last change was on 21 November 2025. |
5. What Ambifold adds on top of rclone
Ambifold has rclone v1.75.1 built in, and its bisync does the file transfers. You don't install rclone or write any scripts. On every pass it uses most of the safety flags from section 2: --resilient, --recover, --max-lock 2m, --conflict-resolve newer (adjustable), --max-delete 50 (adjustable), --create-empty-src-dirs, --backup-dir1 outside the folder, --modify-window 1s, and --drive-skip-gdocs unless you turn Docs on. Then it adds the parts that are hard to script:
| Task | By hand | In Ambifold |
|---|---|---|
| The first sync | You run --resync --dry-run and read the log. |
A preview shows how many files will be copied each way, and which ones. Nothing happens until you confirm, and the first sync deletes nothing. |
| Later resyncs | You decide when, and hope you remember the risks. | Never on its own. If the record of the last sync is lost or damaged, it asks you to preview and confirm again. |
| When to sync | A timer, every few minutes. | It watches your folders, so it notices a change on your computer within seconds and starts a sync; each sync re-reads every folder in the pair, so with a large Drive folder it can take a couple of minutes. It asks Drive for its changes every 30 seconds after recent activity, every 2 minutes when things are quiet and every 5 minutes after a few quiet hours. |
| Mass deletes | --max-delete stops the run; you read the log and use --force. |
It stops and shows you the list. You can allow it once, and it never deletes more than the list you saw. |
| Backups | --backup-dir1 and your own clean-up. |
Files a sync deletes or overwrites on your computer are kept in a backup folder for 30 days (adjustable). Deletes in Drive go to Drive's trash. |
| Crashes and locks | --recover and --max-lock. |
The same flags. After a crash or power cut it picks up from the last completed sync, and it removes a lock its own interrupted sync left. |
| A synced folder is moved or deleted | bisync stops, or deletes and copies everything again. | It puts the folder on hold and asks what to do, without deleting anything on the other side. It simply follows a folder that was moved within your Drive. See a synced folder was deleted or moved. |
| Seeing what happens | journalctl, and the notification you set up. |
A tray icon shows the status, opens a synced folder, syncs now, or pauses and resumes. A settings page opens in your browser and answers only on your own computer. |
| Listing Drive | Your choice of flags. | Folder by folder on every pass. Only the first sync's preview, which changes nothing, uses --fast-list. That is safer, and slower on large Drive folders. It also checks every folder in full every 30 minutes. |
Its limits, today:
- It is a beta: a private beta by invitation in October and November 2026, with the public beta planned for 1 December 2026. It is tested on Linux Mint and Ubuntu, with the Cinnamon and GNOME desktops.
- My Drive only. Shared drives and “Shared with me” are not supported yet; rclone bisync can sync a shared drive.
- Google Docs, Sheets and Slides are skipped by default. You can turn on converted copies. Renaming, moving or deleting one then moves the Google document to Drive's trash, as in section 3. If you edit one, Ambifold leaves it out, keeps syncing the rest of the folder, and asks whether to keep your changes as a new file or discard them.
- Changes made in Drive arrive in about 1 to 5 minutes: usually within a minute while you're working, within about five when things are quiet.
- The free edition connects through your own Google client, as rclone now does too. The app walks you through creating it.
- Because it lists Drive folder by folder, a check of a very large Drive folder takes minutes.
- Its own code is private. rclone, inside it, is open source.
If you are on a specific system, our guides to Google Drive on Linux Mint and to syncing Google Drive on Ubuntu compare the other options too, and our comparison of Google Drive clients for Linux covers the rest.
6. FAQ
Is rclone bisync safe with Google Drive?
It can be, with care. Use your own Google client, a current rclone, --resync only for the first run, --max-delete, --check-access, a backup folder and --drive-skip-gdocs, and avoid --fast-list. Start with one folder that also exists somewhere else, and check it after the first runs.
Does rclone bisync have a GUI?
Not in rclone itself: rclone gui has no bisync screen. Rclone UI, Rclone Manager and RcloneView can start bisync jobs, and Ambifold runs bisync for you in the background (section 4).
Do I need --resync every time?
No, and you shouldn't: deleted files would keep coming back. Use it for the first run, after a change to the filter file, or when bisync says it needs one.
How often should bisync run?
Every 5 minutes is a common choice: it is what the timer above uses, and what rclone's own cron example uses. Every run lists both folders in full, so if runs take longer than that, choose a longer interval or sync smaller folders.
Can bisync watch my folder for changes?
Not by itself: rclone's documentation says it must be run on a schedule. Some of the GUIs above add triggers, and Ambifold watches your folders.
Can bisync sync a shared drive?
rclone can: when you create the remote, answer yes when rclone config asks whether to configure it as a shared drive. Ambifold syncs My Drive only for now.
7. Sources
All checked on 16 October 2026, and Ambifold's release notes again on 19 October 2026.
- rclone documentation: bisync (flags, limitations, exit codes, Google Docs; its own changelog up to v1.74.2), Google Drive (shared client ID,
--fast-list,--drive-skip-gdocs,--drive-use-trash; page updated 9 October 2026), filtering, installation, GUI (page updated 30 April 2026) and remote control (sync/bisync) - rclone: changelog (v1.74.0, 1 May 2026:
rclone gui; v1.75.1, 4 September 2026; v1.75.2, 9 October 2026) and issues #3114 and #4289 - GitHub: rclone-webui-react (archived, superseded by
rclone gui) and rclone-web (the GUI's source, no bisync screen) - Ubuntu packages: rclone in Ubuntu 24.04 and Ubuntu 26.04 (1.60.1)
- systemd: systemd.timer and systemd.service
- Rclone UI: home page and GitHub (Bisync screen in its source; v3.7.5, 18 September 2026)
- Rclone Manager: GitHub (v0.3.3 release notes, 23 September 2026)
- RcloneView: Create sync jobs and downloads (1.6.8)
- Rclone Browser: GitHub (release 1.8.0, 17 February 2020)
- Celeste: GitHub (archived; last change 21 November 2025)
- Ambifold: the home page (safety, status and limits), a synced folder was deleted or moved, recovering files and the release notes (0.3.0-beta.8, 16 October 2026; for Google Docs, 0.3.0-beta.12, 18 October 2026)
8. Changes to this guide
- : first published.
- : section 5: an edited converted copy of a Google document no longer stops Ambifold's syncs of its folder. Ambifold leaves the copy out, syncs the rest, and asks whether to keep your changes as a new file or discard them.