* Various tweaks to recent changes, including additional patches
[BackupPC.git] / ChangeLog
1 #========================================================================
2 #
3 # ChangeLog - change log for BackupPC.
4 #
5 # DESCRIPTION
6 #   Revision history for BackupPC, detailing significant changes between
7 #   versions, most recent first.
8 #
9 # AUTHOR
10 #   Craig Barratt  <cbarratt@users.sourceforge.net>
11 #
12 #========================================================================
13 #
14 # Version __VERSION__, released __RELEASEDATE__.
15 #
16 # See http://backuppc.sourceforge.net.
17 #
18 #========================================================================
19
20 #------------------------------------------------------------------------
21 # Version __VERSION__, __RELEASEDATE__
22 #------------------------------------------------------------------------
23
24 * GFK updated fr.pm from en.pm.
25
26 * Various tweaks to recent changes, including additional patches
27   from Josh and Paul.  Added host selection list to restore page.
28   Tweak CSS and layout.
29
30 * Fixed $Conf{HardLinkMax} limit check in BackupPC::Lib; reported
31   by Ross Skaliotis.
32
33 * Major changes from Ryan Kucera to add style sheets to the CGI
34   interface, allowing easy customization.  Added new icons and
35   BackupPC logo.  Numerous navigation improvements.
36
37 * Major addition of Archive feature from Josh Marshall.  Special
38   clients can be configured to be archive targets (eg: tape drives,
39   CD-R).  Any subset of the backup clients can be selected and tar
40   archives are created, optionally compressed and split and written
41   to the output device.  Logs are maintained and are browsable.
42
43 * Addition of administration options from Paul Lukins.  Initial
44   page allows server to be started/stopped/reloaded.
45
46 * Split BackupPC_Admin into a set of modules, one for each major action.
47   Each action is now a seperate module in lib/BackupPC/CGI.
48
49 * Added directory history display to BackupPC_Admin, allowing the
50   user to quickly see which files changed between backups.
51
52 * A failed full dump is now saved as a partial (incomplete) dump,
53   provided it includes some files.  This can be used for browsing,
54   restoring etc, and will also form the basis of resuming full
55   dumps.  Only one partial is kept, and it is removed as soon
56   as a success full (or a new partial) is done.
57
58 * Browsing and directory history now sort the files in a
59   case-insensitive manner.
60
61 * Swapped the Server and Hosts sections on the Nav bar.  Moved the
62   host search text box to the top of the hosts section.  This was
63   done to move the variable-length part of the Nav bar (when all
64   hosts are displayed) to the bottom.
65
66 * In BackupPC_Admin, default REMOTE_USER to $Conf{BackupPCUser}
67   if it is not defined.  This allows the CGI interface to work
68   when AdminUsers = '*'.  Reported by Quentin Arce.
69
70 * For SMB, code that detected files with a read-locked region (eg:
71   outlook .pst files), removed them and then tried to link with an
72   earlier version was broken.  This code missed a step of mangling
73   the file names.  This is now fixed.  Reported by Pierre Bourgin.
74
75 * A backup of a share that has zero files is now considered
76   fatal. This is used to catch miscellaneous Xfer errors that
77   result in no files being backed up.  A new config parameter
78   $Conf{BackupZeroFilesIsFatal} (defaults to 1) and can be set to
79   zero to turn off this check.  Suggested by Guillaume Filion.
80   Additional change: this check only applies to a full dump.
81
82 * SMB: now detect NT_STATUS_ACCESS_DENIED on entire share or BackupFilesOnly
83   (also ERRDOS - ERRnoaccess (Access denied.) for older versions of
84   smbclient.)  Suggested by Guillaume Filion.
85
86 * SMB: now detects "tree connect failed: NT_STATUS_BAD_NETWORK_NAME" and
87   the dump is considered failed.
88
89 * Rsync: Previously BackupFilesOnly = '/' did --include '/' --exclude '/*',
90   which just included the '/' directory and nothing below.  Now it
91   does just --include '/', which should include everything.
92   Reported by denon.
93
94 * Add hostError to DumpPostUserCmd variable substitutions for both dump
95   and restore.
96
97 * Verbose output in Lib.pm goes to STDERR, not STDOUT.  This now
98   makes BackupPC_dump -v work better.
99
100 * Don't allow browsing with ".." in directory in case a user tries
101   to trick BackupPC_Admin into displaying directories outside where
102   they are allowed.
103
104 * Required File::RsyncP version is now 0.44, since File::RsyncP 0.44
105   fixes large file (>2GB) bugs.  Large file bugs reported by Steve
106   Waltner.
107
108
109 #------------------------------------------------------------------------
110 # Version 2.0.0, 14 Jun 2003
111 #------------------------------------------------------------------------
112
113 * Minor tweaks to disable utf8 on utf8-capable machines (eg: RH8+).
114   Added "no utf8" to all programs, and added binmode() to relevant
115   file handles.
116
117 #------------------------------------------------------------------------
118 # Version 2.0.0beta3, 1 Jun 2003
119 #------------------------------------------------------------------------
120
121 * Several improvements to restore: cancel now reports the correct
122   message and cleans up correctly.
123
124 * Rsync with whitespace and wildcard excludes fixed by replacing
125   argList with argList+ in config.pl plus a fix to Lib.pm for
126   shell escaping array arguments.
127
128 * Fixed rsync restore for character and block special devices
129   (major and minor device numbers weren't correctly restored).
130
131 * Fixed typo in bin/BackupPC_restore (XferLOG -> RestoreLOG).
132
133 * (Re)-fixed "Bad command" in log file when restore via tar or zip
134   file download is done.
135
136 * Added untaint to exec in Lib.pm to avoid tainted errors.
137
138 * Applied additional tweak to hilight patch from Tim Demarest.
139
140 * $Conf{CgiAdminUsers} = '*' now allows privileged even with REMOTE_USER
141   not set.
142
143 * Don't display RsyncdPasswd when displaying config.pl files.
144
145 * Replace pipe with socketpair in bin/BackupPC_dump and bin/BackupPC_restore,
146   which increases typical buffering from 4K to 16K-64K.  This improves the
147   performance.
148
149 * Add check on $ENV{LANG} setting do configure.pl: if LANG includes utf
150   then a warning is printed.
151
152 #------------------------------------------------------------------------
153 # Version 2.0.0beta2, 11 May 2003
154 #------------------------------------------------------------------------
155
156 * Added German translation, provided by Manfred Herrmann.
157
158 * Fixed large-file problem with rsync, reported by Manfred Herrmann.
159
160 * Fixed zip and tar file download from CGI under mod_perl.  Reported
161   by Pierre Bourgin and Paul Lukins.
162
163 * Fixed directory browsing and top-level directory browsing in 2.0.0beta0.
164   Reported by several users.
165
166 * Added -v option to BackupPC_dump for verbose output (useful when
167   you run the command manually).  Added messages for all exits.
168
169 * If nmblookup returns multiple IP addresses, NetBiosHostIPFind()
170   now returns the first IP address that matches the subnet mask.
171   Suggested by Tim Demarest.
172
173 * Fixed BackupPC::View so the top-level directory is handled correctly.
174   This allows the top-level share/directory to be restored via the
175   CGI interface.  Reported by several users.
176
177 * Fixed RsyncFileIO failures on certain large files by replacing seek()
178   with sysseek().  Reported by Manfred Herrmann.
179
180 * Added configurable highlighting of PC status in the CGI summary
181   screen; submitted by Tim Demarest.
182
183 * Fixed command queue CGI display; submitted by Tim Demarest.
184
185 * BackupPC_trashClean now logs an error if it can't remove all the
186   trash and then goes back to sleep, rather than continually trying.
187
188 * Moved correct user (uid) check into BackupPC::Lib so that all
189   applications do a user check if $Cong{BackupPCUserVerify} is
190   set.  The avoids the risk of manually running BackupPC_dump as
191   the wrong user.
192
193 * Loss of blackout now applies to "host not found" as well as no ping.
194   Reported by Dale Renton.
195
196 * "Host not found" is now treated in a similar manner to "no ping".
197
198 * Added suse-linux init.d script from Leon Letto.
199
200 * Added Gentoo linux init.d script from Tim Demarest.
201
202 * Applied additional i18n strings from GFK and the translation team.
203
204 * Fixed option parsing so that getopts errors are reported and we exit.
205
206 * Changed reporting of Xfer PIDs so that rsync cancel works correctly.
207
208 #------------------------------------------------------------------------
209 # Version 2.0.0beta1, 30 Mar 2003
210 #------------------------------------------------------------------------
211
212 * Added Spanish translation es.pm from Javier Gonzalez.
213
214 * Fixed CGI browse navigation bug that causes BackupPC_Admin to wedge
215   when directories were selected in a certain order.
216
217 * Fixed BackupPC::PoolWrite so that it can recover when the initial
218   file size is wrong.  This is needed since rsync could write a file
219   whose size is different from the initial size returned in the
220   file list when that file is updated while rsync is running.
221
222 * Added binmode(STDIN) to BackupPC_tarExtract, suggested by Pat LoPresti
223   to fix a problem a RedHat8 with perl 5.8.0.  It's unclear why this
224   helps, but it should be benign.  See:
225     http://sourceforge.net/mailarchive/forum.php?thread_id=1853018&forum_id=503
226
227 #------------------------------------------------------------------------
228 # Version 2.0.0beta0, 23 Feb 2003
229 #------------------------------------------------------------------------
230
231 * Support for rsync and rsyncd backup and restore.  Changes to
232   BackupPC_dump, BackupPC_restore, and new modules BackupPC::Xfer::Rsync
233   and BackupPC::Xfer::RsyncFileIO.
234
235 * Added internationalization (i18n) code from Xavier Nicollet,
236   with additions from Guillaume Filion.  Voila!  BackupPC_Admin
237   now supports English and French, and adding more languages is
238   now easy.  New config paramater $Conf{Language} sets the language.
239
240 * Added optional user-defined pre/post dump/restore commands, allowing
241   things like database shutdown/startup for dumps.
242
243 * Changed the way hosts are found.
244
245 * Added $Conf{ClientNameAlias}, which allows the name of the physical
246   client machine to be set.  This allows several different backup
247   "hosts" to all refer to the same physical machine, which is
248   convenient if several different types of data need to be backed
249   up, or if different parameters are needed for different parts of
250   the host.
251
252 * Replaced $Conf{PingArgs} with $Conf{PingCmd}, added $Conf{DfCmd},
253   $Conf{NmbLookupCmd} allowing all these commands to be fully
254   configured.  Also, all commands can also now be fragments of
255   perl code.
256
257 * Moved all smbclient commands into the config.pl file so the specific
258   arguments can be customized.  New config parameters are
259   $Conf{SmbClientFullCmd}, $Conf{SmbClientIncrCmd} and
260   $Conf{SmbClientRestoreCmd}.
261
262 * Added new BackupPC::View module that creates views of backups
263   (handling merging etc).  Updated BackupPC_Admin, BackupPC_zipCreate
264   and BackupPC_tarCreate to use BackupPC::View.  This removes lots
265   of merging and mangling code from the higher-level code.
266
267 * Added code from Toby Johnson that allows additional users to be
268   specified in the hosts file; these users can also view/start/stop
269   and restore backups for that host.  Also added a new config
270   setting $Conf{CgiNavBarAdminAllHosts} that allows all hosts to
271   be listed in the left nav bar for admins.
272
273 * Added $Conf{HardLinkMax} (default 31999) which sets the limit on
274   the maximum number of hardlinks per file in the pool.  If a file
275   ever gets to this number of links a new pool file is created to
276   handle additional links.
277
278 * Added $Conf{PerlModuleLoad}, which allows optional additional perl
279   modules to be loaded.
280
281 * Added $Conf{EMailUserDestDomain} and other EMail config settings to
282   allow language-specific default messages to be overridden.
283
284 * Added BPC_FTYPE_DELETED to lib/BackupPC/Attrib.pm, allowing deleted
285   files to be represented in the attrib file correctly.
286
287 * Added support for environment variable BPC_SMB_PASSWD, which is the
288   client's smb password.  This overrides the old environment variable
289   PASSWD.
290
291 * Added taint cleanup for perl5.8 to lib/BackupPC/Lib.pm.
292
293 * Changed $tar_unpack_header format in BackupPC_tarExtract to correctly
294   handle files with trailing spaces.
295
296 * Added catching of SIG_PIPE to BackupPC_dump, and changed catch_signal
297   to ignore multiple signals of the same type.
298
299 * Added reporting of the largest number of hardlinks in the pool to the
300   log file.
301
302 * Adding reporting of syntax errors in the per-PC config.pl file.
303
304 * Updated BackupPC_sendEmail to handle language-specific email messages.
305
306 * Allow client (host) names to contain spaces.  Spaces in host names
307   need to be escaped via "\" in the hosts file.  The user of spaces in
308   host names is discouraged, but they should work.  One feature that
309   doesn't work with host names that contain spaces is the highlighting
310   of that name in the log file display in the CGI interface.  There are
311   no plans to fix this.
312
313 * Renamed $Conf{SmbClientTimeout} to $Conf{ClientTimeout}.
314
315 * Fixed all open() calls to use 3 argument form to fix handling of file
316   names with trailing whitespace.  Also fixed CGI interface so these
317   file names are displayed correctly.
318
319 * Fixed new 2.0.0 CGI navigation bug that causes the top-level directory
320   to have a URL "&share=//boot&dir=" instead of "&share=/boot&dir=/".
321   Reported by Pascal Schelcher.  Fixed similar problem reported by
322   Doug Lytle.
323
324 * Added "PerlTaintCheck On" to the mod_perl section in the docs,
325   suggested by Tim Demarest.
326
327 #------------------------------------------------------------------------
328 # Version 1.5.0, 2 Aug 2002
329 #------------------------------------------------------------------------
330
331 * Changed conf/config.pl so that $Conf{TarIncrArgs} uses the --newer
332   option instead of --newer-mtime.  Also removed --atime-preserve from
333   $Conf{TarClientCmd}.  This makes the default settings work better
334   with tripwire.
335
336 * Fixed configure.pl so it correctly detects a running BackupPC <= v1.4.0
337   so it can correctly warn the user to stop it before upgrading.  Reported
338   by David Holland.
339
340 * Added missing ";" to entity escape in EscapeHTML in BackupPC_Admin.
341   Reported by Guillaume Filion.
342
343 * Added LDAP setup to documentation from David Holland.
344
345 * Tar.pm now adds a "." to file paths that start with "/", so that all
346   tar paths are relative.  From Ludovic Drolez.
347
348 #------------------------------------------------------------------------
349 # Version 1.5.0beta0, 30 Jun 2002
350 #------------------------------------------------------------------------
351
352 * A full set of restore options is now supported, including direct
353   restore via smbclient or tar or downloading a zip or tar file.
354
355 * Major additions to CGI script to support better directory navigation,
356   restore features and mod_perl.  Also, file downloads from the CGI
357   interface now correctly preserve the file name and provide the
358   correct Content-Type for the most common types of files.  Improved
359   directory navigation was contributed by Ryan Kucera.
360
361 * New script BackupPC_zipCreate (contributed by Guillaume Filion) is the
362   zip analog of BackupPC_tarCreate.  BackupPC_zipCreate can be used to
363   create a zip archive of any portion of a backup.
364
365 * Substantial additions to BackupPC_tarCreate to support restore,
366   including modifying path names, handling hardlinks, fixing
367   support of old backups without attributes (pre-v1.4.0).  Plus
368   BackupPC_tarCreate is now an offical part of the release.
369   (Lack of support for hardlinks was reported by John Stanley.)
370
371 * BackupPC_tarExtract now supports hardlinks and fixed pooling of
372   attribute files.
373
374 * A unix domain socket is now used for communication between the CGI
375   interface and BackupPC.  The original TCP socket is optional.  Sockets
376   are correctly re-initialized if config.pl is updated with new socket
377   settings.
378
379 * For improved security messages over the unix or TCP socket are protected
380   via an MD5 digest based on a shared secret, a sequence number, a time
381   stamp and a unique per-connection number.
382
383 * Additions to configure.pl to support install of directory navigation
384   images.
385
386 * Fixed case where $Conf{BackupFilesOnly} or $Conf{BackupFilesExclude}
387   were set to a single string or list (in v1.4.0 only the case of
388   hash worked correctly).  Reported by Phillip Bertolus.
389
390 * Fixed case of $Conf{BackoutGoodCnt} == 0.  This setting now makes the
391   client always subject to blackout, matching the comments in config.pl.
392   Also fixed handling of $Conf{BackoutGoodCnt} < 0 in the CGI script
393   reported by Pascal Schelcher.
394
395 * Fixed byte and file totals for tar backups, reported by several users.
396
397 * Fixed --newer-mtime date/timestamp format to make it ISO 8601 compliant,
398   suggested by Erminio Baranzini.
399
400 * Fixed handling of $Conf{BackupFilesOnly} in BackupPC::Xfer::Tar.pm, as
401   well as shell escaping of tar arguments.
402
403 * Fixed entity encoding of 8-bit characters in the CGI interface.
404
405 * Added optional CGI headers in $Conf{CgiHeaders} that by default
406   is set to a no-cache pragma.  Suggested by Benno Zuure.
407
408 #------------------------------------------------------------------------
409 # Version 1.4.0, 16 Mar 2002
410 #------------------------------------------------------------------------
411
412 * BackupPC now supports tar (in addition to smb) for extracting host    
413   data.  This is the most convenient option for linux/unix hosts.
414   Tar can be configured to run over ssh, rsh or to backup a local
415   nfs mount from the host.
416
417 * Support for special files, including symbolic links, fifo, character
418   and block device files has been added, so that all native linux/unix
419   file types can be correctly backed up when using tar transport.
420   Special files are all stored as regular files and the type attributes
421   are used to remember the original file type.
422
423 * All unix file attributes are now saved (and pooled when possible).
424   This includes user and group ownership, permissions, and modification
425   time.  Smbclient also does a reasonable job of emulating unix 
426   permissions (such as mtime), and these attributes get saved too.
427
428 * The new default is to not fill incremental dumps.  configure.pl
429   automatically sets $Conf{IncrFill} to 0.  The default was 1
430   (incrementals were filled with hardlinks).  Since the CGI
431   script does filling at browsing time, there is no need to
432   fill incremental dumps.
433
434 * Backup file names are now stored in "mangled" form. Each node of a
435   path is preceded by "f", and special characters (\n, \r, % and /) are
436   URI-encoded as "%xx", where xx is the ascii character's hex value. So
437   c:/craig/example.txt is now stored as fc/fcraig/fexample.txt. This
438   was done mainly so meta-data could be stored alongside the backup
439   files without name collisions.  In particular, the attributes for the
440   files in a directory are stored in a file called "attrib", and
441   mangling avoids file name collisions (I discarded the idea of having
442   a duplicate directory tree for every backup just to store the
443   attributes). Other meta-data (eg: rsync checksums) could be stored in
444   file names preceded by, eg, "c".  There are two other benefits to
445   mangling: the share name might contain "/" (eg: "/home/craig" for tar
446   transport), and I wanted that represented as a single level in the
447   storage tree.  Secondly, as files are written to NewFileList for later
448   processing by BackupPC_link, embedded newlines in the file's path
449   will cause problems which are avoided by mangling.
450
451   The CGI script undoes the mangling, so it is invisibe to the user.
452   Of course, old (unmangled) backups are still supported by the CGI
453   interface.
454
455 * Various changes to the CGI interface, BackupPC_Admin:
456
457   + Added button that allows users to manually start a full dump in
458     addition to the existing incremental dump.
459
460   + Added display of file attributes when browsing backups.
461
462   + Added an optional holdoff time specified by the user when canceling
463     a backup. BackupPC will not attempt any new backups for at least the
464     specified time. This holdoff time can be changed whether or not a
465     backup is running.
466
467   + Added supports for file mangling, and correct merging of unfilled
468     backups from mangled or unmangled (and compressed or uncompressed)
469     fulls when browsing or restoring.
470
471   + Only displays a "Start Incr Backup" button if there are already some
472     backups.
473
474   + For DHCP hosts, when a user tries to manually start a backup, add
475     a check for the netbios name of both the host the request came
476     from (REMOTE_ADDR) and the last known DHCP address for that host
477     to see if either address matches the host. If not, an error
478     message is display. The previous behavior was that only requests
479     from the client itself succeeded, and requests from other machines
480     quietly failed.
481
482 * Changed the version numbering to X.Y.Z, instead of X.0Y. This release
483   is 1.4.0. The first digit is for major new releases, the middle digit
484   is for significant feature releases and improvements, and the last
485   digit is for bug fixes. You should think of the old 1.00, 1.01, 1.02
486   and 1.03 as 1.0.0, ..., 1.3.0.
487
488 * BackupPC and the CGI script BackupPC_Admin now check that the effective
489   user id is correct to avoid accidentally launching BackupPC as the
490   wrong user or detecting CGI configuration problems.  This behavior
491   can be turned off using the $Conf{BackupPCUserVerify} option.
492
493 * In numerous places changed "Smb" to "Xfer" (eg: log file names) to
494   support generic names for both smb and tar transport methods.  The
495   CGI script checks for old names for backward compatibility.
496
497 * Major changed to Backup_dump to support new tar transport.  All transport
498   specific code moved into BackupPC::Xfer::Smb and BackupPC::Xfer::Tar
499   objects.
500
501 * Added workaround for a bug in Samba's smbclient for files between 2GB
502   and 4GB.  The file size in the tar header is incorrect.  This allows
503   files up to 4GB to work with smbclient, rather than 2GB.  To support
504   files larger than 2GB you must make sure perl is compiled with the
505   uselargefiles option (use "perl -V | egrep largefiles" to check) and
506   the pool directory must be on a file system that supports large files.
507
508 * Moved the pool writing code into a module BackupPC::PoolWrite.  This
509   allows the clever file pool checking (digest, uncompressing, comparing
510   etc with minimum disk IO) to be used easily in multiple places (eg: it
511   is now used for writing attribute files so they can be pooled).
512
513 * Changed MD5 to Digest::MD5 to avoid use of the depreceated MD5 module.
514
515 * Shortened default $Conf{MyPath} so that perl's taint mode is more likely
516   to be happy.  The old $Conf{MyPath} contained /usr/local/bin, which
517   on one user's machine was world writable and perl -T correctly
518   complained about it.
519
520 * Fixed ping command options in Lib.pm so that it works on OpenBSD.
521   Thanks to Kyle Amon for sending the fix.  Decided to move the
522   ping options from Lib.pm into config.pl (as $Conf{PingArgs}) and
523   now configure.pl tries to come up with a sensible default based on
524   the OS.
525
526 * Fixed argument checking in BackupPC_tarExtract to allow '$' in the
527   share name (eg: C$).  Thanks to Jules Agee for this fix.  Also
528   changed the default config.pl so that single quotes are used
529   everywhere so that people don't get tripped up putting '$' inside
530   double-quoted strings.
531
532 #------------------------------------------------------------------------
533 # Version 1.03, 9 Dec 2001
534 #------------------------------------------------------------------------
535
536 * BackupPC now has full support for compression.  There are now two
537   pool areas, the original pool for uncompressed files, and cpool for
538   compressed files. The compression is done by Compress::Zlib.
539   Compression reduces the pool disk usage by around 40%, although your
540   mileage may vary.  Compression is optional and can also be specified on
541   a per-PC basis (although this will cost more pool storage since many
542   backup files will have to be stored in both compressed and
543   uncompressed forms.
544
545 * A new script, BackupPC_compressPool, can be run to compress the entire
546   pool.  This is used once to migrate all the pool data from uncompressed
547   to compressed on existing installations.  Read the documentation
548   (Installing BackupPC/Compressing an existing pool) before running
549   BackupPC_compressPool!
550
551   Alternatively, compression can simply be turned on and all new backups
552   will be compressed. Both old (uncompressed) and new (compressed)
553   backups can be browsed and viewed. Eventually, the old backups will
554   expire and all the pool data will be compressed.  However, until the
555   old backups expire, this approach could require 60% or more additional
556   pool storage space to store both uncompressed and compressed versions
557   of the backup files.
558
559 * Significant improvements to the cgi interface, BackupPC_Admin:
560
561     - much better layout navigation
562     - handles compressed backup files and compressed log files
563     - handles unfilled incremental dumps
564     - better backup directory browsing navigation
565     - reports compression statistics
566     - $Conf{CgiDateFormatMMDD} allows you to set date format (MM/DD or DD/MM)
567     - Additional customization with $Conf{CgiHeaderFontType},
568       $Conf{CgiHeaderFontSize}, $Conf{CgiNavBarBgColor}, and
569       $Conf{CgiHeaderBgColor}.
570
571 * Eliminated BackupPC_queueAll.  BackupPC directly reads the hosts
572   file and queues the PCs itself.  Like config.pl, BackupPC will
573   re-read the hosts file on each wakeup if its modification time
574   changes, or upon a SIGHUP.  This also makes for better behavior
575   when adding a host: if you add hosts, simply send a SIGHUP to
576   BackupPC or wait for the next wakeup.
577
578 * BackupPC_dump now compresses the SmbLOG file if compression is enabled.
579
580 * BackupPC_dump keeps track of compressed file sizes so that compression
581   statistics can be reported by the cgi interface.
582
583 * Aging of old log files now handles compressed log files (.z extension).
584
585 * Added configuration option $Conf{IncrFill} to specify whether
586   incremental dumps should be filled in.  Old behavior was that
587   filling was on.  Now it's optional.  See config.pl for more
588   details.
589
590 * BackupPC_nightly now cleans and generates statistics for both
591   the uncompressed pool and compressed pool (cpool).
592
593 * Added new utility script BackupPC_zcat that can be used to
594   uncompresses BackupPC files.
595
596 * configure.pl offers various options related to compression,
597   depending upon whether this is a new install or upgrade,
598   and whether or not Compress::Zlib is installed.
599
600 * configure.pl now makes a backup copy of config.pl before
601   config.pl is updated.
602
603 * added three new fields to the backups file to handle optional
604   filling and compression stats.
605
606 * Added -e option to BackupPC_dump.  BackupPC now invokes BackupPC_dump -e
607   on each dhcp host once each night to verify that very old backups are
608   expired.  This ensures that very old backups are expired even if
609   the dhcp host has not been on the network for a long time.
610
611 * fixed bug in BackupPC::FileZIO.pm that required Compress::Zlib,
612   even if compression was off.  Thanks to Steve Holmes for reporting
613   this.
614
615 * fixed bug that caused a BackupPC queue to get blocked when a backup
616   cancel attempt was made during the BackupPC_link phase.
617
618 #------------------------------------------------------------------------
619 # Version 1.02, 28 Oct 2001.
620 #------------------------------------------------------------------------
621
622 * Added new script BackupPC_tarExtract to extract the smbclient tar
623   archive. This reduces disk writes by perhaps 90-95% and disk reads by
624   50%. Previously, tar was used to extract and write everything to disk.
625   Then BackupPC_dump would read enough of each file to compute the MD5
626   digest, and then compare the full file with candidate pool files.  So
627   for each 1MB file that matches a single file in the pool, there would
628   be 1MB of disk writes and 2MB of disk reads (to compare two 1MB files).
629
630   BackupPC_tarExtract instead extracts the archive using a 1MB memory
631   buffer.  This allows the MD5 digest to be computed without touching the
632   disk.  Next, any potential pool file compares are done by comparing the
633   pool file against the incoming tar data in memory, which only requires
634   the pool file to be read.  So for each 1MB file that matches a single
635   file in the pool, there are now no disk writes, and only 1MB of reads.
636   BackupPC_tarExtract handles arbitrary size files and repeated
637   potential pool matches.  If the incoming file doesn't match the pool
638   then it is written to disk (once the pool is mature this happens maybe
639   5-10% of the time).
640
641 * Substantial changes to BackupPC_dump:
642
643     + BackupPC_tarExtract is now used in place of tar.
644
645     + BackupPC_dump now reads the output from both smbclient and
646       BackupPC_tarExtract and merges them into SmbLOG.
647
648     + Named pipes are no longer used to connect smbclient to tar
649       (now BackupPC_tarExtract).  Regular pipes are used instead.
650       This avoids the need to system mknod or mkfifo.
651
652     + Locked files on the client that can't be read by smbclient
653       previously were filled with 0x0 bytes by smbclient, meaning
654       tar extracted a useless file filled with 0x0 bytes.  Now,
655       BackupPC_dump watches the output of smbclient and removes
656       any files that smbclient couldn't read.  This avoids storing
657       useless files.  It tries to replace such files with a hard link
658       to a previous dump.  These actions appear in the log file.
659
660 * added new module lib/BackupPC/FileZIO.pm. This handles pool file
661   I/O and is used by BackupPC_tarExtract.  BackupPC::FileIO supports
662   reading and writing compressed and regular files and provides all the
663   hooks for compression support in BackupPC (should be supported in next
664   version). BackupPC::FileIO also does efficient writing of files that
665   contain leading 0x0 bytes (by seeking past the 0x0 bytes). This is
666   helpful when smbclient reads a locked file, and it fills the tar
667   output with a file of the correct size but all 0x0.  Such files will be
668   later removed by BackupPC_dump.  But in the meantime, BackupPC::FileIO
669   writes such files efficiently (as sparse files), meaning just a few
670   blocks of disk space will be needed even if the file is large.
671
672 * alive/dead counting for blackout now works correctly for DHCP hosts.
673
674 * BackupPC resets activeJob on startup, to fix bug when BackupPC was
675   killed and restarted with backups running.
676
677 * added extra non blocking select() in BackupPC to make sure the socket
678   reads don't block.
679
680 * BackupPC avoids queuing multiple BackupPC_queueAll's on the CmdQueue.
681
682 * Updated BackupPC_sendEmail to correctly parse the locked file
683   error from 2.2.1a smbclient, so that missing Outlook file emails
684   can be correctly sent.
685
686 * Changed HostInfoRead() in lib/BackupPC/Lib.pm to lowercase the
687   hostname read from the hosts file.
688
689 * BackupPC_Admin provides general summary when the host name is empty.
690
691 * configure.pl (and BackupPC) now requires perl 5.6.0 or later.
692
693 * configure.pl complains if BackupPC is already running, reminding you
694   to stop it before upgrading.
695
696 * updated documentation, and fixed auto-insertion of config.pl into
697   BackupPC.pod (previously the last config parameter was left out of
698   BackupPC.pod).
699
700 #------------------------------------------------------------------------
701 # Version 1.01, 30 Sep 2001
702 #------------------------------------------------------------------------
703
704 * Documentation cleanup in README, doc/BackupPC.pod, conf/config.pl.
705
706 * BackupPC_sendMail now reads the optional per-PC config file, allowing
707   email configuration parameters to be set on a per-PC basis.
708
709 * Removed the unused 4096-length MD5 digest code in lib/BackupPC/Lib.pm.
710
711 #------------------------------------------------------------------------
712 # Version 1.00, 21 Sep 2001
713 #------------------------------------------------------------------------
714
715 * Initial release of BackupPC on sourceforge.net.