Paranoid Backup
 
Stream Architecture Paranoid Documentation
Overview
Paranoid Backup provides a very flexible data stream architecture that can very easily be tailored to fit many different backup situations while effectively handling very large amounts of data with very limited resources (regarding memory consumption, input/output performance, and processor utilization).
The data to be backed up is internally represented in the form of a data stream. Streams not only save the computer's resources when doing a backup, they also allow to pass the data through a number of modules to transform (filter, compress, encode) the data stream while it is processed for backup. In Paranoid Backup's internal data model, each object to be backed up (i.e. each file) is represented by its own stream, resulting in an array of streams that flows between modules.
The data to be backed up is read from the data sources by a Reader Module and provided to the architecture in the form of a data stream. This stream can be piped through a number of Transformation Modules that filter, compress, or encrypt the data stream. Finally, a Writer Module writes the stream of backup data to the backup medium.
 
Reader Modules
User data to be backed up is read by a reader module. Paranoid Backup provides a number of different reader modules to access the most popular types of data sources:
  1. FileSystemReader: reads files from the local file system
  2. RdbReader: reads the contents of a relational database
Paranoid Backup can easily be extended with additional reader modules to access all the other types of data sources.  
 
Transformation Modules
The backup data stream can be passed through a number of modules to transform the data. Paranoid Backup provides the following transformation modules:
  1. Zipper: compresses the data stream using the popular ZIP algorithm, i.e. converts a data stream containing any content into a data stream containing the content of a zip file, which contains the data. The benefits of using this module are that you end up with only one file (which contains all the original files), and this file is usually smaller than the sum of the original files.
  2. Encrypter: encrypts the data stream. The benefit of using this module is that the backups cannot be read by anybody else, because you need a password to uncrypt them. This is very useful if you replicate your backups to another machine.
  3. Slowdowner: slows down a data stream, i.e. enforces a certain delay between the processing of subsequent packages in the stream. The benefit of using this module is that the computer’s performance doesn’t degrade too much when doing the backup in the background. Especially portable computers are noticeably slowed down when the hard disk is used too intensively.
Again, the framework can easily be extended with additional modules that provide the functionality you need.
 
Writer Modules
Finally, the data stream is written by a writer module to a storage medium. A writer module also deletes previous versions of backups on that storage medium, but keeps the designated number of versions. Paranoid Backup provides the following writer modules:
  1. RepositoryWriter: writes the data stream into the current backup repository.
  2. FtpWriter: upload the data stream onto an FTP server. Since a FTP transmission is insecure, and even the password for the FTP server can very easily be aquired by other people, please make sure to transfer only encrypted data!
 
Modules can be combined in any manner to achieve the desired functionality. Please see the Configuration Section for some examples how streams can be mapped.
Home Documentation Sample Configurations Quick Reference