As owners of websites, one of the more important things you should do is to regularly backup the website.
Most web hosting providers will enable daily or weekly backups, mainly
for their disaster recovery purpose only. If you want to personally
oversee a backup of your website, you can do it by yourself using the
Backup function in hosting control panels like cPanel, Plesk and
DirectAdmin. As a webmaster or domain owner, you are responsible for
this task.
A good backup should have following criteria:
- Backup your data as frequently as possible.
- Give higher priority to critical data like database and web contents. Try to exclude temporary files.
- Your backup should NOT be saved inside the same server.
- Your backup should be retrievable and accessible anytime, anywhere.
- You should get notified for every backup status which has been scheduled.
- Your backup should be compressed, if disk space or bandwidth is your concern.
It is good if you can have your one FTP server to store backup
remotely. But, what if the FTP server is down? How can we automate the
backup task with limited access to the server? How can you be sure that
the availability is always there? Cloud storage is your answer.
Cloud storage
is becoming the best way to store files. Popular providers like Amazon
S3, Dropbox, iCloud and Box.net are offering these facilities for free
with some limitations. But, none of them are supporting FTP as the
medium to transfer while almost all of webhosting providers only allow
this transfer method.
Backup Box
Here’s where
Backup Box comes in. Backup Box helps
you securely transfer anything on an FTP server to your Dropbox account.
Actually, Backup Box can integrate your FTP account with cloud storage
providers like Amazon, GitHub, Box.net and Flickr as well. At this very
moment, only Dropbox integration is supported while the others are still
under development. It is free to use, with limited features like
monthly backup schedule and immediate transfer schedule. In this post, I
am focusing on preparing the backup data for weekly backup while
running on cPanel server.
We can use this tool with various ways of implementation such as 1,
directly copying the web directory using FTP and transferring to Dropbox
(compressed or uncompressed) or 2, creating a compressed backup (cPanel
backup) and using FTP to fetch the backup to
Dropbox.
Before we proceed with the tutorial, ensure that you have following required information:
- An FTP account which is mapped to your web directory. Get it from your hosting control panel.
- A Dropbox account. You can register here for free.
- A Backup Box account. You can register here for free.
Web directory > FTP > Dropbox
Since the database is also important, we need to prepare the database
backup and put it into our web directory. If you are running on Linux
hosting, you can use a task scheduler called a cron job with some help
from
mysqldump
. In cPanel, it is located under
cPanel > Advanced > Cron jobs.
Let’s use the following data as an example:
- Web directory path: /home/username/public_html
- cPanel username: mycpanel
- cPanel password: mypass123$
Create a new weekly cron job and use the following command:
view plaincopy to clipboardprint?
- mysqldump --opt -Q -u mycpanel -p'mypass123$' --all-databases > /home/username/public_html/databases.sql
here’s an Example:
This will create an SQL backup file which includes all the databases
under your cPanel account. Login into Backup Box. On the left panel,
login into the FTP account by clicking the ‘gear’ icon. On the right
panel, login into your Dropbox account.
You can choose
Transfer public_html as a folder in
the Transfer Options. This will transfer the whole public_html folder
including all files into your Dropbox account. You can now start the
immediate transfer by clicking Review. This will transfer the
public_html folder to Dropbox. Once done, you can create Monthly
schedule to automate this backup task monthly.
Just click Monthly > select Date and Time > Finalize and Run.
Note: If you want to use weekly or daily backup, you need to upgrade
your subscription as stated in the website. Do not forget to change the
cron job setting based on when you want the backup schedule to happen
cPanel backup > FTP > Dropbox
The good thing about cPanel is you can generate your own backup
automatically using cPanel API. In this case, we will use PHP script to
run on schedule to generate backup. Since the backup location needs to
be exclusively for Backup Box, we will need to create an FTP account
which is mapped to a new backup folder.
Go to
cPanel > FTP and create an FTP account as
the screenshot below. Do not create the FTP directory under public_html
because it is accessible publicly via web browser (unless you protect
the directory with a password):
We need to use PHP with cPanel API to trigger the backup process. Download this file (cpanel-php-backup.zip) and unzip it. You should see 2 files,
cpanel-backup.php and
xmlapi.php.inc. Change all required information inside
cpanel-backup.php as below:
view plaincopy to clipboardprint?
- // Credentials for cPanel account
- $source_server_ip = ""; // Server IP or domain name eg: 212.122.3.77 or cpanel.domain.tld
- $cpanel_account = ""; // cPanel username
- $cpanel_password = ""; // cPanel password
-
- // Credentials for FTP to Backup Box
- $ftpacct = ""; // FTP account
- $ftppass = ""; // FTP password
- $email_notify = ''; // Email address for backup notification
Save the file and upload both files into your public_html directory
using FTP. You can start to generate a backup by accessing the PHP file
directly via browser, which is usually
http://www.yourwebsite.com/cpanel-backup.php .
In order to automate cPanel backup creation, we need to setup a weekly cron job into cPanel and use following command:
- php -q /home/username/public_html/cpanel-backup.php
Here is a sample:
Login into Backup Box. On the left panel, login into the FTP account
(use the backup box FTP account) and in the right panel, login into your
Dropbox account:
Since we store backup files into a dedicated folder, we can only transfer the contents of it. Select
Transfer only the contents of / in the Transfer Options as the transfer method.
You can now start the immediate transfer by clicking Review. This
will transfer the public_html folder to Dropbox. Once done, you can
create Monthly schedule to automate this backup task monthly. Just click
Monthly > select Date and Time > Finalize and Run.
Note: If you want to use weekly or daily backup, you
need to upgrade your subscription as stated in the website. If you do,
do not forget to change the cron job setting according to your backup
schedule. Another thing, the PHP script will delete all previous cPanel
backup before it generate new backups. This to make sure your backup
will not eat up much disk space.
For more backup solutions check out these following: