I have decided to create my own cloud storage, which closely emulates the big names. I decided to make this an Open-Source project, like the rest of my projects for anybody to use and follow along thought the projects life.
As expected, there are some requirements but the user will break even quickly. Lets crunch some numbers:
Dropbox(for a year): $99.00
OwnBox(For life):
- Rasbpberry pi: 35$
- 16GB storage card: ~15$
- Electricity: ~5$ (yearly!)
- Managing your own cloud storage: Priceless
All in all between upgrading the Dropbox plan and going the rogue route, the choice is pretty straight forward. Lets no forget that any other increase in size afterwards (adding an external HD) would be a lot cheaper and the alternatives.
Now a bit about the technical details of the project:
The program program consists of 3 separate parts each playing an important role not only in debugging but making it easier to add new features to the program. Starting from the backend, there is a program that is running only when necessary in order to create transfer reports and check what files are currently present on the server along with what version of the file is there.
The client side is a bit more complex, there is a deamon which is always running constantly checking the selected folders for any changes. When some changes are detected, the client program is called which deals with the transfer of files.
I have implemented a system of reports that ensures the server and the client are in synch. Each report contains the names of the files that each party holds along with a file version. The file versions need to match, and the user has a choice if they want to keep a file on the server after it has been deleted from the client.
To increase transfer speeds and make the synchronizations smoother, it is those reports that get passed back and forth, then if the server sees that some files are missing, it will proceed to request them.
All transfers are done using the Open-Source OpenSSL methods. This has given me the flexibility to have more remote control over the server, allowing me to run custom commands and last minute debugging.
Future plans:
- The plans for the future of this project include being able to have more than one user synchronizing to the same server.
- The ability to connect and interact with the database though http, making the interface more user friendly and easier to access from different locations.(Done, it can be accessed though the private section of www.cristianfrincu.com)
- As a continuation to the previous point, ability to send files to somebody though a link.
I am very pleased with the progress in this project, I am constantly using it and I hope you will too!
All the programs have been fully written in Java.
You can access and use the source code https://github.com/cristian-frincu/OwnBox
No comments:
Post a Comment