Title: Freshet Backup
Author: Kristoff Bertram
Published: <strong>November 6, 2026</strong>
Last modified: November 6, 2026

---

Search plugins

![](https://ps.w.org/freshet-backup/assets/banner-772x250.png?rev=3788084)

![](https://ps.w.org/freshet-backup/assets/icon.svg?rev=3788084)

# Freshet Backup

 By [Kristoff Bertram](https://profiles.wordpress.org/kristoffbertram/)

[Download](https://downloads.wordpress.org/plugin/freshet-backup.1.1.1.zip)

 * [Details](https://wordpress.org/plugins/freshet-backup/#description)
 * [Reviews](https://wordpress.org/plugins/freshet-backup/#reviews)
 *  [Installation](https://wordpress.org/plugins/freshet-backup/#installation)
 * [Development](https://wordpress.org/plugins/freshet-backup/#developers)

 [Support](https://wordpress.org/support/plugin/freshet-backup/)

## 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](https://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](https://www.dropbox.com/terms) and [privacy policy](https://www.dropbox.com/privacy).

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

 1. Install and activate. Nothing runs yet.
 2. Go to Settings  Freshet Backup and press Connect Dropbox. Sign in to the Dropbox
    account that should hold the backups and press Allow.
 3. Paste the code Dropbox shows and press Finish connecting. Backups are now on, daily
    by default.
 4. 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`). Set `FRESHET_BACKUP_ALL_TABLES` to `true` to 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.gz` files), or from a shell with `gzip -
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 of `wp-config.php` 
elsewhere 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 of `wp-config.php` is 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)
and `FRESHET_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 `.htaccess` and `web.config` files, and before every backup the plugin
checks that nobody can download from it. To choose the folder yourself, set `FRESHET_BACKUP_DIR`
in `wp-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_LOCAL` changes the number.

In Dropbox, 7 are kept, oldest removed first; `FRESHET_BACKUP_KEEP_REMOTE` changes
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_SECRET`
and `FRESHET_BACKUP_DROPBOX_REFRESH_TOKEN` in `wp-config.php`. They take precedence
over a connection made on the screen. Give the app access to its own folder only,
with the `files.metadata.read` and `files.content.write` permissions.

### It says the backup folder can be downloaded from the web

Your server ignores the `.htaccess` file in the backup folder, which is common on
nginx. Set `FRESHET_BACKUP_DIR` to 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.com
    ```

Keep 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_cron` in the crontab does the same job.

Do not set `DISABLE_WP_CRON` without 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.

Contributors

 *   [ Kristoff Bertram ](https://profiles.wordpress.org/kristoffbertram/)

[Translate “Freshet Backup” into your language.](https://translate.wordpress.org/projects/wp-plugins/freshet-backup)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/freshet-backup/), check
out the [SVN repository](https://plugins.svn.wordpress.org/freshet-backup/), or 
subscribe to the [development log](https://plugins.trac.wordpress.org/log/freshet-backup/)
by [RSS](https://plugins.trac.wordpress.org/log/freshet-backup/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.1

 * The plugin no longer keeps a copy of `wp-config.php` when it changes it. Copies
   made by 1.1.0 are deleted by the next backup.
 * The backup folder is now always inside `wp-content` unless you set `FRESHET_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.

## Meta

 *  Version **1.1.1**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [backup](https://wordpress.org/plugins/tags/backup/)[database backup](https://wordpress.org/plugins/tags/database-backup/)
   [Dropbox](https://wordpress.org/plugins/tags/dropbox/)[gzip](https://wordpress.org/plugins/tags/gzip/)
   [mysql](https://wordpress.org/plugins/tags/mysql/)
 *  [Advanced View](https://wordpress.org/plugins/freshet-backup/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/freshet-backup/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/freshet-backup/reviews/)

## Contributors

 *   [ Kristoff Bertram ](https://profiles.wordpress.org/kristoffbertram/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/freshet-backup/)