REVIEW: CloudBerry Backup for Windows Home Server 2011

CloudBerry WHS 2011 Backup

DISCLAIMER: This is a review of CloudBerry WHS 2011 Backup. This is our personal observation and experience and this blog was written without compensation.

In need of a new backup solution

Over the past year, we’ve been using an online backup service that allowed us to backup all of our files on our home network as well as share all of the files between computers and online. For this to happen, we had to install software on each computer we wanted to back up and we had to designate local storage space to keep local copies of each file that were shared using the live drive setup. One of the problems we faced was that we were using USB drives as our local storage and if the computer went to sleep, upon awakening, the back up software would crash and we had to restart the computer.

This was just one of the problems we experienced. Another was when we used Quark Express and saved a file to the live drive, that file would sometimes become corrupted and there was no way to get it back unless we had an older copy already saved. The backup service would save older revisions but this didn’t help us if the document was newly created.

So just the other day, we received an invoice from the backup service to pay for another whole year. With these problems in mind, we set off to explore our options.

Over the summer, we decided to build a Windows Home Server using WHS 2011. It’s main purpose was to become a media server for all of our movies and tv shows. After some thought, we realized we weren’t using the server to it’s full potential as it could have been used as a file server and a backup server as well. I dove into the details of the features that it offered and discovered how simple it would be to just put all of our files on the network and create network shares. But that wasn’t enough, we needed to be able to access those file from anywhere there was an internet connection as well as backup all those files to a safe and secure online storage system. I did some more reading and found that WHS allowed you to connect to your server remotely and access all of your files securely.

Problem 1 solved.

Introducing CloudBerry

So what about online back up? We explored our options and found that most online backup services were way to expensive. Since we already had remote access to our files, the only thing we really needed was a place to safely store our data in case of data loss. After my research didn’t turn up any viable options, I remembered that WHS allowed third party plug-ins and I wondered if there was a back up option available.

I did some Googling and discovered CloudBerry. I found one of their products called CloudBerry Desktop Edition. I read over the features and thought, maybe this will do the job. But will it work on Windows Home Server 2011? After browsing their website some more, I was really excited to discover that they had a version just for WHS called CloudBerry WHS 2011 Backup. But wait! This wasn’t an online backup service, this was actual software that allowed you to choose your own service provider. Maybe this wasn’t the solution.

We have over 300 gb of data to back up and the average price per gigabyte with services like Rackspace is about 15 cents. That’s about $45 a month. We were only paying $90 a year for our initial solution which offered unlimited storage.

After doing some more reading, we discovered that CloudBerry had recently added Amazon Glacier services as a back up option. Amazon Glacier is a much cheaper storage solution but it only works if you do not need to access that data frequently. This was perfect for us. First, all incoming data doesn’t cost anything. Second, each gigabyte over 1GB is only a penny. So for 300GB’s of data each month, we’d be paying roughly $3. That’s only $36 a year, less than a third of what we were paying before.

The only other cost involved would be paying for the CloudBerry software, currently $29.99. What a deal!

So would this really work? Could this be true? CloudBerry offers a free fully functional trial so we decided to put it to the test.

We downloaded the free trial and installed it. WHS 2011 allows you to add 3rd party plugins to integrate into your server for added functionality. Adding in CloudBerry WHS 2011 Backup was simple and easy. Once installed, WHS adds an icon to your dashboard that allows you to setup and control CloudBerry backup. To back up your files to Amazon Glacier, you need to set up your Amazon Glacier account and then add your credentials to CloudBerry. You then create your back up plans and choose what files you want to back up and at what frequency. The software allows you to utilize real-time backup and that is what we chose. It also allows you to configure how many revisions you wish to keep and how long deleted files should be kept. All the things I thought I loved about our initial backup service were available to us.

After setting up our first back up plan, we set it in motion and waited.

All 300 GB’s of data were successfully backed up in 3 days (slow internet upload speeds on our end) and every change and new file has been uploaded since without any problems.

It’s been over a week now and we can truly say, we love CloudBerry’s back up solution and it does exactly what we needed. It’s a very inexpensive solution and combined with Amazon Glacier, we know that our data is safe and secure and ready when we need it.

Problem 2 solved.

As time goes on, we will update this blog with our experiences so check back every so often.

To find out more about CloudBerry and their Windows Home Server 2011 back up solution, visit http://www.cloudberrylab.com/whs-2011-online-backup-to-amazon-s3-microsoft-azure-google-storage.aspx#.

How to Set PHP Error Logging in nginx

It took some digging but I found out how to set php error logging in nginx. This is useful if you have virtual hosts or want to log separate sites. Just place the following in the php section of your nginx.conf configuration file and set the path to where you want the logs to be written.

fastcgi_param PHP_VALUE "error_log=/var/log/nginx/host1.php.error.log";

That’s it!

Drag, Drop, Sort & Delete with jQuery & jQueryUI

In my previous post, I discussed how to add drag, drop, sort and delete functions to your website. However, it utilized the prototype and scriptaculous libraries. I had recently changed my site to only use the jQuery library so I needed a way to do this using jQuery. As with my previous post, I could not find any tutorials or how to’s on how to do this so I figured it out on my own and thought I’d share it with the rest of you.

If you are looking for a prototype and scriptaculous solution, look here: https://robertfrew.wordpress.com/2010/02/06/drag-drop-sort-delete-with-script-aculo-us/

Why would you need such a function? This is useful for things such as photo management. In my case, my users can manage their photo albums by viewing a thumbnail page. From that page, they can re-arrange the position of images by dragging them to the correct position. This utilizes the sortable function of jQueryUI. Upon dropping the thumbnail in it’s desired position, on the users screen, it sorts in the foreground. Behind the scenes, it updates the database and arranges the photos in order correctly. If they wish to delete an image, they can drag it to a trash can icon and drop it. It will then remove it from the thumbnail list, reorder (sort) the positions, and remove the image from the database.

Here is the code I used:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<title>Sorting Example</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function($){
 $("#namelist").sortable({
 connectWith: '#deleteArea',
 update: function(event, ui){
 //Run this code whenever an item is dragged and dropped out of this list
 var order = $(this).sortable('serialize');
 $.ajax({
 url: 'processImage.php',
 type: 'POST',
 data: order
 });
 }
 });
 $("#deleteArea").droppable({
 accept: '#namelist > li',
 hoverClass: 'dropAreaHover',
 drop: function(event, ui) {
 deleteImage(ui.draggable,ui.helper);
 },
 activeClass: 'dropAreaHover'
 });
 function deleteImage($draggable,$helper){
 params = 'PID=' + $draggable.attr('id');
 $.ajax({
 url: 'deleteImage.php',
 type: 'POST',
 data: params
 });
 $helper.effect('transfer', { to: '#deleteArea', className: 'ui-effects-transfer' },500);
 $draggable.remove();
 }
});
</script>
<style type="text/css">
li { cursor: move; }

</style>
</head>
<body>
<p>Drag and drop list items to sort them out</p>
<ul id="namelist">
 <li id='i_1'>Image 1</li>
 <li id='i_2'>Image 2</li>
 <li id='i_3'>Image 3</li>
 <li id='i_4'>Image 4</li>
</ul>

<div id="deleteArea">
Drag here to delete.
</div>
</body>
</html>

Drag, Drop, Sort & Delete with Script.aculo.us

I’ve  been combing the web for this solution to no avail.  I would have thought that I was not the only person looking for something like this.

If you are looking for a jQuery solution, look here: https://robertfrew.wordpress.com/2010/03/25/drag-drop-sort-delete-with-jquery-jqueryui/

One of my websites is a membership based website.  It allows you to create photo albums.  All of it has been custom created using PHP & MySQL.  To manage the photos, I created an admin page that displays thumbnails of all your photos.  This page allows you to sort your thumbnails by using the Script.aculo.us libraries Sortables function.  To edit individual images, you double click the image and it takes you to another page which features more advanced editing options such as rotate, crop, scale, etc…. This page also was the only way you could delete the image.

I soon found out by a number of my members that if you had a lot of images that you wanted to delete, it was a long and cumbersome process having to open each image to delete it. So I figured since I was already utilizing the drag and drop functions of Script.aculo.us through the Sortables function, why not add a drag and drop delete function.

The first thing I checked was the library docs.  I found that they didn’t really give insight into how the Sortables function actually used the drag and drop functions and really didn’t give any examples on how to take advantage of some of the features.  So I ventured out onto the web in search of a solution.  To my surprise, there weren’t any how to’s or examples anywhere. I did find a couple of forum posts where others like me were looking for a solution but there were no responses.

So, I decided to experiment myself and low and behold, I found a solution on my own. And because I utilize other persons solutions for other problems, I figured I’d give back to the community.

Here is my solution for Drag, Drop, Sort & Delete using the javascript frameworks of prototype.js and script.aculo.us.  This solution assumes you already have the Sortables function in use. If not, there are many articles out there already such as Scriptaculous Lists with PHP by Greg Neustaetter.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<title>Sorting Example</title>
<script type="text/javascript"
src="/js/prototype.js"></script>
<script type="text/javascript"
src="/js/scriptaculous.js"></script>
<script type="text/javascript">
window.onload = function() {
   Sortable.create('namelist', {
      tag:'li',
      constraint: false,
      dropOnEmpty: true,
      containment: ['namelist','deleteArea'],
      onUpdate: function() {
         new Ajax.Request('processImage.php', {
            method: 'post',
            parameters: Sortable.serialize('namelist')
         });
      }
   });

   Droppables.add('deleteArea', {
      containment: ['namelist','deleteArea'],
      onDrop: deleteItem
   });

   function deleteItem(draggable,deleteArea) {
      draggable.parentNode.removeChild(draggable);
      deleteArea.appendChild(draggable);
      params = 'imageID=' + draggable.id;
      new Ajax.Request('deleteImage.php', {
         method: 'post',
         parameters: params
      });
      deleteArea.removeChild(draggable);
   }
}
</script>
<style type="text/css">
li { cursor: move; }

</style>
</head>
<body>

<p>Drag and drop list items to sort them out</p>

<ul id="namelist">
<li id='i_1'>Image 1</li>
<li id='i_2'>Image 2</li>
<li id='i_3'>Image 3</li>
<li id='i_4'>Image 4</li>
</ul>

<div id="deleteArea">
Drag here to delete.
</div>
</body>
</html>

How to get Eclipse 3.5 (Galileo) and Flex Builder working together.

Have you downloaded the latest version of Eclipse and you can’t get it to work with the Adobe Flex Builder plug-in?  Well, here are a few steps you can take to hopefully get it to work again.

First, download and install Eclipse 3.5.

Second, if you do not already have Flex Builder installed, download and install as well.  Once the installation is complete, navigate to where you installed Eclipse, for example: C:/Program Files/Eclipse. This should be the directory or folder that contains the eclipse.exe file or executable. In this directory, make sure another folder called ‘links’ exists. If it does not, create it.

Enter the ‘links’ directory and create a new text file called ‘com.adobe.flexbuilder.feature.core.link’ without any closing file extension such as .txt. Edit this file and add the following contents into it:

path=C:/Program Files/Adobe/Flex Builder 3 Plug-in

Replace ‘C:/Program Files/Adobe/Flex Builder 3 Plug-in’ with the path to your Flex Builder installation directory or folder.

Save the file and close it.  Then launch Eclipse. Now go to Window Menu, select “Open Perspective” then “Other.” You should see your Flex Development Perspective listed. If you previously entered a license key for Flex Builder, it will recognize it for you.  Otherwise, it will ask you to enter your license key.

Voila!  You should have a working Eclipse 3.5/Flex Builder environment.

Credit for this find goes to Adam Ness.

Follow

Get every new post delivered to your Inbox.