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