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/