Time Drive

Time Drive is a front-end utility for duplicity.  It makes backup to an external file
server easy and efficient.  Time Drive supports webdav, secure webdave, ftp, ssh,
and scp.  It can also be configured to work with Samba.

For more information, including a detailed installation guide and usage instructions,
see the project homepage.

http://www.oak-tree.us/

Installation:

Time drive can be installed on any platform where duplicity and PyQt can also be
installed.  For general installation instructions, please see:

http://www.oak-tree.us/blog/index.php/science-and-technology/time-drive

Dependencies:

	1.) PyQt
	2.) Duplicity
	3.) NcFtp - Used for ftp communications (Duplicity Dependency)
	4.) Python-Boto - Used for Amazon S3 communications

Change Log (Versions 0.2 and O.3):

	1.) Logs and notifications.  Time Drive has a notification log
		which will help the user locate problems or issues.  If
		Time Drive fails during a cron backup, the user will be
		notified the next time that the program is run.
	2.) Progress Indicator.  Progress Indicators have been added to
		all background operations.  This includes backup management
		and overall progress.
	3.) Amazon S3 Support
	4.) New Settings Dialog.  Updated the way which the program
		settings are loaded into memory.  Refactored background
		classes.

Change Log (Version 0.1.9):
	
	1.) Refactored code in preperation of 0.2 release.  Created new 
		background classes, cleaned up duplicity_interface.  Combined methods with
		only a single use with their appropriate background class.
	2.) Reworked duplicty_interface to use subprocess rather than os.popen.
	3.) Removed GUI related dependencies from backend classes. (2009 09-09)

Change Log (Version 0.1.7):

	1.) Modified the existing backend to support viewing and retrieving snapshots.
	2.) Added backend support for per folder settings. (2009 08-18)
	3.) Modified duplicity_backend so that it properly handles paths with spaces.
		(2009 08-18)
	4.) Fixed bug involving the writing of settings values on Mac OS X.  (2009-08-19)
	5.) Finished Advanced Settings GUI for Folder Exclude List and Archive Settings.
		(2009-08-19)
	6.) Updated backend so that backup operations, restore, and listing archive contents
		respond to the advanced folder settings. (2009-08-19)
	7.) Refactored backend code so that all background methods use the same functions
		for fetching archiveUrls, gnuPassphrases. Done in anticipation of AmazonS3
		support.  (2009-08-19)

Change Log (Version 0.1.1):

	1.) Completed preliminary layouts for the user interface. (2009 07-24)
	2.) Download and parse archive contents. (2009 07-24)
	3.) Added advanced restoration options to the main window.  (2009 07-28)
	4.) Very basic settings class and settingsdialog implementations added.  (2009 07-31)
	5.) Modified popup windows so that they belong to the MainWindow Class.
		This gives them the focus until they have been closed. (2009 07-31)
	6.) Settings Dialog: Include list, add and remove folder buttons added and working.
		(2009 07-31)
	7.) Added code to deal with empty destination urls.  It now returns	notifies the user
		rather than terminating the program.  In such a case, the file list is kept blank.
		(2009-08-02)
	8.) Can now use the Advanced Restore Options pane of the main window to specify a 
		remote archive. It will parse the Url and download the file logs from the remote 
		site so subsequent browsing of the repository is more rapid. (2009-08-02)
	9.) Modified the UI so that the user can now select the communication protocol from a
		drop down list.  (Applied to both the MainWindow and the SettingsDialog.)
		(2009-08-02)
	10.) Added very basic support for creating backups.  Runs as a manual background thread.
		(2009-08-02)
	11.) Minor updates to toolbars and icons.  (2009-08-03)
	12.) Implemented "Backup Started" and "Backup Completed" notifications through PyNotify.
		(2009-08-03)
	13.) Changed background threading to use QtCore.QThread rather than threading.Thread.
		This makes it easier to push notifications back to the  GUI through the 
		Signals/Slots mechanism. (2009-08-04)
	14.) Added background class to test if the archive is present.  Works as a background
		thread, same class used on both MainWindow and SettingsDialog.  (2009-08-04)
	15.) Changed the MainWindow dialog so that it now loads the archive file list as a
		background method. This makes the user interface more responsive. (2009-08-04)
	16.) RestoreDialog: Added the ability to navigate between the file lists of all folders
		in the backup. (2009-08-04)
	17.) SettingsDialog: Can now add patterns, settings, files and folders to the exclude
		list in the settings dialog. (2009-08-04)
	18.) Background/Core: Multithreaded restore method.  Possible to queue and restore
		files from the archive browser.  (2009-08-05)
	19.) Notification Bar: Added and setup for the restore operation.  Communicates 
		via signal/slots, so can easily be added to backup and load file list as well.
		(2009-08-05)
	20.) Search bar for RestoreDialog added. (2009-08-08)
	21.) Changed backend to avoid "Segmentation Fault" errors.  Instead of trying to
		create and pass QStandardItemModels as part of the method, instead, models are
		created in in __init__ and QStandardItems are passed from one model to the other.
		(2009-08-08)
	22.) Added cron scheduling (taken from Back In Time) and a secondary class so that backup
		methods can run unattended. (2009-08-08)

TODO: 

	(Done) 1.) Exclude list for file patterns, files and folders.  (Implemented for file patterns,
		needs to be implemented for files/folders in advanced dialog.  Version 0.2)
	(Done) 2.) Rudimentary backup and restore methods. (Backup Methods: 2009-08-03, Restore: 2009-08-05)
	(Done) 3.) Modify Restore and Backup Options so that they run on their own background 
		threads.  Letting them run in the foreground takes too much time and causes 
		the UI to become unresponsive. (Backup Thread: 2009-08-03, Restore Thread: 2009-08-05)
	(Done) 4.) Add a "notification bar" to the UI and display command line output so that the 
		user knows what the program is currently doing. (Added and Implemented Backend: 2009-08-05)
	5.) Add a "Clean File Cache" button to the Settings Dialog (under the Advanced Pane).
	(Done) 6.) Implement a method that will list the Snapshot History.  Should be 
		redundant, if unable to load from the backup source, it should load from the
		local cache.  (Any errors will affect the overall user experience.)
		(Version 0.2)
	(Done) 7.) Add an easy way to search the archive file list in the RestoreDialog. 		
		(2009-08-08)
	(Done) 8.) Add method that allows for the backups to run unattended (can be taken 
		from Back In Time).
	(Done) 9.) Implement a GUI that allows for exclusion criteria and backup settings to be set 
		on a per folder basis.  (Exclusion Criteria: 2009-08-20.  Backup Settings: 2009-08-20.)
	(Done) 10.) Modify backend verify methods so that they ensure the exclusion criteria will 
		work with duplicity. Failure to do so resulted in a large number of errors when first
		trying to implement the exclude list.
	(Done) 11.) Modify backend so that it respects the new advanced folder settings. (2009-08-21)
	12.) Implement tools that allow for snapshots to be deleted, renamed and manipulated.
		(Both globally and on a per-folder basis.)
	13.) 