[Backalaika-developers] Re: quirements and design DONE.
Status: Beta
Brought to you by:
nandof
From: Nando F. <nan...@ma...> - 2004-10-04 15:22:05
|
CHANGE HISTORY ============== nf 2004-10-03 - Meet our competition: http://www.theaardvark.com/sitback.shtml - Using same timestamp for all zip file names. Ensuring zip file names will be unique in each job by adding numbers at the end: How about DateTime-Kind-Number.zip (28 chars if Number has 2 digits) - Temporarily using this directory structure for storing backups: Backups // only 1 folder ProfileName // multiple (zip files go here) Still under ZipServer. When backups are stored in BackupServer, we can think of inserting "Media001" or something below the "Backups" folder. - Added to the XML file a field int NumberOfZipsInThisBackup - Instead of one XML file per zip, making a single XML file per backup job, containing info about the backup job, including a map between each zip file and its BaseFolder. nf 2004-10-02 - Refactored backup process so it zips each FolderToInclude in its own zip file. It also creates an XML file to accompany each zip file. - DiskFileList now contains *only* files that need to be backed up. - Added "Computer" property to ProfileSingle, and limited ProfileName to 12 chars, thus breaking compatibility with existing profiles -- please create new ones. - Created Computer class (in file ProfileSingle.cs) nf 2004-10-01 - Incremental and differential backups implemented. Both only back up files that are marked with the Archive attribute. Differential backups leave the attribute set, while Incremental and Full backups reset it after the backup is complete: http://searchstorage.techtarget.com/ateQuestionNResponse/0,289625,sid5_cid419862_tax286189,00.html - Backup temporary extension = .zip.tmp - Erase empty ZIP file if there was nothing to back up at this time - Word "additive" replaced by "incremental" everywhere. This broke profile compatibility, but is definitive. nf 2004-09-30 - HORRIBLE BUG fixed: Full file path (including drive) was being written to zip, instead of relative path! Now you can actually unzip your backups! - OO-Refactoring: moved all DiskFileList-related functions from ZipService to DiskFileList. ASSIGNED TASKS ============== to everyone: Test backups by extracting them in all zip utilities your computer has and report here: • Windows: understands the format since HORRIBLE BUG was fixed! • ZipSharp: works fine (same DLL...) • WinRAR: extraction and test OK to Prasanna: Test cases for ProfileSingle class Possible tasks for now (in optimized order) ====================== - TOP PRIORITY: International characters in files and folders, such as çãõéê etc., get different (wrong) when zipped. They must be getting encoded in an MS-DOS character set instead of a Windows character set. Find a fix - Read ZipBuilder.cs in the Texts folder (comes from the ZipSharp utility) - In FileServerBackup, fix buffer allocation for large files. This must be responsible for an "Out of Memory" error I got when backing up 6000 files. Also study how objects could be disposed of when compressing. - In Windows 2000 (but not in Windows XP), folders created by Backalaika have restricted permissions, so they could not be moved to another machine until I changed the permissions. See if Backalaika can set liberal permissions for those folders (this should be a configuration option in BackupServer). - Modify the zip algorythm so it will store (instead of compress) files with extensions such as jpg, zip, rar, ai etc. The list of extensions should be configurable (i.e. loaded from a text file). - Activate the "Subfolders to exclude" list in the backup algorythm - In ProfileSingle, create a boolean property "One zip file per subfolder" - Learn how tests are integrated in SharpDevelop. - Write tests for any class. Nando has ideas for the ProfileSingle class. - Fix something from the TODO task list generated in SharpDevelop. - Minimize BackupServer and FileServer to the system tray. - Even though it is called a "server-activated object", FileServer.Backup is created lazily, i.e. only when BackupServer accesses it. Likewise BackupServer.ProfilesList is only created when Admin accesses it. This seems to create a problem: the whole combo would only work on the day the administrator remembered to start the GUI :) What is the solution? Is BackupServer gonna have to connect to itself? Or is there a more elegant way? - Why the hell is it that ProfileSingle can't be remoted without generating serialization exceptions!? |