ukopp change log
================

2017.04.03  v.6.3
+ As an additional protection against accidental file deletions, an overall 
  archive deletion grace period was added. Regardless of other archive file 
  retention policies (retained versions and time), no 'deletable' archive 
  file will be purged from the archive before the grace period has expired.

2017.01.08  v.6.2
+ Bugfix: garbled differences summary report if backup is to a directory 
  only instead of to a device, mount point, and directory.
+ User Guide: an explanation was added about how deleted source files are 
  handled in the backup archive (when and how long they are retained). 

2016.08.17  v.6.1
+ Increase internal buffer size to handle very long file names.
+ Add xdg-utils to package dependencies.
+ Correct error in user guide.

2016.08.16  v.6.0
+ Reset the error status before error checking.
+ Verify the backup job after any changes are made, flag errors.
+ New feature: show the differences between a file and any prior backup 
  version, or between any two prior backup versions.

2016.01.03  v.5.9
+ Stop meaningless error messages from latest GTK changes.

2015.11.01  v.5.8
+ Update GTK 3.16 deprecated functions.
+ Include count of expired old file versions in summary reports. 

2015.06.14  v.5.7
+ Automatically create backup directory if missing.

2015.06.01  v.5.6
+ Bugfix: warn invalid backup directory before starting a backup job. 
+ A few small usability and cosmetic improvements were added. 

2015.05.14  v.5.5
+ The GUI interface was simplified for the case where an existing archive 
  directory is specified without specifying a device and mount point.

2015.05.07  v.5.4
+ Backup file version retention logic was changed to be a better match
  to common needs: a backup file version is purged if older than the 
  number of versions to retain OR older than the retention period.
  EXISTING BACKUP JOB FILES MUST BE REVISED ACCORDINGLY.
+ Terminology was revised to improve clarity: backup "target" was 
  replaced with "archive" in the GUI, job files and user guide. 
  "Archive" means the storage device + mount point (optional), and 
  the directory where files are copied.
+ Added GUI support for selecting single files/versions to restore.
+ Increased maximum backup file count to 1 million files.
+ Remove disk format function which does not really belong in Ukopp.
+ Bugfix: "archive space" report sometimes listed irrelevant directories.

2015.04.08  v.5.3
+ Copying file owner and permissions to the backup media was made optional.
  This is useful if the backup target is a Microsoft file system which does 
  not support Linux owner and permissions. Note that owner and permissions
  data is still copied to the backup media in an extra data file, and if 
  files are later restored, their owner and permissions are also restored. 
  This works even if the backup target is a Microsoft file system. 
+ Bugfix: The following job file was made to work properly:
     include /home/mico/*                    #  include everything
     exclude /home/mico/programs/*           #  exclude programs/*
     include /home/mico/programs/* (30,3)    #  re-include programs/*
  The last record adds a version retention rule only for programs/*
  (retain all versions 30 days, retain last 3 versions forever). 

2014.12.05  v.5.2
Bugfix: possible crash if included directory without wildcard, e.g. 
"include /home/.thunderbird" instead of "include /home/.thunderbird/*".

2014.11.01  v.5.1
The file cache is flushed and purged between the Backup and Verify 
functions. This replaces the lost O_DIRECT capability (see below). 
The Verify function is therefore reading directly from the disk and 
not from the file cache (filled with data previously written). 

2014.10.22  v.5.0
Verify function: the O_DIRECT flag was removed from the file open() call
because Linux kernel 3.16 fails with EINVAL (invalid argument). Earlier 
kernels accepted this. The effect is that the Verify function has been
made useless unless the storage device is unmounted and remounted between
backup and verify. Without O_DIRECT, the source files cached in memory 
are being checked instead of the destination files written to storage. 
You may notice that the verify speed has increased 10x or more. I have 
found no useful information about this problem. 

2014.05.09  v.4.9
+ Revise for changes in GTK functionality with Ubuntu 14.04.

2013.10.12  v.4.8
+ Ignore incorrect EBUSY status from rmdir()
  kernel bug: https://lkml.org/lkml/2013/8/28/654

2013.03.01  v.4.7
+ Clarifications in GUI and user guide.

2012.11.01  v.4.6
+ Replaced deprecated GTK functions with new versions.

2012.07.20  v.4.5
+ Toolbar text was added back after Gnome decided to remove it.
+ Minor improvement in error reporting.

2012.04.23  v.4.4
+ Instead of doing a system-wide sync command after all files are copied, 
  fsync() is called at the end of each file. This is a little slower but 
  leaves the file system in good shape if the job does not complete.
+ Bugfix: overflow of memory array and crash if the file limit (200K) was
  exceeded. The bug was fixed and the limit raised to 500K files.

2012.02.01  v.4.3
+ Ukopp was converted to use GTK3 and Cairo. It will no longer
  build or install on older Linux distros lacking these libraries.
+ Target disk space statistics added to differences summary report.
+ RPM packages are built using Fedora and rpmbuild instead of alien.

2011.10.29  v.4.1
Many small improvements in usability and minor error corrections.
+ Main window states if ukopp is running as root or not.
+ If backup + verify, report both backup and verify status after verify.
+ If target directory does not exist, warn and offer to create it.
+ Better visual separation of fields in target chooser dialog.
+ Clarify backup menu as "backup (no verify)".
+ Widen fields in target chooser dialog.
+ Change the mouse pointer into a clock during a long-running function.
+ Stop job name from disappearing from main window title.
+ "include /aaa/bbb" same as "include /aaa/bbb/*" if bbb is a directory.
+ Expand input fields with the window in restore files dialog.
+ Restore original target device and directory if edit job is canceled.
+ File names can be quoted to handle files ending in a blank character.
+ Some error messages were clarified and dialogs kept open afterwards.
+ The file chooser dialog no longer hides the restore files dialog.
+ New report: summary stats for new/mod/deleted files by directory.
+ The tolerance to consider a disk file and its corresponding backup file
  to have the same modification time was increased from 1 to 2 seconds. 
  This is because the Microsoft VFAT time resolution is 2 seconds. 
+ All error messages are shown in the main window (not stdout).
+ Bugfix: purge expired backup versions also for files NOT being copied.
+ Prevent Choose Target and Edit Job dialogs from running in parallel.
+ Many small improvements were made to the user guide.

2011.09.22  v.4.0
+ Code cleanup for compiler warnings with GCC 4.6 (Ubuntu 11.10).
+ Separate File Save (no dialog) and Save As (file chooser dialog).
+ Added a warning for Quit with unsaved changes to backup job.
+ Job name was added to window title, with (*) indicator if edited.
+ Excluded files/folders no longer need to start with a top directory
  (e.g. exclude */folder1/fol*der2/*  works as expected).
+ Toolbar has more descriptive icons for mount and unmount.
+ Bugfix: one more file versions than requested was being saved.
+ Bugfix: quit job edit dialog left dependent file chooser dialog open.
+ Bugfix: report saved file versions: wrong value for expired bytes.

2011.05.01  v.3.9
+ A man page was added.
+ Window is dumped to log file before exit.
+ Detect error: selected file outside restore-from directory hierarchy.

2010.08.21  v.3.8
+ A button [root] was added to the toolbar. This restarts the application
  with root privileges if the queried password (sudo) is correct.

2010.05.19  v.3.7.1
+ Implement show/hide hidden files in restore file chooser dialog.

2010.03.25  v.3.7
+ Improve diagnostics when target file system does not support required
  functions (large file, direct I/O) or there is insufficient permission.
+ Bail out when there are excessive errors (e.g. permissions error).
+ Makefile was made more package-builder friendly.

2009.12.26  v.3.6
+ Support non-GUI mode for command-line / deferred execution (cron).
   (e.g. $ ukopp -nogui -run /.../my-ukopp.job)

2009.11.08  v.3.5.3
+ bugfix - file compare fails with NTFS (Windows) file system.
  Workaround implemented: avoid open(...O_DIRECT) with NTFS.

2009.10.25  v.3.5.2
+ Do remount only if device was mounted by ukopp, else use sync.
+ Use direct I/O for verify - sync leaves files in memory cache
  which defeats media verification.

2009.10.21  v.3.5.1
+ Do remount instead of sync to insure cache is written to disk
  (faster and affects only one device instead of all of them).

2009.10.03  v.3.5
+ GUI revised: retention specs for old file versions on the backup
  media are easier to specify and more conventional. Other changes 
  to the GUI were done to make it easier to use. Changes to job file 
  format will require minor re-editing.
+ Better detection of conflicts bewteen user intent and actual status.
+ Do auto unmount at end of job only if mount was done at start.
+ Auto deletion of mount point directory only when created by ukopp.
+ Bugfix: include/exclude filespec containing blanks did not work.

2009.09.23  v.3.4.2
Avoid deletion of non-existant directory and confusing error message.

2009.07.13  v.3.4.1
fix compile errors introduced by gcc 4.4

2009.03.30  v.3.4
The Linux program "udevinfo" has recently become "udevadm info". 
Ukopp was modified to use whichever variant works.

2009.03.26  v.3.3.2
Trivial changes to error messages.

2008.11.05  v.3.3.1
The USB stick format utility (vfat/ext2) was broken and has been fixed.

2008.11.02  v.3.3
The output format of the udevinfo command was changed, breaking ukopp's 
ability to find all mounted and unmounted disk devices. This version
of ukopp works with both the new and old udevinfo formats.

2008.09.20  v.3.2
+ Implement two methods for flushing the I/O memory cache to the backup
  device between backup and verify operations: sync command (no change) 
  and unmount/remount of target device (somewhat faster).
+ Improve convenience and robustness of backup target selection.
+ two minor bugs were fixed.

2008.08.03  v.3.0 and v.3.1
+ Do not discard symlink files - include them like regular files
  (symlink targets are included only if specified in job file)
+ Verify symlinks using readlink() function (v.3.1)
+ user guide changed from PDF file to HTML

2008.06.01  v. 2.9
+ change from build script to traditional makefile
+ change name from ukop to ukopp

2008.05.24  v.28
+ fix minor bug from linux file sort utility not consistent with strcmp()

2008.04.20  v.27
+ fix for change in behavior of lstat64() in newest c-lib
+ fix compiler warnings in newest gcc (stricter rules)

2008.03.20  v.26
+ make synchronize function work for VFAT (Microsoft) backup medium
  (use separate file for preserving owner and permissions data)
+ add command to format a backup device with vfat or ext2 file system

2008.02.29  v.25
+ add function to synchronize disk and backup medium in both directions
  (new and newer files are copied from disk to backup or the reverse)
+ modify differences report to show which file is newer: disk or backup
+ copy owner and permissions for created directories and files

2008.02.13  v.24
+ bugfix: crash due to defective default job file

2008.02.09  v.23
+ avoid confusing check of backup target directory
+ user confirmation of backup target before starting backup job

2008.02.04  v.22
+ retain specification includes optional filespec with wildcards
  (specify retain spec at finer level than include record)
+ new report: expired file versions (to be purged from backup location)

2008.01.29  v.21
+ separate build scripts for downloaders and package builders
+ code changes to get application directories from build script
+ cosmetic improvements in report formats and error messages
+ correct error in file versions report (Linux sorts '.' before ' ')

2008.01.20  v.20
+ backup file versioning: retain prior file versions for designated time 
  period and/or number of retained versions.
+ flush disk cache between backup and verify to insure verify data is 
  coming from the USB drive (replaces prior method using O_DIRECT).

2008.01.01  v.12
+ build script allows user to choose install location and desktop icon

2007.12.10  v.11
+ code cleanup for 64-bit architecture compatibility
+ verify thorough changed: all USB files are verified 
  (job file no longer relevant)

2007.11.15  v.10
+ new GTK requirement: if (! g_thread_supported()) g_thread_init(0);

2007.11.12  v.09
+ zdialog_add_widget, options argument delimiter change 

2007.10.15  v.08
+ fix significant bug in thorough verify: files not being compared 100%
+ don't lose comment records in job file
+ eliminate "end" record in job file (end is EOF)

2007.09.27  v.07
+ symlinks are copied, but target files are copied only if within the 
  backup file set (see user guide about restrictions with FAT file system)
+ accept job file on command line (without -job) (per Linux convention)
+ output a summary differences report when backup job begins
+ remove USB stick mount point from backup job file (does not belong there)
+ correct several errors in user guide
+ minor improvements to user interface

2007.07.06  v.06
+ follow Linux convention for app files in /home/username/.ukop/ 
  or /root/.ukop/ (move your job files here for convenience)
+ allow show / hide of hidden files in job open / save dialogs
+ report and command outputs made a bit more clear

2007.06.15  v.05
+ if directory is deleted and parent is now empty, delete parent
+ if a file fails to copy, report error in backup, not in verify
+ new technical note about file name limitations for FAT media

2007.05.28  v.04
+ add convenience buttons for file load and save to job edit dialog
+ if last file in a USB stick directory is deleted, delete the directory
+ increase file limit from 100K to 200K files (memory usage +15 MB)

2007.05.13  v.03
+ replace menu and toolbar macros with zfuncs functions

2007.04.25  v.02
+ fix icon on toolbar button for USB stick selection
+ add report: disk:USB stick differences by directory
+ allow file size exceeding 2 gigabytes

2007.04.12  v.01 initial release
+ backup job: open, edit, save, run
+ backup: incremental, accumulate
+ verify: full, incremental, thorough
+ disk / USB stick differences reports
+ restore function


