Description
Freshet Backup makes a copy of your WordPress database on a schedule and keeps it in your Dropbox. Connect Dropbox once under Settings Freshet Backup and it takes care of the rest.
- Set up in three steps. Press Connect Dropbox, press Allow, paste the code. No developer account or API keys needed.
- Runs on a schedule. Every hour, every 6 hours, daily or weekly. Or press Run backup now.
- Kept in your Dropbox. The newest seven backups are kept and older ones removed. A backup only counts once Dropbox confirms it arrived complete.
- Tells you when something is wrong. If a backup fails or does not happen on time, a notice in wp-admin says so, with the likely reason and what to do.
- Safe on copies of your site. A copy of the site on a staging or development server does not back up into your Dropbox.
- Private on your server. A backup waits in a folder nobody can download until it is in Dropbox. If the plugin cannot confirm the folder is private, it makes no backup.
- Off until you connect. Nothing runs before Dropbox is connected. Dropbox is the only outside service it uses; see External services below.
It backs up the database only, not files or uploads, and there is no restore button: the FAQ shows how to restore.
Part of the Freshet plugin suite. Full documentation: freshet.studio/docs.
External services
Freshet Backup uses one outside service: Dropbox, run by Dropbox, Inc., to store your backups. Nothing is sent before you connect Dropbox, and nothing is ever sent to Freshet Studio or anyone else. There is no tracking.
- When you press Connect Dropbox: your browser opens Dropbox’s sign-in page (
www.dropbox.com/oauth2/authorize), where you approve access. When you paste the code back, your site sends that one-time code, the app key and a single-use verifier to Dropbox (api.dropboxapi.com) and receives a token that lets it reach its own folder in your Dropbox. - On every backup: your site trades that token for a short-lived access token (
api.dropboxapi.com), uploads the compressed database backup to its folder (content.dropboxapi.com), lists the files in that folder, and deletes its own older backups beyond the number it keeps. The backup holds everything in your site’s database tables. - When you press Disconnect: your site asks Dropbox to withdraw its token (
api.dropboxapi.com).
If you set your own Dropbox app in wp-config.php, the same requests go to the same hosts with your app’s key and secret.
Dropbox terms of service and privacy policy.
Before each backup the plugin also requests one test file from your own site, to check that the backup folder cannot be downloaded. That request goes to your site’s own address, not to an outside service.
Installation
- Install and activate. Nothing runs yet.
- Go to Settings Freshet Backup and press Connect Dropbox. Sign in to the Dropbox account that should hold the backups and press Allow.
- Paste the code Dropbox shows and press Finish connecting. Backups are now on, daily by default.
- Press Run backup now to make the first one.
Developers can set everything in wp-config.php instead: see “Can I use my own Dropbox app?” below.
FAQ
-
What is in a backup?
-
Every table that starts with your site’s table prefix, as a compressed SQL file (
.sql.gz). SetFRESHET_BACKUP_ALL_TABLEStotrueto include every table in the database. Files and uploads are not included.The database is read through WordPress itself, a few rows at a time, so it works on hosts that allow no shell commands and does not need much memory.
-
How do I restore a backup?
-
Download the file from Dropbox and import it into the database: with your host’s database tool (phpMyAdmin accepts
.sql.gzfiles), or from a shell withgzip -dc backup.sql.gz | mysql database_name. -
Where is the Dropbox connection stored?
-
In
wp-config.php, not in the database. A copy of the database on a development machine, a staging site or in a migration tool then carries no access to your Dropbox. The lines only apply on this site’s own addresses, so a copy ofwp-config.phpelsewhere does nothing either.Before changing
wp-config.php, the plugin checks the new version for errors, writes it beside the old one and swaps it in whole, then reads it back. If the read-back differs, the previous contents are put back. No copy ofwp-config.phpis kept anywhere. If it cannot write the file, the screen shows the lines to paste yourself.Disconnect removes the site’s access at Dropbox and takes the lines out again.
-
Which settings are there?
-
The screen sets how often backups run. Everything else is an optional constant in
wp-config.php:FRESHET_BACKUP_INTERVAL(seconds, or hourly / twicedaily / daily / weekly; overrides the screen),FRESHET_BACKUP_ALL_TABLES,FRESHET_BACKUP_DIR,FRESHET_BACKUP_KEEP_LOCAL(default 3),FRESHET_BACKUP_KEEP_REMOTE(default 7) andFRESHET_BACKUP_DROPBOX_PATH(default: a folder named after the site’s host). The database holds only the schedule chosen on the screen and the result of the last run. -
Where are the copies kept on my server?
-
Each backup is written to a folder on your server first. Settings Freshet Backup shows its path. By default it is a folder with a random name inside
wp-content, protected by.htaccessandweb.configfiles, and before every backup the plugin checks that nobody can download from it. To choose the folder yourself, setFRESHET_BACKUP_DIRinwp-config.php; it may be anywhere the web server can write, including outside the website.Version 1.1.0 could put this folder next to the website’s folder. From 1.1.1 on, backups still waiting there are moved into the new folder by the next backup and sent from there. If one cannot be moved, the Last run row says so and where it is.
Once Dropbox confirms it has a backup, the copy on the server is deleted. A backup that could not be sent waits in the folder and goes with the next one, and without Dropbox the backups stay there. The folder holds at most 3, oldest removed first;
FRESHET_BACKUP_KEEP_LOCALchanges the number.In Dropbox, 7 are kept, oldest removed first;
FRESHET_BACKUP_KEEP_REMOTEchanges the number. Other files in the folder are never touched. -
Can I use my own Dropbox app?
-
Yes. Define
FRESHET_BACKUP_ENABLED,FRESHET_BACKUP_DROPBOX_APP_KEY,FRESHET_BACKUP_DROPBOX_APP_SECRETandFRESHET_BACKUP_DROPBOX_REFRESH_TOKENinwp-config.php. They take precedence over a connection made on the screen. Give the app access to its own folder only, with thefiles.metadata.readandfiles.content.writepermissions. -
It says the backup folder can be downloaded from the web
-
Your server ignores the
.htaccessfile in the backup folder, which is common on nginx. SetFRESHET_BACKUP_DIRto a folder outside the web root, or block that folder in the server configuration. Until then no backup is written there, on purpose. -
Does it run without visitors?
-
Mostly, and it tells you when it does not. WordPress runs scheduled tasks (WP-Cron) only when someone visits the site, and a page cache answers most visits before WordPress loads. So on a quiet or heavily cached site a backup can be late.
Two things cover that. A backup that is a whole interval overdue is made the next time an administrator opens wp-admin, after the page has loaded. And if nothing has worked for twice the interval, a notice appears on every wp-admin page.
For a schedule that does not depend on visitors, give the site a real cron job. In
wp-config.php:define( 'DISABLE_WP_CRON', true );and in the server’s crontab:
*/15 * * * * cd /path/to/wordpress && wp cron event run --due-now --quiet --url=https://www.example.comKeep the
--url: the Dropbox connection only applies on the site’s own addresses, and a command without it names none. Without WP-CLI,curl -fsS -o /dev/null https://www.example.com/wp-cron.php?doing_wp_cronin the crontab does the same job.Do not set
DISABLE_WP_CRONwithout adding the crontab line: then nothing runs the schedule at all. To check, look at the end of the Last run row under Settings Freshet Backup. “Started on schedule” means the schedule is running; “Started by the catch-up” means it is not, and only wp-admin visits are keeping backups going. -
How do I know a backup actually happened?
-
Look at Last run under Settings Freshet Backup. It shows when the last backup ran and, if it failed, why. If backups stop happening, a notice appears on every wp-admin page.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Freshet Backup” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Freshet Backup” 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.1
- The plugin no longer keeps a copy of
wp-config.phpwhen it changes it. Copies made by 1.1.0 are deleted by the next backup. - The backup folder is now always inside
wp-contentunless you setFRESHET_BACKUP_DIR. Backups still waiting in the old folder are moved and sent with the next backup. - The readme lists the outside service the plugin uses, Dropbox, with what is sent and when.
1.1.0
- New: connect Dropbox from the screen in three steps. No developer account or API keys needed.
- New: Disconnect removes the site’s access at Dropbox.
- New: choose how often backups run on the screen.
- New: a notice when backups stop happening, with the likely reason.
- New: a missed backup is made the next time an administrator opens wp-admin.
- New: the screen shows what started the last run.
- New: a Settings link on the Plugins screen.
- The screen moved from Tools to Settings, with a new layout: setup steps first, then a status panel.
- The screen has the Freshet header, with links to the docs and support.
- The FAQ explains how to keep backups on schedule on a cached site.
- The status rows say what happened and no more. Where copies are kept, and how many on the server and in Dropbox, is now in the FAQ.
1.0.0
- Initial release.
