CS615A -- Aspects of System Administration - Spring 2012 - HW#3

HW#3: EC2 Backup

Summary:

The objective of this assignment is for you to create a tool able to perform a backup of a given directory to a data storage device in the cloud. In the process, you will (hopefully) learn a few things about writing modular system tools, about the use of some filesystem level helpers and gain some insights into a cloud-based storage model.

The detailed specification of the program can be found in this manual page (as well as the manual page of the helper tool).

This assignment is worth 100 points (75 points for the "ec2-backup" tool, 25 points for the "ec2-start-instance" tool).

Target platform

The tool you write will be executed (and graded) on lab.cs.stevens.edu. You are free to develop it in some other environment, but please make sure to test it on lab.cs.stevens.edu before submitting it. If it does not work on these hosts, you will not get any points. See also: general homework guidelines.

Programming language

You are free to choose any programming language you like to implement this tool. Obviously, the program needs to be executed/run on linux-lab.cs.stevens.edu and must not require the additional installation of any tools, libraries etc. besides what is already installed there.

Program behaviour

Your program will not require any modification of the environment (ie, you can assume the user has his/her environment set up for EC2), and exection of the program will be exactly as outlined in the manual pages ec2-backup(1) and ec2-start-instance(1).

Notes

You may choose to implement the programs in any way you like, including breaking it down into smaller individual components.

You probably want to make sure that your program exhibits the various features of good software engineering practices we discussed. Please make sure to consider these and have your submission reflect wherever possible.

It is probably in your interest to accompany your sibmission with some commentary on why you chose the programming language, the approach you took, any considerations you might have. The more thought I see you put into the assignment, the better.

You may collaborate loosely with other students, but each submission must be your own. This is not a group assignment.

You may use code you find on the internet if and only if you explicitly note which parts are not your own and the code in question is licensed such that you can use it in this manner.

This is not a trivial assignment. Please do not delay starting to work on it.

Deliverables and Due Date

You will submit a single tar(1) archive. The file to submit will be called "$USER-hw3.tar" (where "$USER" is your username). The archive will extract all files and subdirectories into a directory named $USER.

You will only submit source files -- no binaries or executables of any kind. You may additionally include a single file called README in which you may provide commentary on your program. Commentary elaborating on the scalability of the tool in general and your implementation in particular is welcome.

The folllowing is an example sequence of commands to create a valid homework submission:

mkdir $USER
cd $USER
vi README
vi ec2-start-instance
[code code code]
vi ec2-backup
[code code code]
cd ..
tar cf $USER-hw3.tar $USER

The due date for this assignment is 2012-03-19 18:00. Please attach the file to an email sent from your @stevens.edu email address to jschauma@stevens.edu with a subject of "[CS615] HW3".


[Course Website]