Night Clerk

Kenneth Johnson



The Night Clerk will be a firewall neutral incremental file backup and synchronization solution based on the JXTA framework.



Just imagine - you are about to ftp your project code to the nice server and all of a sudden your laptop blue screens and you hear a weird clicking from your hard drive... Your hard drive has failed and all your data is gone. Or is it? My goal is to build a fire-wall and NAT neutral, peer-to-peer (incremental) data backup solution based on the JXTA framework ( The intent is that data moves from a remote device (such as your laptop) to your own server (at home) so no man-in-the-middle ever sees or has access to your data for privacy reasons.



As I approach each development task for this course (and others) two perennial issues arise: 1) how to ensure all development artifacts are properly backed up and 2) how to ensure all html bookmarks are synchronized with my home pc so I dont have to re-do my bookmarks. I am calling it the Night Clerk because I expect it will backup and synchronize files and bookmarks in off-peak times such as the middle of the night.



Major priorities in this implementation will be the ability to gracefully transcend network translation and (some) firewall topologies and scheduling  if I have time, Ill also work on throttling the portion of bandwidth used. In theory, moving across NATed networks should be facilitated by a JXTA based Rendezvous server, but I have yet to validate this. I imagine I may end up using a J2EE container like Tomcat to store a catalog of lookups (each peer would register itself with an internet accessible server) and as a portal for authorizing users. The project will be almost entirely implemented in JAVA and XML will be a mechanism for exchanging backup and synchronization profiles. Ive never used JXTA before so the very viability of this project hinges on the maturity and functionality of the API which I have yet to prove.



I intend to use xml to store my source/target backup profiles and subscriptions. Will this be xml enough to satisfy the project guidelines? Has anybody ever used JXTA to move across NAT thresholds for peer to peer data transfer? Any lessons learned would be appreciated!