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