On a production site taking backups and restoring them for testing/recovery purposes is a critical part of site setup and maintenance.

Setting up a server to store your backups on is beyond the scope of this document, so here we cover automatically saving the data of your Tendenci site, plus its restoration.


A backup of Tendenci needs to be a copy of the website and database at a single point in time. For sites with predictable low activity periods a scheduled job to run early in the morning and perform the backup will be sufficient.


Depending on your preferences, files can either be saved to an archive then synced to a backup location or simply copied there as a set of files.

For automated backups, drop a script fragment in /etc/cron.daily/tendenci-daily-backup.sh and let cron take care of scheduling.

Archiving before sending off site:

tar -cjf /var/tmp/tendenci-nightly-backup.tar.bz2 /path/to/tendenci-website/
rsync --quiet /var/tmp/tendenci-nightly-backup.tar.bz2 user@remoteserver:/path/to/backups/

Copying Tendenci directory directly:

rsync --delete --quiet /path/to/tendenci-website/ user@remoteserver:/path/to/backup-tendenci-website


As with the website files, this can be compressed or not but note for a moderately large site compression will save considerable amounts of space and network bandwidth.

Backing up the databse (with compression) is a single command:


sudo -u postgres pg_dump -Fc -f /tmp/tendenci-daily.sql postgres tendenci_db_name

Or if compression isn’t desirable:

sudo -u postgres pg_dump tendenci > /tmp/tendenci-daily.sql

Thile files can then be copied to the backup site:

rsync --delete --quiet /path/to/tendenci-daily.sql user@remoteserver:/path/to/backup-tendenci-website

Take care to keep the website and backup files in sync!


Restore is pretty much the same as the steps for installing, but with a couple of differences.


Restoring is as easy as taking the backup was:

rsync user@remoteserver:/path/to/backup-tendenci-website /path/to/tendenci-daily.sql
sudo -u postgres psql tendenci < /path/to/tendenci-daily.sql

This should be done AFTER the DB setup steps in the install instructions.


Restoring the website replaces the instructions on using tendenci-base-template and related install/configuration steps, but does not replace external setup like installing packages from pip or setting up Nginx.

rsync user@remoteserver:/path/to/backup-tendenci-website /path/to/tendenci-website/