Backup WordPress plugin

Written on 5 February 2016, 10:37pm

Tagged with: , , ,

For backing up the contents of this blog I am using the excellent WordPress plugin called – you guessed it – BackupWordPress.
It offers the possibility to backup the database and the content files on the same server for free, and for 24$/year it sends your backup files to Dropbox. It works by using a number of utilities (zip for the files, mysqldump for the database) that are run in the command line using the PHP function shell_exec.
Recently I noticed that the plugin simply stopped working – without any visible error message. I realized it was because shell_exec was in the list of disabled PHP functions.
To find out if this function is disabled you can use phpinfo() or ini_get('disable_functions').
If indeed this function is disabled, then the plugin will not work at all, without returning any error.
If you have access to cpanel you can re-enable this function by going to Select PHP version / PHP Settings:
Screenshot 2016-02-04 22.51.50
For more info about it, see the official WordPress plugin page.

How to back up your daily logs to Dropbox

Written on 29 May 2013, 02:02pm

Tagged with: , , ,

Here is the complete process of backing up your daily WHM backup file(s) to Dropbox.

Pre-requisites
a. Enable backups in WHM: Home/Backup/Configure Backup/Backup Status:Enabled
b. In case you don’t already have one yet, create a Dropbox account (referral link)

dropbox

Once you have these pre-requisites, you can perform the following operations:
1. Create a Dropbox app dropbox.com/developers/apps
2. Download the Core APIs SDK. I downloaded the PHP flavour and put it in /home/user/dropbox/php-sdk-1.0.1
3. Make sure that the php_curl extension is enabled
4. Create /home/user/dropbox/php-sdk-1.0.1/backup – which will hold the necessary files
5. In the above directory, create a file called login.json with the following content:

{
  "key": "INSERT_APP_KEY",
  "secret": "INSERT_SECRET",
  "access_type": "FullDropbox" or "AppFolder"
}

6. Copy the files ‘authorize.php‘, ‘helper.php‘, ‘upload-file.php‘ from examples/ to backup/ directory
7. Authorize your Dropbox app:

php authorize.php login.json auth.json

This will read the credentials in login.json and attempt to create auth.json file. It will prompt you to open a Dropbox URL where you will authorize your Dropbox app to use your Dropbox account. After you allow, go back to shell, press enter and the auth.json file will be created
8. You’re ready to go. Assuming that WHM creates your daily backups in /backup/cpbackup/daily/ folder, you can run the command below to transfer your tar.gz backup file to Dropbox.

php /home/user/dropbox/php-sdk-1.0.1/backup/upload-file.php /home/user/dropbox/php-sdk-1.0.1/backup/auth.json /backup/cpbackup/daily/user.tar.gz /user.`date +\%Y-\%m-\%d`.tar.gz > /home/user/dropbox/logs/user.`date +\%Y-\%m-\%d`.log

This command will save the output of the operation to a log file for further reference.

9. Email [optional] You can change the command above to send the output by email:

{command above} && mail -s 'Daily backup' 'yourATemail.com' < /home/user/dropbox/logs/user.`date +\%Y-\%m-\%d`.log

10. Cron Put the command at step 8 (or 9) above in a cron: crontab -l or edit the file /var/spool/cron/root and make the changes directly.
Check the new cron jobs: crontab -l
Check the cron log: tail -f /var/log/cron