RSN Site Backup Pro

Description

RSN Site Backup Pro creates compressed backups of your entire WordPress site – the
database and every file – and stores them wherever you want. Restoring is a single
click and works even when moving the site to a new domain or host.

Destinations

  • Local computer / server – keeps packages on your web server so you can
    download them to your computer at any time.
  • Remote server (FTP / FTPS) – uploads to any FTP host, with optional TLS.
  • Google Drive – stores backups in your own Drive account using Google’s
    OAuth2 flow, including resumable uploads for large files.

All three are available, and a scheduled backup can be mirrored to as many of
them as you like. A backup you start yourself from the Backup Now screen
always goes to the one destination you pick there.

How a backup works

Following the standard WordPress backup/restore principle, a package contains:

  • database.sql – a full dump of every table, with a manifest of the source site.
  • files.zip – the site files (see Backup scope below).
  • wp-config.php – included for reference so you can see the source site’s
    configuration. The plugin never writes it to the site root; on a new host,
    run the WordPress installer first so it creates its own wp-config.php.
  • rsn-backup-manifest.json – site URL, paths, table prefix and format version.

Backup scope

Under Settings -> Backup contents you choose what the file archive covers:

  • Off (default) – only wp-content is backed up: uploads, plugins and themes.
    Smaller and much faster, which is all most recoveries need.
  • On – “Include all files in the root folder of the site” archives the whole
    install: wp-admin, wp-includes, wp-content, wp-config.php and every
    other file sitting at the top level. Use this for a complete, self-contained
    copy that can rebuild the site from scratch on a new host.

The backup storage folder, cache folders and node_modules are always skipped,
so a backup can never include itself. The setting screen shows the current scope
and the file count/size it will produce.

Stop, resume and cancel

While a backup or restore is running, the progress card offers three controls:

  • Stop – pauses the job and keeps its state exactly where it is.
  • Resume – continues from that point; the database dump restarts at the
    table it stopped on rather than from the beginning.
  • Cancel – discards the job and its partial files. A cancelled backup is
    listed with a cancelled status and can be deleted from the Backups screen.

A stopped job keeps its slot, so a new backup cannot start until it is resumed
or cancelled. If a job is stopped and then abandoned for 24 hours, it is
cancelled automatically so it can never block future backups.

Because the work happens on the server, a stopped job stays stopped even if the
browser is closed – WP-Cron leaves it alone until you press Resume.

Connection checks before backing up

Every selected destination is verified before the backup starts. If FTP is
missing its host, username or password, or Google Drive has not been connected,
the backup is refused straight away with a message naming the problem, rather
than building a large package and failing at upload time. All problems are
listed at once so they can be fixed in a single pass.

Choosing a destination

On the Backup Now screen you pick exactly one destination – the three
choices are radio buttons, so only one can ever be selected and one is always
chosen for you. If you pick a destination that is not set up yet, the backup
stops before it starts and tells you what is missing.

Scheduled backups work differently: under Settings you can tick several
destinations, and every scheduled run is mirrored to all of them.

Seamless restore

The restore screen follows the correct order so a moved site just works:

  1. The package is fetched (from FTP or Drive if there is no local copy).
  2. The database is imported.
  3. URLs are replaced across every table, including serialised values, so the site
    functions at its new address.
  4. Files are unpacked over the WordPress root.
  5. Caches and rewrite rules are flushed.

You can restore the database, the files, or both, and choose a different site
address in the same step.

Features

  • Scheduled backups (hourly to monthly) with a configurable start time.
  • Retention by count and/or age – old backups are removed automatically.
  • Optional AES-256 encryption for packages at rest.
  • One-click site migration / domain change.
  • Partial restores (database only, files only).
  • Time-sliced processing, so large sites never hit a PHP timeout.
  • Works on shared hosting: jobs continue via WP-Cron even if the browser closes.
  • WP-CLI commands for scripted backups and restores.
  • Detailed activity log per backup.

Connecting Google Drive

Google Drive needs your own OAuth client, because only then are the backups
yours alone. Creating one is a one-off, and takes a few minutes:

  1. Open the Google Cloud Console, create a project, and enable the Google
    Drive API
    .
  2. Under APIs & Services -> Credentials, create an OAuth client ID of
    type Web application.
  3. Add the redirect URI shown on the plugin’s settings screen, with the
    Copy button next to it. The plugin warns you if the file you paste was
    created for a different site, which is the usual reason this step fails.
  4. Download the JSON file Google offers, and paste the whole thing into the
    Credentials file box on the settings screen. The client ID and secret are
    read out of it for you, so there is nothing else to copy by hand.
  5. Save, then press Connect Google Drive and choose your account.

If you would rather type the values yourself, use the Enter them by hand
instead
link.

“Google no longer accepts this connection”

Google ends a connection for a few reasons, and the plugin names which one
applies:

  • Access was revoked, either by you or from the Google account’s security
    settings.
  • The consent screen is still in Testing. This is the one that catches
    people out: while an OAuth app is in Testing, Google expires these
    connections after 7 days, so a working setup stops working on day 8. Move
    the consent screen to In production in the Google Cloud Console, then press
    Connect Google Drive again.
  • The OAuth client was deleted in the Google Cloud Console. Create a new
    one, paste its file, and connect again.

Temporary problems – the site being offline, Google being briefly unavailable –
are never treated as a dead connection, so a network blip will not cost you a
working setup.

Replacing your credentials also disconnects the account, because a stored
connection only ever works with the client that issued it. The plugin does this
for you and tells you to reconnect, rather than leaving a connection that looks
fine and then fails during an overnight backup.

Third-party services and privacy

RSN Site Backup Pro does not send backups, analytics, or other site data to RSN.
It only contacts external services that an administrator explicitly configures:

  • Google Drive (optional): after an administrator connects a Google account,
    the plugin sends backup archives to that account through the Google Drive API.
    A backup can contain the site’s database, files, and therefore personal data
    held by the site. Google Drive use is governed by Google’s Terms of Service
    and Google’s Privacy Policy.
  • FTP / FTPS (optional): after an administrator configures a server, the
    plugin sends backup archives and uses the connection credentials only to
    communicate with that administrator-selected server. The server operator’s
    own terms and privacy policy apply.

The plugin stores the destination settings and Google OAuth credentials in this
WordPress installation. Site owners should update their site’s privacy policy
to explain their chosen backup destination and the data contained in backups.

Screenshots

Installation

  1. Upload the rsn-site-backup-pro folder to /wp-content/plugins/.
  2. Activate the plugin through the Plugins menu.
  3. Open RSN Backup -> Settings and choose your destination.

For Google Drive, see Connecting Google Drive below.

FAQ

Do I need FTP or SSH access?

No. The plugin runs entirely inside WordPress. The local destination works on
any host, including shared hosting.

Will a large site time out?

No. Backups and restores are broken into short slices, each saved to the
database and resumed by the next request or by WP-Cron.

Can I move my site to a new domain?

Yes. Create a backup, then restore it on the destination with the new address
filled in. Every stored URL, including serialised data, is updated for you.

Where are backups stored locally?

Inside wp-content/rsn-backups by default. The folder is protected with an
index.php guard and an .htaccess deny rule.

Is my data safe during extraction?

Yes. Archive entries are validated before extraction, and any path containing
../ or an absolute path is rejected.

Will a stopped backup be lost if I close the browser?

No. Stopping and resuming are handled entirely on the server, so a job stays
stopped between browser sessions and continues from the same point when you
press Resume.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“RSN Site Backup Pro” is open source software. The following people have contributed to this plugin.

Contributors

Translate “RSN Site Backup Pro” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.1.3

  • Fixed backups failing with “The backup could not be uploaded after several attempts. The backup file to save is missing.” Overlapping requests (browser polling, WP-Cron and the loopback tick) could run the same backup step at once and delete the freshly stored backup. Backup and restore jobs now process one step at a time.
  • A failed file move can no longer delete a backup that is already stored.
  • The upload step no longer re-scans the whole site before each attempt, so large sites no longer run out of time during the upload.
  • Backups sent to the local folder and to FTP or Google Drive together now upload to every destination; the remote uploads previously could not find the package after it was moved locally.
  • A failed upload is now retried the full number of times, and a backup that was saved locally before a later upload failed is still listed and downloadable.
  • Fixed the FTP check always reporting “Connected successfully, but files could not be written to the remote directory.” even when the folder was writable.
  • Passive FTP now works with servers behind NAT that report a private address for data connections.

1.1.2

  • Compliance with WordPress.org review guidelines: the local backup path is now validated so backups are only ever stored inside wp-content, never in the plugin or core directories.
  • Uploaded backup packages are now handled through WordPress’ wp_handle_upload() instead of move_uploaded_file().
  • The restore no longer writes wp-config.php to the site root; on a new host, run the WordPress installer first so it creates its own wp-config.php.
  • Decryption now reports a failure when the decrypted file cannot be written.

1.1.1

  • Added a protected backup-package upload flow to the Restore screen.
  • Added a step-by-step Google Drive connection guide in Settings.
  • Added third-party service and privacy disclosures, including suggested privacy-policy text.
  • Backup records and locally stored packages are now retained on uninstall unless an administrator explicitly opts in to deletion.
  • Raised the supported PHP baseline to 7.4.

1.1.0

  • Google Drive credentials are now pasted as the single JSON file Google
    issues, instead of copying a client ID and secret across by hand.
  • Warns immediately if those credentials were created for a different site,
    which is the usual cause of a redirect URI mismatch.
  • Google connection failures now name their cause (revoked, client deleted,
    bad credentials) instead of showing a bare invalid_grant.
  • A connection Google has ended is cleaned up and the reason is shown on the
    settings screen. Temporary network and Google outages no longer discard a
    working connection.
  • Reconnecting or disconnecting now revokes the superseded token with Google.
  • Added a Disconnect button to the Google Drive settings, with confirmation.

1.0.0

  • Initial release.