Quartz is a data synchronization and storage utility implemented on
a peer-to-peer network. Users are able to synchronize and maintain
sets of files among many of his or her own devices: notebooks,
computers, and workstations using a simple command line interface.
- Data synchronization
- Ability to synchronize sets of files among a user's computers, workstations, and laptops.
- Files will be updated based on successful version number matches/requirements.
- All subdirectories for each file will be automatically made if not previously existing.
- Notifications are used to give the user a proper choice in case versions do not match up properly.
- Persistent storage utility
- All data is persistently stored in encrypted form within the Quartz network.
- Reliable and always available.
- Nodes will help each other maintain a set number of redundant storage.
- An "alive" file system living on top of the peer-to-peer system.
- Simple command line interface with examples on how each command is properly run.
- One-step install and user setup for each device.
- Simply "store" or "sync" in order to store and synchronize files, respectively.
- Minimum system files and resources needed for the system to run.
- Encrypt/decrypt all files using a 2048-bit RSA encrypted private key.
- Physical security - if a device is stolen, password is still required to read files.
- All data is stored in encrypted binary form at the end hosts; hosts won't know what they're storing.
- Network efficient
- Implemented using a structured peer-to-peer network overlay.
- Finds data and nodes quickly without use of global communication.
- Fault tolerant and insensitive to denial of service attacks.
- Provides multiple routes to pieces of data
- Soft state information is kept for node joins and leaves.
- Optimized O(log n) number of hops using prefix routing (a la Chimera/Tapestry).
- Network routing paths are efficiently load balanced.
- Peer-to-peer community
- Users simply give up 150 MB of their own harddrive space for storage of files for other members.
- To further assure availability, each member is more inclined to leaving their devices online.
- As more devices/nodes are online, the network and data retrieval are further optimized.