Backing Up and Restoring¶
It is important to back up GNU social regularly. If you need to revert to an old backup you will lose any newer notices. Any follows that happened since then will result in mismatched information on your server and remote servers.
You should also back up immediately prior to any upgrade. This is especially important if you are following the nightly branch where serious bugs might slip through.
There are two parts to your GNU social installation and they must both be backed up at the same time.
- The files hosted by your webserver. This is a mixture of GNU social code and
user data. This a directory probably located somewhere like
- The contents of the MariaDB/MySQL database.
You don’t need to do anything fancy. Just make sure you have a copy of the folder. If you’re using a commercial web hosting service there is probably a button you can press to download an archive of all your files. Note that this normally does not include your database.
If you have shell access on the server, assuming the GNU social folder is
/var/www/social, you can make a compressed backup in your home
directory like this:
TIMESTAMP=$(date +%Y%m%d-%H%M) cd /var/www tar -Jcf "~/$TIMESTAMP-social-www.tar.xz" --exclude=.git social
If you are serving files straight out of the git repository this will back up only the currently checked out copy, not the entire history. (Using a git repository this way is not recommended as you may cause chaos in your database if you accidentally check out the wrong thing.)
There are many different tools and techniques for backing up MySQL databases. If you’re using a commercial web hosting service there will probably be somewhere in the web interface where you can download a copy of the GNU social database.
If you have shell access the simplest way to create a backup is using the tool mysqldump.
TIMESTAMP=$(date +%Y%m%d-%H%M) mysqldump -u "database_username" -p "database_name" | xz -c - > "~/$TIMESTAMP-social.sql.xz"
You will be prompted for a password. Type in the password for the MySQL user.
Restoring from a Backup¶
- Stop the queue daemons if they’re running.
- Restore the web files.
- Restore the database.
- Restart the queue daemons.
If you followed the examples above you might type the following:
cd /var/www/social # Stop the daemons bash ./scripts/stopdaemons.sh # Delete and restore the web files rm -r * cd .. tar -Jxf ~/20160130-1200-social-www.tar.xz # Recreate the database (using MySQL root account) mysqladmin -u root -p drop social mysqladmin -u root -p create social mysql -u root -p social # Inside mysql client GRANT ALL on social.* TO 'social'@'localhost' IDENTIFIED BY 'the_old_password'; exit # Restore the database as the GNU social MySQL user xzcat ~/20160130-1200-social.sql.xz | mysql -u social -p social # Restart the queue daemons cd social bash ./scripts/startdaemons.sh