00 — How a backup actually runs

Not the code — the order of operations, and the checks at each step. This is what separates a backup you can rely on from a job that merely finished without complaining.

1. It checks it is allowed to run

Before anything else: is this client active, is another run already going, is a restore in progress? An archived or suspended client is refused outright, and the scheduler asks again at the moment a run fires rather than trusting what was true when the schedule was made.

2. It takes a complete inventory

Every account is listed in full from Google before a single byte moves — mail, files, calendars, contacts. The listing is the source of truth for the whole run, and it is built from what Google returns, not from what downloads successfully.

3. It works out what has changed

Each item is compared against the index of what is already held. Unchanged items are skipped without transferring anything. A file that has only been moved gets its recorded path corrected, with no re-transfer.

4. It transfers, with the brakes on

Concurrent workers per data type, exponential backoff, Retry-After honoured, 429 and 5xx retried. When Google's daily quota is reached the run parks within seconds — an amber state of its own, never a green tick.

5. It writes, then records

The object lands at your destination first; only then is it written to the index. That order matters: an interrupted run leaves data that is present but not yet indexed, which the next run simply re-checks — never an index entry pointing at something that was never written.

6. It notices what has gone

Anything indexed but missing from the inventory has been deleted at source, and the date is recorded. This is refused — deliberately — if the listing was incomplete, filtered, empty, or would mark more than half an account at once. Failing to notice a deletion costs storage; wrongly marking a live file eventually destroys a good backup.

7. It reports what really happened

Completed, partial, parked, cancelled, stale or failed — each distinct, each meaning what it says. Counts come from the run itself rather than an estimate, and every error is kept with the job that produced it.

8. It cleans up on a fixed schedule

An item deleted at source is kept for a year, then its backup is removed for good — the object first, the index entry only once the destination confirms. That window is fixed in the software and cannot be shortened by whoever is looking at the storage bill.

00b — What happens when something goes wrong

Most of the engineering is here rather than in the happy path.

The server dies mid-run

A run holding a lock that stops being updated is detected and marked stale rather than left "running" forever. The next run inherits its progress and continues incrementally instead of starting the whole workspace again.

The destination is unreachable

A destination is validated by writing and deleting a real probe object before it is ever accepted — listing permission is not proof of write permission. Anything that fails a write is refused rather than accepted and discovered later.

You change where backups go

The previous destination is frozen, not deleted: its index is kept and stays restorable, and the new destination starts fresh. Nothing you have already backed up becomes unreachable because you switched provider.

The disk fills up

Free space is checked against a floor before a local run starts, and a destination that is already at that floor is refused at the point you configure it — not at three in the morning.

A restore is interrupted

Every restored item is ledgered as it lands, so resuming skips what is already there instead of duplicating it. Restores are driven by the index, not by a run folder, so they do not depend on which night the data happened to arrive.

Deletion is asked for

Removing a client is two deliberate acts on two screens: archive first — which freezes backups but keeps restores working — then delete, with the client named by hand, a reason recorded, and the measured impact shown first. Stored objects go before the index, and a single storage failure stops the whole thing rather than orphaning data.

The licence server is down

Verification fails open. An unreachable licence server never stops a backup, never blocks a restore and never locks you out of the console — it says it could not check, and carries on.

The console itself is lost

The application backs up its own database to the same destination your client data goes to, verifying the copy row by row before any older one is pruned, with a manifest stating what is needed to read it back.

01 — What gets backed up

Complete coverage of a Google Workspace account, not just the inbox.

Gmail

Every message, indexed and restorable individually — including labels.

Google Drive (My Drive)

All files, with the original folder tree recorded so restores rebuild it exactly.

Shared Drives

Full shared-drive backup with per-drive tracking and containment on restore.

Calendars & Contacts

Backed up alongside mail and files; calendar restores update rather than duplicate events.

Google-native files

Docs, Sheets and Slides are exported to Office formats; if Google refuses an export, a PDF fallback runs, then a metadata record — nothing is silently skipped.

Workspace settings scopes

Data-retention features capture Gmail settings where granted, and the app tells you exactly which scopes it needs.

02 — The backup engine

Built for the realities of Google's API: quotas, rate limits and very large first runs.

Incremental by design

After the first full run, only changed files and new mail move. Unchanged data is never re-downloaded or re-uploaded — including files that were merely moved between folders.

Moved files tracked free

Google doesn't change a file's modified time when it moves. GWS Backup notices anyway and updates the recorded path without re-transferring a byte.

Parallel backup bots

Concurrent workers per data type, tuned to stay politely inside Google's rate limits — watch them live on the monitor.

Quota-aware "Parked" state

When Google's daily quota hits, the run parks cleanly within seconds — a distinct amber status, never a fake success — and the next run continues where it left off.

Retries with backoff

Every network call gets exponential backoff, Retry-After handling and 429/5xx retries.

Instant cancellation

Cancelling a run tears down in-flight connections immediately via AbortController — no zombie threads, no leaked memory, status recorded honestly as cancelled.

Auto-recovery

A health watcher spots stalled runs and resumes them incrementally — inheriting the previous run's progress rather than starting over.

Shield folders

Mark folders as preserved so retention policies never touch them, on every destination type.

03 — Storage destinations & migration

Your storage, your rules — and changing your mind is safe.

Four destination types

Google Drive, local disk / NAS, Amazon S3, and Azure Blob storage — all first-class citizens for both backup and restore.

Validated before trusted

A new destination is probed with real read, write and delete tests before a single backup is pointed at it.

Non-destructive migration

Switch destinations (say, Drive to S3) and the old one is frozen as a restore-only archive — everything ever backed up stays findable and restorable.

Original folder structure everywhere

Every destination records where each file lived, so a restore rebuilds the real folder tree — not a flat dump at the root.

Storage forecasting

The console predicts storage needs for the year ahead from real growth trends.

Backfill tooling

Utility scripts upgrade historic backups in place — recording folder paths for old rows without re-transferring data.

04 — Restore & recovery

Backups are only as good as the restore. This is where the obsession shows.

Restore anything

A whole workspace, one account, one folder, or a single email or file from the File Explorer.

5-step Recovery Wizard

Three dedicated modes — Disaster Recovery, Point-in-Time Rollback, Migration/Clone — with pre-flight destination checks and a type-RESTORE confirmation gate.

File version history

Every backup keeps the previous copy of a changed Drive file, so you can pick an earlier version by date and restore it — including one from before ransomware encrypted it. Email is immutable and cannot be edited, so it is restored as sent rather than versioned.

Roll back to a moment

Restore a whole workspace, one account, or one section as it stood at a chosen backup, not merely as it stands now. How far back you can go is set by your own retention policy.

See what changed, and when

A chart per workspace, account and shared drive showing how much was modified, added and deleted at each backup. A mass rewrite is obvious on sight — and so is an employee clearing their drive before they leave.

Restore to a different user

Recover an absent employee's mail or files straight into a colleague's account — no password resets, no 2FA workarounds.

Everything labelled

Cross-account restores are tagged automatically — a Restored/<source> Gmail label, name prefixes on Drive files — so restored data is easy to find and tidy up.

Contained, never scattered

Cross-account and shared-drive restores rebuild inside a clearly named container folder; anything whose original location was never recorded is quarantined in Unfiled/ instead of littering the drive root.

Resumable restores

An interrupted restore continues where it stopped — a per-item ledger means nothing already restored is duplicated.

Quota-aware, cancellable

Restores park on daily quota just like backups, retry transient errors with backoff, and can be stopped instantly mid-run.

Honest error reporting

Every restore error is kept, listed with file and timestamp, downloadable as a client-ready report — and raw Google errors are translated into plain English.

Completion you can see

Explicit confirmation banners for every restore — single item, batch or bulk — plus a live progress banner that survives navigation and reattaches on page load.

05 — Scheduling & automation

High-frequency incremental schedules

Per-client scheduling with overlap detection and load-aware planning.

Data retention policies

Custom compliance policies tuned to your country's data-protection law, per client.

Self-maintaining database

Scheduled optimisation compacts the app's own database — with a safety backup taken first, deep housekeeping of old rows, and scheduling that avoids your backup windows.

Startup healing

Jobs orphaned by a crash or restart are detected and closed out honestly on boot — nothing spins forever.

06 — Built for MSPs

Multi-workspace management

Any number of Google Workspace domains from one interface, each with its own schedule, retention and destination.

Archive before delete

Clients can be archived with a retention countdown before permanent deletion — with an Archive Hub to restore or force-delete, and duplicate-client detection on the way in.

Roles & team accounts

Separate roles for administration and restore operation, with 2FA login security.

Workspace admin tools

Everyday domain admin tasks handled inside GWS Backup itself.

Deep investigations

Search indexed backups across every client in seconds — read emails in basic form for investigations, without downloading an archive.

Branded reporting

Custom-branded reports with stats, charts and tables — exportable to PDF or Word, evidence-grade for compliance, and genuinely engaging for clients.

Full audit trail

Every action is audited and reportable — prove to clients that everything is backed up, restored, and handled properly.

Heartbeat API coming

Read-only status endpoints secured by API key, feeding a companion mobile app — check backup health from your phone.

07 — Linux server backup

It also protects the servers your clients run on — included in the free licence, like everything else here.

Account & database backup over SSH

Full-server, granular, or databases-only scopes — MySQL/MariaDB dumps taken per table, safely, with a manifest of what was captured.

Automated database restore

A guided wizard restores whole databases or individual tables over SSH — no database ports exposed, type-RESTORE confirmation before anything runs.

Non-destructive schedule editing

Change a server's backup schedule without touching its identity or history.

08 — Honesty, by design

The feature the whole product is built around.

Zero silent failures

A run is only reported successful when it truly finished. Stopped, parked, partial and cancelled runs say exactly that — with the real error, in plain English.

Live monitor

Watch every email and file transfer in real time. Nothing is hidden behind a spinner.

Truthful statuses everywhere

Distinct, accurate states — running, parked (quota), cancelled, partial, failed, completed — on every screen, every report, every badge.

Plain-English errors

Raw Google API errors are rewritten as actionable messages, with the original preserved for support.

09 — Deployment, editions & licensing

Zero-config Linux & cPanel

A standalone .zip — drop it into cPanel or any Linux VPS and run.

Native Windows installer

A standard .exe that sets up everything, including background services.

Official Docker support

A pre-configured Docker Compose file for instant, isolated deployment on any OS.

Runs as a background service

Installs run invisibly as a service and survive reboots.

Free for up to ten workspaces

One edition, built for organisations and MSPs — the complete application, free under the GWS Backup Free Licence. Above ten workspaces, by enquiry.

Simple licensing

Free licence keys issued on registration — one key, one running installation, up to ten client workspaces. Donating changes nothing about the software — there is nothing held back.

Lightweight

Roughly 50MB of RAM per client workspace — it runs happily on modest hardware.

In-place updates

A guided update path that backs up the app's own database before every upgrade.

That's the honest state of the software today. For what's next — the onboarding tour, the companion mobile app — see the roadmap. For how it all behaves in practice, the FAQ answers the questions everyone asks.

Get your free licence