Best online data backup service?

For a long time, I have been thinking of how to best backup my computer.  Having now ~1TB of the total of 3TB HD space used, I have lots of valuable images and videos to loose. So far,  external hard disks have worked out for me, but now having  already 4 different HDs with slow USB 2.0 connector, I decided to investigate option of storing all my data to the cloud rather than investing on Apple’s Time Capsule.

After reading several reviews about online backup services, e.g. reviews on and, I had 2 candidates:

As a  note, I was also investigating option of using Amazon Glacier.  There are many backup clients available like

Glacier is very cheap  & secure way to store data,  Amazon guarantees average annual durability of 99.999999999% for an archive. However, it may get costly to actually restore data from the cloud, see the Cost Calculator.

I wanted to have an easy, hassle free solution, pricing of which is fixed, not variable. That’s why, I excluded Glacier.

So, my pick was CrashPlan that charged $59,99 for a 1 year unlimited subscription. Now, I am curious to follow-up, when I have the first backup ready.

It may take for a while… 😉

Screen Shot 2014-02-09 at 13.19.34


Updating wordpress and plugins failed, easy fix!

I had a problem with updating my WordPress 3.5 to 3.8.1. I simply got the following error message:

Unpacking the core update

Could not copy files

Installation Failed

The problem was with the file ownerships, and the fix was found at

All of your WordPress files must be owned by the user under which your web server executes. In Ubuntu, the Apache web server user is www-data, so I simply had to run a command:

/var/www$ sudo chown -R www-data

And Voilá, everything started working smoothly!

Using Fugu to connect to EC2

Fugu is a Mac OS X SFTP, SCP and SSH Frontend.

As EC2 uses public key encryption with no passwords, for all SSH connections your public key PEM file has to be passed over in the connection parameters; otherwise connection is refused.

So to connect to your EC2 cloud server with FUGU, in the connect screen expand the advanced options pane, and in the Options box add the following:


Here is a screenshot on how I connect to my personal domain

Screen Shot 2014-02-08 at 19.22.53

Setting Up WordPress on Amazon EC2

I found Christophe Coenraets’s blog about Setting Up WordPress on Amazon EC2 in 5 minutes and inspired by that decided to setup a WordPress blog of my own that would reside in the Amazon cloud running on the Ubuntu virtual server instance. Here is also useful information on how to install WordPress.

To be honest, it took much longer than 5 minutes – actually several hours – to get the site up-and-running, as I encountered several smaller problems that had to be solved. I tried to document all the steps required to setup this site. Hope you find these instructions useful! If so, please comment on this article!

1. Create an AWS account

To my surprise, Amazon offers a Free Usage Tier that can be used for anything you want to run in the cloud: launch new applications, test existing applications etc. After reading the “small print”, I realized that this setup is free only 12 months following your AWS sign-up date, and after that you pay standard, pay-as-you-go service rates. So with this setup, monthly cost should be $15/month after the initial 12 months.

You can sign up here and you can also use your existing Amazon ID. As a part of the online registration process, you’ll have to provide a credit card and a phone number where you will be called for verification purposes.

2. Create Ubuntu virtual server instance

To start using the Amazon Elastic Cloud EC2, you need to launch a virtual server, known as an Amazon EC2 instance.

Login to AWS, and from the EC2 Dashboard click on the “Launch Instance” button, choose the “Classic Wizard” and use the following options:

  • I chose Ubuntu 11.10 (64 bit) and clicked on the “Next”
  • Instance Type: T1 Micro. This is free!
  • Create a new key pair (e.g. mikkor.pem) and download it for example to your home directory. Do not share this file as it gives a full access to your server instance!
  • Select the quick start security group.
  • Launch your instance.

3. Create an elastic IP to access your virtual server

Elastic IP addresses are static IP addresses designed for dynamic cloud computing. An Elastic IP address is associated with your account, not a particular instance, and you can map your public IP addresses to any EC2 instance associated with your account.

From the EC2 Dashboard, select “Elastic IPs

  • Click on the “Allocate New Address”
  • And “Associate Address” with the newly created EC2 instance
  • Write down the Elastic IP Address just created because you will need it in the next phase.

4. SSH into your account

The default user is “ubuntu”, so to ssh your account, use the following shell command on your local computer. In Windows environment, you may want to use the Putty client.

ssh ubuntu@; -i 


ssh ubuntu@ -i mikkor.pem

If you get a message about your .pem file permissions being too open, chmod your .pem file as follows:

chmod 600 ~/mikkor.pem

Many of the shell commands below require a root access. To avoid having to prefix these commands with “sudo”, switch to superuser:

sudo su

5. Install Apache Web server

In Ubuntu, you need to use AptGet package management tool to install additional modules. So, before installing Apache, I had to run the following  AptGet maintenance commands (skip “sudo” if you are logged in as root):

sudo apt-get update - updates source lists

sudo apt-get upgrade - upgrades all installed packages.

Then, install the Apache web server package:

sudo apt-get install apache2

Restart Apache using the following command:

sudo apache2ctl restart

Check that Apache started working using the recently created elastic IP or public DSN name that you can find from the AWS Management console by selecting the instance you just created, see the image below.


So in this example, using your Web browser, go to: OR

You should see the page with the following text:

It works!

This is the default web page for this server.
The web server software is running but no content has been added, yet.

6. Install MySQL and create the database

Get the MySQL package:

sudo apt-get install mysql-server

Create your “wordpress” database:

mysqladmin -uroot create wordpress

Secure your database:


Answer the wizard questions as follows:

  • Enter current password for root: Press return for none
  • Change Root Password: N
  • Remove anonymous user: Y
  • Disallow root login remotely: Y
  • Remove test database and access to it: Y
  • Reload privilege tables now: Y

Following Jonathan Moeller’s instructions I setup MySQL for use with WordPress. WordPress requires a database and a database user with full permissions to access its database. To start the MySQL command-line client, use this command:

mysql -u root

If you have specified a password for the mysql root, use command:

mysql -u root -p

Enter the password for the MySQL root user, and you’ll see a MySQL command prompt, which will look like this:


WordPress database/schema was already created earlier, so now you need to create a user to access that database, and grant our new user all rights to the WordPress database.

CREATE USER wordpressuser;

Create the password for the wordpressuser:

SET PASSWORD FOR wordpressuser= PASSWORD(“1234”);

Assign all privileges on the “wordpress” database to the “wordpressuser” user. Use this command to assign the permissions:

GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser IDENTIFIED BY ‘1234′;

Once you are done, use this command to quit the MySQL command-line interface:


7. Install Php

Install all the required PHP packages

sudo apt-get install php5 php5-mysql php5-gd

… and restart Apache

apache2ctl restart

7. Install WordPress

Get the latest wordpress sources:


Use this command to unpack the WordPress files to your home directory /home/ubuntu/ (user: ubuntu):

tar -xzvf latest.tar.gz

Make a directory in /var/www for the WordPress files:

mkdir /var/www/wordpress

Finally, copy the WordPress files over to the /var/www/wordpress directory from ubuntu user’s home directory (/home/ubuntu)

cp -r ~/wordpress/* /var/www/wordpress

8. Configure WordPress

Go to WordPress installation directory:

cd /var/www/wordpress

Create the WordPress wp-config.php file by copying the sample file:

cp wp-config-sample.php wp-config.php

Start editing wp-config.php file with the nano editor:

nano wp-config.php

Configure wp-config.php as follows

/** MySQL database name*/
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', '1234');

/** Add this line: sets up direct method for wordpress, auto-update without ftp **/

In the wp-content directory (/var/www/wordpress/wp-content), create the following sub-directories for the uploads and plugin upgrades

cd /var/www/wordpress/wp-content
mkdir upgrade
mkdir uploads

Change owner to “www-data” that is the Apache user

chown www-data plugins upgrade uploads

After these changes, “wp-content” should have the following sub-folders and access rights:

drwxr-xr-x 6 root     root 4096 2013-01-19 20:20 .
drwxr-xr-x 5 root     root 4096 2013-01-21 21:34 ..
-rw-r--r-- 1 root     root   28 2013-01-17 09:52 index.php
drwxr-xr-x 9 www-data root 4096 2013-01-21 21:56 plugins
drwxr-xr-x 4 root     root 4096 2013-01-17 09:52 themes
drwxr-xr-x 3 www-data root 4096 2013-01-23 07:27 upgrade
drwxr-xr-x 3 www-data root 4096 2013-01-19 20:19 uploads

Just in case, load new settings to Apache

service apache2 reload

9. Map IP Address and Domain Name, and configure Apache

To have a nice URL like ( for your blog, you need to buy and map your domain name to the elastic IP address just recently created.

My DNS provider is Go Daddy and there it was relative simple to configure DNS using these instructions.

To configure apache so that immediately shows the blog, I had to create /etc/apache2/sites-available/wordpress file as follows:

        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/

                Options FollowSymLinks
                AllowOverride None

                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all

After this, I had to enable this site by a command:

a2ensite wordpress

The previous command creates a symlink to the sites_enabled folder pointing to the wordpress configuration file.

Reload Apache’s new settings:

service apache2 reload

10. Finalize WordPress installation

Finalize WordPress installation using the Web browser, go to the newly created page:

This should trigger the WordPress configuration process. At least configure URLs, e.g.

Wordpress settings

WordPress settings

Also, I recommend changing permalink settings as follows:

Wordpress permalink settings

WordPress permalink settings

To save the permalink settings automatically, you need to create .htaccess file to the wordpress installation root folder (/var/www/wordpress) with the following access rights (use chown www-data .htaccess and chmod 755 .htaccess commands):

-rw-r--r-- 1 www-data root   637 2013-01-24 11:14 .htaccess

Thoughts about digital development