2.1 - 2.1.pl1 - minor bugfix in restore script 2.1.pl1 - 2.1.pl2 - Bugfix in configuration programs. Affects: cartridge handling systems without a special command to set the cartridge, that therefore must be set to sequential mode. Workaround: Comment out the line starting with Setcart-Command in .../backup/server/lib/backup.conf 2.1.pl2 - 2.1.pl3 - Fix of stupid bug produced while fast-hacking pl2 2.1 - 2.2 - automatic tape labeling and consistency check - directories can selectively be excluded from backup - cleverer device access, two stage timeout: 1st stage sends email to maintainer, 2nd stage exits - facilities for recovery from hard crash with lost filename logfiles - reduced unnecessary tape movements 2.2 - 2.3 - Maintain a lock file to prevent concurrent tape access of different server processes - Optional compressing of the filename logfiles - Client side parameters RootDirectory and BackupHost can be overridden with command line options of restore 2.3 - 2.4 - Block and character device special files can be saved - Storing the file contents can be forced independently of the file type (useful for saving raw partitions or so) - option -N for the client side program for saving only files newer than a given one - small bug fixed concerning zero-length files 2.4 - 2.5 - File contents (see 2.3 - 2.4) can be compressed - Sockets can be saved - full_backup, incr_backup and restore are now binaries - print_errors is a new command - Weird problem workarounded with I/O-Error on interrupted backup - If filename logfiles should be compressed, no uncompressed files ever appear - Directory path patterns can be supplied for excluding files or directories - Support for a max of 16777215 cartridges with 2147483647 files on each (please consider configuring several backup servers ;-) ) - Restore can be called with glob-style filename patterns - For the client side a lockfile is maintained as well, so several backup or restore programs can't be run simultaneuosly on one client causing trouble on the logfiles 2.5 - 2.6 - File contents can not only be specified with prefixes /../ or //../, but also by option -r or -R - Saving files can be limited to device/filesystem 2.6 - 2.6.1 - New client- and serverside parameter EncryptionKeyFile for the authentication mechanism - New clientside-parameter VarDirectory for varying files - Default-configuration files in /etc/buclient.conf and /etc/buserver.conf 2.6.1 - 2.7 - New clientside parameter CompressBackupedFiles for choosing compression of files and filename logfiles separately - Clientside request-queue for asynchronous communication with the server (hopefully much better performance) - New serverside command "label_tape" to manually write a label to the tape actually in the drive - Default-configuration files can also be (Debian needs) /etc/afbackup/client.conf and /etc/afbackup/server.conf - Bug (typo) fixed: Entry for locking file in the server configuration file has been ignored - HOWTO-file is maintained now 2.7 - 2.7pl1 - Better connection failure handling. Up to now with DAT data on tape might be lost on a connection breakdown 2.7 - 2.8 - Normal filesystems can be used for backups instead of tapes, thus also removable media - A file with a special name can be placed in any directory containing names or patterns of files and subdirectories to be excluded from backup - Compression attempts can be avoided on already compressed files by supplying appropriate filename patterns - Slight further speedup - Small bug fixed (sometimes a "Connection ... lost" occurs) 2.8 - 2.8plX - Bugfixes, more logging, more diagnostic messages, more safety 2.8 - 2.8.1 - Port number can be configured in the configuration file of the client side 2.8.1 - 2.8.2 - FreeBSD supported - Wrapper script for mt added: __mt (FreeBSD's mt does not accept 0 as repeat count) - Non-GNU-make can be used (under Solaris it's a little annoying) and is recognized automatically 2.8.2 - 2.8.2.pl1 - Bug ignoring several -m or similar in file list fixed 2.8.2 - 2.9 - Several sets of cartridges can be used on the server side - Verify is now possible - restore does not restore the same file several times from different backups - memory leak fixed (a quite harmless one, quasi more a theoretical one, no sole reason for an upgrade) - Documentation reviewed and lots added, e.g. an INTRO - An exit command can be configured, usable for reporting successes and statistics to an administrator - Ordinary users can restore their own files and directories 2.9 - 2.9.pl1 - With several cartridge sets configured reading over end of tape of the last cartridge change to the first cartridge of the same set and not to cartridge 1. This was a bug 2.9 - 2.10 - Byte Sums are no longer of type "long int", now "double" ("long long int" is a portability problem) - Buffering also on the server side. Especially read operations (verify, restore) should be much faster now - Stale lockfiles do not cause another server process or a highlevel client program to wait. This was a bug - Several kill-s to the server don't harm, no stale lockfile is left over (of course not valid for a kill -9) - Errors are immediately printed before completion of client programs. print_errors is not really necessary anymore, anyway i consider it helpful for later diagnostics - No longer confusing message "Cannot find out number of lines in ..." - No longer annoying message "/tmp/xxxxxx: No such file or directory" - Safer tape handling (hopefully) - Strange AIX problem workarounded (EIO at end of media instead of the documented ENXIO) - A modified-before- and -after-date may be supplied with the restore program - Autodetecting inserted cartridge, if tape is labeled or had already been used - Strange wish behaviour (too flat window) workarounded - Missing feature added: modification time is saved with file contents i.e. e.g. raw devices 2.10 - 2.11 - Second possibility to save backups in a filesystem (without the need of symbolic links) - Output of XXXXXXconfig is piped through more for convenient configuration from any terminal 2.11 - 2.11.1 - libc-6 (i.e. glibc) - ready (see README: THANKS TO) 2.11.1 - 2.11.2 - Insufficiency of the cartis script fixed: read the number of cartridge sets from the server configuration file - (x)clientconfig and (x)serverconfig did not look for config files in all intended places, documentation incomplete 2.11.2 - 2.11.3 - Minor inconsistencies fixed. Utilities added (yet unused) 2.11.3 - 2.11.4 - Security hole fixed 2.11.4 - 3.0 - Debianized - Defaults changed somewhat - Uses autoconfig - full_backup, incr_backup, restore and verify can override most of the config file settings by commandline options - New parameter: Device-probe interval - New parameter: Skip-files Command - Documentation reworked (including man-pages) - restore now takes -C instead of -R, -R is still recognized. -C is now the changedir-option in conformance with the other commands (and BTW tar) - label_tape has new -q option for reading the tape label - Emergency restore without any input information (-E) - Emergency restore or only the minimum restore info (-El) or only tape scanning (restore -En) - Differential backup with option -a for incr_backup - Hopefully more speed by use of appropriate TCP-options - Option to use 128 Bit DES encryption for client-server authentication (requires Eric Young's libdes) - cartready indicator file mechanism changed (other way round) - Logging of the remote host name, if authentication fails - Possibly conflicting program names prefixed with af - Bug fixed setting the wrong cartridge for a set, if one set comprises of cartridge #1 only, what should be avoided anyway - Senseless settings of maximum number of bytes per tape file caught and reset to reasonable value - Year 2039-ready i.e. any length time_t on any architecture - More appropriate filename handling on recursive extraction of directories - Preferred serving of repeated requests from the same client to avoid race conditions - Better locking algorithm for client start and server access - SunOS 4.XYZ supported platform - Symbolic links are allowed for all programs (full_backup, ...) - On remote start the output of the remote command is transferred to the client side, also the exit status corresponds - Generally better diagnostics for remote start - Very stubborn problem on HP-UX-9 fixed, maybe the problem was leading to problems also on other architectures - New parameter: InitProgram for the client side. StartupInfoProg is now ran later, when backup succeeded - In serverside init and exit command %p is replaced with client's peername 3.0 - 3.0.1 - New flag -w for afclient to check server side streamer state - differential backup with incr_backup -a did not work yet (!) (implementation was lost probably due to multiple development locations and inconsistent code between them, sorry) 3.0.1 - 3.0.2 - New flag -l for afclient to report the location of the server side for each file (preparation for storage pools) - docs updated 3.0.2 - 3.0.3 - restore -f was broken in 3.0.1 - 3.0.2 3.0.3 - 3.0.4 - Server side rexec path had wrong default 3.0.4 - 3.0.5 - Always use builtin fn_match instead of fnmatch 3.0.5 - 3.1 - Several triples backup-host/backup-port/cartridge-set possible, all handled transparently to the user - Server side lock bug fixed (caused minor requests like -q to hang, had to interrupt with Ctrl-C, bug appeared in 3.0.3) - Also scripts (e.g. clientconfig) may be arbitrarily symlinked - Preinstalled config file has now empty encryption file - caused confusing log message (" ... using compiled-in key") - Install script supports change of afbackup service name - Docs adapted - Tape label extended by a comment and a possible secondary label number - Bug concerning SetCartridgeCommand fixed - Server side processing reworked for better throughput - Protocol extended for raw accesses - A lot of processing modularised - A maximum number of bytes per tape can be configured, also varying for different tapes - Tapes can be duplicated (command copy_tape) - Duplication of tapes can be automated after performing a backup (script autocptapes) - Backup levels of arbitrary (1..MAXINT) number (option -Q for incr_backup) - Automatic switching from incremental to full backup for new entries in DirsToBackup... - Verbose option -v for full_backup, incr_backup, ... - GUI frontend xafrestore for the afrestore utility, still inferior 3.1 - 3.1.1 - Some strange csh versions had problems with xafrestore - Helper programs for fast command pipe startup (__piper) and encryption (__descrpt) added (mainly for use in CompressProgram) 3.1.1 - 3.1.2 - Bug fixed: erasetape command was not always called when changing the cartridge 3.1.2 - 3.1.3 - Compilation was broken on FreeBSD 3.1.3 - 3.1.4 - Bug fixed: During save timestamps of filesystem entries were changed, that symlinks pointed to 3.1.4 - 3.2 - ACLs supported on Solaris2 and HPUX-10, if available - Also on Solaris >= 2.6 filesizes > 2GB supported - Multi stream server - Status file on server side, regularly updated during operation - Descending into directories is now done like find -depth - Hopefully even safer tape error handling - Service names allowed wherever port numbers were to be given - -v option for verify, restore and copy_tape - Tapes can be set read-only - Tapes are no longer overwritten, server keeps track, which tapes are needed for all the clients - Admin must explicitely permit overwrite of needed tapes - Verify is much faster now - Bug fixed (tapeblocksize may now be > MaxBytesPerFile / 10) - Init Media command for preparing the media for access, e.g. mounting a removble disk - More versatile Change-Cart-Command (see FAQ Q6) - Tape blocksize now written into the tape label - Filelist recovery also restores uid fields - Minimum restore info is no longer cumulative - Configuration programs can get config file as argument - label_tape now also labels "directory-tapes" 3.2 - 3.2.1 - Compilation was broken with glibc and on FreeBSD, maybe others - Bug fixed: differential backups did not work correctly when configuring several backup parts 3.2.1 - 3.2.1pl1 - Bug fixed: Restore reported errors without real reason and probably restored in wrong order, when compiled with -O..., probably more side effects up to no working high-level programs (full_backup, incr_backup, verify, ...) 3.2.1 - 3.2.2 - A full backup split into pieces does no longer modify the timestamp - Builtin compression - Faster (backward compatible) packing format - Bug fixed requiring unnecessary workaround for afrestore -[eEf] on new installation - Bug fixed, restore -[eEf] now works together with -[RC] 3.2.2 - 3.2.3 - Option -G for (full|incr)_backup and afclient to request a new or reused cartridge - Completely any-shit-in-filenames-safe, e.g. newlines or non- printable characters are allowed in filenames - Cartridge sets may consist of arbitrary cartridges, not only consecutive ranges - Enhanced database saving capability through command output saving / command input restoring feature - Security fix: Client configuration file must be owned by root, so normal users can't supply their own ones 3.2.3 - 3.2.4 - Client side ring buffer processing reworked, lots of unneeded system calls removed -> hopefully better performance, fewer problems on the Sun and other System-V like OSes - Bug fixed: files with special characters in name were sometimes not found during restore with given filenames - Bug fixed: __descrpt had a problem when reading a pipe - Insufficiency fixed: client now tells server to not overwrite tapes relevant on this server only (before lock on all servers) - Server ID introduced to be able to identify the same server under different hostname/port-combinations (e.g. single-multi) - Server now tells about it's version, client evaluates this - New option -r for command label_tape to delete the overwritten tape from the cartridge handling database - label_tape now updates the cartridge handling database properly - Better locking for the cartridge handling database files - Bug fixed: memory allocation in del_one_from_Uns32Ranges - Tape usage counter (file tape_uses) - New serverside callback command Tape-Full-Command - New helper program __numset - Helper script cartagehandler to automatically move cartridges to other sets - Variable client-server-protocol - Throughput optimizer varying the client-server-protocol - Annoyance fixed: verify no longer tells x is larger than x - Source reorganized: Utilities library can be used independently from afbackup, especially in other projects - Bug fixed. When restoring relative to a directory, symlinks pointing to absolute pathnames were not created correctly - Parts of restore reworked -> safer, faster: trying to put together subsequent tape files for restore; output modified - Insufficiency fixed: -l and -n with -a allowed for afrestore - Trivial but terrible (whoooooaaaaahhh) memory leak fixed - Problem fixed with multi stream server when first/last client fails to connect successfully (thanks also to Pjotr Klaban) - Bug fixed: The device access timeouts did not behave as documented when configuring 0 - Bug fixed: verify might have hung reading corrupt tape data - Usage check for client program fixed - Bug fixed: Documentation error on -R for restore stating a directory would be created - Bug fixed: reread tape position file after waiting for write - File truncation during restore tracked down to misbehaving zlib - Default installation directory in Install script changed from /usr/backup to /usr/local/afbackup - More appropriate position recording in file index -> faster restore 3.2.4 - 3.2.5 - All arguments passed to mserver and not recognized are passed on to the server subprocess, thus -b possible in /etc/inetd.conf - Fixed bogus error message during restore, stating that errors occurred, though there were none - Optional CRC32 checksumming on each file, especially, if not compressed (zlib is required nonetheless) - Real compression factor is reported in statistics taking only compressed files into account - More detailed error messages - Configurable server status file, optional append mode - More convenience replacements in configuration files - Timeout for logon to server - Restore of filecontents can be forced to relative path, too - Option -H removed from afrestore, -W should be used instead - Bug fixed: On Solaris or HP-UX the multi stream server might segfault at startup with certain configurations - More logical error handling on client side: distinguish between retryable and non-retryable errors - Cartridge set access can be restricted to certain clients - Bug fixed: Builtin authentication key stuff (no DES) was broken - Restoring with unlink: If a directory is restored and an entry with that name exists, that is not a directory, it is unlinked - Minor bug fixed: raw tape access was broken through the multi stream server (discouraged anyway) in 3.2.4 - Workaround for stupid bug in the IRIX-6.5 Headers - On Sun and HP ask for and recommend using gcc - Documentation errors concerning filesystems as storage media fixed 3.2.5 - 3.2.6 - Fix for malloc problem on Digital Unix (and probably others (?)) - Optional full append mode - Exit, if confirmation can't be read from TTY or on input timeout - Bug fixed: When switching to another cartridge set for backup with a writing position on a tape, that has been set to read-only mode in the meantime, an immediately following verify asks for another tape first before requesting the correct one (this problem has never been reported to me and only matters for verify, not for restore or anything else, so i consider this a minor bug) - Documentation update: How afbackup compares to amanda - Two-column X-configuration programs - I18N/L10N (thanks a lot to "Lele Gaifax" for implementing it) - Option -n with -X for remote start will prefix the output lines with the name of the remote host and a colon - Also negative timestamps possible (e.g. "supported" by Solaris) - Additional security checking for wrong SUID/SGID Flags - Multi stream server's client authentication timing reworked (might timeout during connect due to long tape operations) - Option to refuse writing to tapes without valid labels - Option -m for restore to prevent existing files from overwriting 3.2.6 - 3.2.7 - Compress/Uncompress program parameters renamed to Process/Unprocess to stress their more general character - The unprocess programs for the indexes are written to files, so the (un-)process programs can be safely changed at any time - Seperately configurable process and unprocess commands for the index files - The restore option -C really will create the directory as stated by earlier documentation - Serverside bug fixed: In very rare cases the tape file count might become higher than reality. This makes, that full append mode for this tape does not work any longer, when it is deselected explicitely (cartis -i or clientside -G), No data is endangered to be erased, overwritten or some other way lost - Optional variable append mode. Any tape of the right cartridge set with space left is accepted for writing. No fix writing position - Some oddities in label_tape cleaned up, e.g. a cartridge will be removed from the set of read-only tapes, when labeled - Bug fixed: (full|incr)_backup did not work with LANG != C or unset - One more time workaround for IRIX-6 header bug - When cartridges are removed on the server (using label_tape or the server message ReuseTapes) the client updates his information and prints a message at backup start time - More robust client connect mechanism - Multi stream server can be started as daemon (not using inetd) 3.2.7 - 3.2.7pl1 - full_backup and incr_backup did not work with LANG != C 3.2.7 - 3.2.8 - (3.2.8 is mainly a maintenance update) - Symlinks owned by root:root in a user's directory could not be restored before. This works now, if there's no syscall lchown - Tapes can be labeled, while server is waiting (option -F) - Build machinery, especially autoconf, enhanced - No more sideeffects when installing the programs not in an own, but a public directory - Debian source build tree fixed - Choice while running Install, whether chown of the serverside var directory and all it's contents should be performed - Some texts were still not internationalized - More documentation - Workaround for remotely started daemons, that do not daemonize properly - Most filedescriptors are closed on exec - cleaner implementation - Authentication stuff implemented more generally reusable (for gnep) - Problems with Tcl/Tk-strings on IRIX and Tk-4.0 fixed - Also on Linux filesizes > 2GB supported (if Linux does) - Server enhanced, so Solaris is now a tested server side platform (must be >= Solaris-2.6) - Clientside logfile is only opened, when there is something to be appended, and closed afterwards - cleaner implementation - The minimum restore info can be used in the clientside exit command - Client gives up connecting immediately on sure authentication error 3.2.8 - 3.2.8pl1 - afclient -GQ did not produce correct output on first invocation, what might break verify functionality (no data harmed) - afclient's -n option in combination with -X was not documented - Minimal restore info might not be found while tape scanning if written by the multi stream server - afmserver did segfault, if tape blocksize was > 131076 bytes - afmserver made afserver ignore the -b flag (nobuffering) 3.2.8pl1 - 3.2.8pl2 - If there was an entry for the parameter "LastCartridges:" in the serverside configuration file (though this entry is an old fashioned one, it's use is discouraged, changing to the new style entry is described in the UPGRAGE file under 3.2.2 and the entry is automatically converted by either serverconfig or xserverconfig) AND the entry was empty AND there was no entry for the (new-style) parameter CartridgeSets, THEN the server misbehaved in that it requested cartridge n + 1, when cartridge n was full and there were only n cartridges configured 3.2.8pl2 - 3.2.8pl4 - make install.client might fail, if DES encryption is not built in 3.2.8pl4 - 3.2.8pl5 - Bug fixed: server might segfault when writing is requested and no tape with space is available 3.2.8 - 3.3 - OpenBSD supported - Tape locations database - Media changer support (1 drive in a media changer per server) - New command cart_ctl - mtime is saved in index -> file selection/listing for restore using the modification time is correct now, but: index bigger and less compressable - Contents of progress text window of xrestore always visible now - Server can send mails to current users (%U) on clientside (%H) - Server is configurable to write messages to syslog - No longer strange server behaviour, if no logging is configured - Path replacements also on server side (%L, %B, %V) - afclient -v prints out software name and version - Bug fixed: Toplevel directories with a name consisting of only 1 character were only listed by restore, if the name was given exactly, thus not immediately visible in xafrestore - Bug fixed: restoring a filesystem entry with ACLs and several hardlinks produced format error and possibly segfault - Cleverer algorithm to select the tape files for emergency restore, -E and -e options of afrestore can be given several times - Buggy function in libdes des_3cbc_encrypt only used on request 3.3 - 3.3pl1 - Stray lines in afrestore -l output, thus also in xafrestore, fixed 3.3pl1 - 3.3pl2 - copy_tape did not work any more with destination filesystem - if builtin compression was turned on and an external program was configured to preprocess the saved files, under certain (in my opinion rare) circumstances verify might stop processing due to a condition similar to a race. Other functionalities e.g. backup or restore were not affected