As we continue our AWS tour, we come to Glacier.  It is Amazon’s solution for long-term storage of large files.  We have discussed their S3 storage solution in a couple of other articles.  However, think of this as the next step in storage.

Glacier is Like Offsite Tape Storage

If S3 is your hard drive in the cloud, then glacier is your long-term tape archive storage in the cloud.  You can check out what Amazon says about this service here or take our word for it.

They provide a couple of tiers of access to Glacier vaults depending on how fast you need to get your data back.  A vault is a location for storing an archive.  The data costs are minimal and even free in some cases.  However, the retrieve times can be very slow.

The Interface is Not Simple

Unlike some other options for storage like Dropbox and Google Drive, Glacier requires a bit of code to store a file.  This makes it a tool more applicable to administrators and system operators than your average web user.  Luckily, there is a plugin for WordPress users to utilize this excellent backup service.

Perfect For System Backups

Of course, this service is precisely what you need for system backups.  They are almost never accessed.  Moreover, when they are needed, it is rare that they are needed immediately.  These are the huge backup files that will take a while to restore.  Thus, a little more time spent retrieving them is not an issue.  To be clear, we are not talking about nightly backups that you may need for disaster recovery.  These are the backups you archive annually, quarterly, or monthly and expect never to use them again.  When you need a service like this, you may have a lot of data to store.  This provides an option to save all of that data at a low cost.

 

For the curious, here is an example of the code:
import java.io.File;
import java.io.IOException;
import java.util.Date;

import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.glacier.AmazonGlacierClient;
import com.amazonaws.services.glacier.transfer.ArchiveTransferManager;
import com.amazonaws.services.glacier.transfer.UploadResult;

public class ArchiveUploadHighLevel {
public static String vaultName = “*** provide vault name ***”;
public static String archiveToUpload = “*** provide name of file to upload ***”;

public static AmazonGlacierClient client;

public static void main(String[] args) throws IOException {

ProfileCredentialsProvider credentials = new ProfileCredentialsProvider();

client = new AmazonGlacierClient(credentials);
client.setEndpoint(“https://glacier.us-west-2.amazonaws.com/”);

try {
ArchiveTransferManager atm = new ArchiveTransferManager(client, credentials);

UploadResult result = atm.upload(vaultName, “my archive ” + (new Date()), new File(archiveToUpload));
System.out.println(“Archive ID: ” + result.getArchiveId());

} catch (Exception e)
{
System.err.println(e);
}
}
}

 

Rob Broadhead

Rob is a founder of, and frequent contributor to, Develpreneur. This includes the Building Better Developers podcast. He is also a lifetime learner as a developer, designer, and manager of software solutions. Rob is the founder of RB Consulting and has managed to author a book about his family experiences and a few about becoming a better developer. In his free time, he stays busy raising five children (although they have grown into adults). When he has a chance to breathe, he is on the ice playing hockey to relax or working on his ballroom dance skills.

Leave a Reply