a296a1c70f565b451c1c2994d3299856da7d4046
[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 fix to lib/BackupPC/Lang/nl.pm from Lieven Bridts.
25
26 * Added patch from Tony Nelson to remove $Info{pid} before BackupPC
27   writes the status and shuts down.
28
29 * Changed BackupPC_nightly so that it doesn't call find() if the
30   directory doesn't exist.  This avoids errors in certain versions
31   of perl.  Reported by Bernd Rilling.
32
33 * Fixed BackupPC::CGI::Lib to correctly re-load config.pl for mod_perl.
34   Reported by Tony Nelson and Jimmy Liang.
35
36 * Explicitly untaint $In{host} in BackupPC::CGI::Lib to fix problem
37   reported by Thomas Tempé.
38
39 * Added newline to "...skipping because of user requested delay..."
40   log message in BackupPC_dump.  Reported by Wayne Scott.
41
42 * Added read file size error checking to BackupPC_tarCreate.
43   Reported by Brandon Evans.
44
45 * Added check in BackupPC::Xfer::RsyncFileIO to ensure that when
46   compression is toggled on/off, a compressed backup doesn't link
47   to an uncompressed pool file (and an uncompressed backup doesn't
48   link to a compressed pool file).  Reported by Brandon Evans.
49
50 * Updated documentation with new dirvish URL and a typo from
51   Todd Curry.
52
53 * Fix to BackupPC_sendEmail so that it correctly sends admin emails
54   for hosts that have failed backups.  Reported by Simon Kuhn.
55
56 #------------------------------------------------------------------------
57 # Version 2.1.0, 20 Jun 2004
58 #------------------------------------------------------------------------
59
60 * Added Dutch translation from Lieven Bridts, with tweaks from
61   Guus Houtzager.
62
63 * Added PC-specific config file read in CGI/Archive.pm.  Patch
64   from Pete Wenzel.
65
66 * Added non-zero exit code to BackupPC_zcat when uncompress fails.
67   Patch from Pete Wenzel.
68
69 * Cosmetic changes to PC Summary and Log file language strings from
70   Pete Wenzel.
71
72 * BackupPC::Lib tries to be more careful when renaming the backups
73   file to backups.old.  There have been reports of backups being
74   empty, perhaps when the BackupPC data file system fills up.
75   Now backups is not renamed to backups.old if backups is empty.
76
77 * BackupPC now closes stderr and stdout before renaming and
78   re-opening the log file.
79
80 * Pre/post backup/restore/archive commands now correctly set
81   "type" to either incr/full/restore/archive, and now cmdType
82   is the type of Pre/post backup/restore/archive command.
83
84 * BackupPC_archive correctly terminates archive processes on
85   alarm or cancel.
86
87 * Updates to BackupPC_stnd.css with absolute font sizes instead
88   of relative.
89
90 * BackupPC_dump now makes sure that the $Conf{FullAgeMax} check
91   also ensures the full backup is older than the maximum age
92   expected from $Conf{FullPeriod}.
93
94 #------------------------------------------------------------------------
95 # Version 2.1.0beta2pl1, 30 May 2004
96 #------------------------------------------------------------------------
97
98 * Fixed bug in rsync checksum caching code in BackupPC::Xfer::RsyncDigest.
99
100 * BackupPC_zipCreate now ensures the earliest mtime is 1/1/1980,
101   since zip file formats don't support earlier dates.  Reported
102   by Dan Niles.
103
104 * CGI restore via zip and tar now makes sure stderr is ignored
105   when BackupPC_tarCreate and BackupPC_zipCreate are run.
106   Previously any stderr output would get mixed in the archive,
107   corrupting it.  Reported by Dan Niles.
108
109 #------------------------------------------------------------------------
110 # Version 2.1.0beta2, 23 May 2004
111 #------------------------------------------------------------------------
112
113 * $Conf{BackupFilesOnly} and $Conf{BackupFilesExclude} now apply
114   to every share, rather than just the first, in the case where
115   they are arrays and there are multiple shares.  Suggested
116   by Andy Evans.
117
118 * On the phase 2 retry pass with rsync, verify the cached checksums
119   if checksum caching is turned on.  This will catch the case of
120   cached checksums being incorrectly appended to the compressed
121   pool file.  Added new config parameter $Conf{RsyncCsumCacheVerifyProb}
122   so that cached checksums are verified with a selectable probability.
123   Also, increased File::RsyncP version number to 0.51.
124
125 * configure.pl now supports an optional batch mode.  Command-line
126   options are used to specify all the information that configure.pl
127   needs.  This is useful for building auto-install packages.
128   Also, configure.pl now includes pod documentation, so you can do
129   "perldoc configure.pl" to see all the command-line options.
130   Suggested, tested and tweaked by Stuart Herbert for possible
131   Gentoo inclusion.
132
133 * At each wakeup, clients are now queued based on how old the most
134   recent backup is.  Clients with errors are queued first, with
135   the oldest error times going first.  The rest of the clients are
136   queued next, with the clients with the oldest backup going first.
137   Previously the clients were simply queued in alphabetic order.
138   Suggested by Mike Trisko and Tony Nelson.
139
140 * Added config parameter $Conf{PartialAgeMax} that controls whether
141   partials are saved at all, and if so, whether the partial will be
142   ignored at the next full backup if it is too old.
143
144 * BackupPC_tarExtract now allows empty archives without reporting
145   an error.  Reported by Don Silvia.
146
147 * Removed Browse Backups link from Nav Bar in Archive Info display.
148   Reported by Ralph Paßgang.
149
150 * Fixed documentation display for regular users.  Reported by Ralph Paßgang.
151
152 * Status and PC Summary now work for regular users and only show
153   that user's hosts.  Server general status information only appears
154   for admins.  Suggested by Ralph Paßgang.
155
156 * Moved the last three navigation-bar links (docs, FAQ and SF) to
157   a new config parameter $Conf{CgiNavBarLinks}.  This allows
158   these links to be locally configured.  Based on a patch
159   submitted by Ralph Paßgang.
160
161 * Allow the navigation bar search box to be disabled by
162   setting $Conf{CgiSearchBoxEnable} to 0.  Based on a patch
163   submitted by Ralph Paßgang.
164
165 * Updates to de.pm from Ralph Paßgang.
166
167 * Made the BackupPC icon a link to the SF BackupPC project page.
168
169 #------------------------------------------------------------------------
170 # Version 2.1.0beta1, 4 Apr 2004
171 #------------------------------------------------------------------------
172
173 * The CSS definition has been removed from the config.pl file and
174   is now a separate file, BackupPC_stnd.css.  A new config variable,
175   $Conf{CgiCSSFile}, gives the name of the CSS file to use.
176   Suggested by Ender Mathias.
177
178 * Fixed the filling of the host name select box for admins.
179   The default $Conf{CgiNavBarAdminAllHosts} is now 1.
180   Reported by Doug Lytle.
181
182 * Cleaned up warning message for restore using rsync when checksum
183   caching is on, but when file didn't have cached checksums.
184
185 * Fixed BackupPC_archiveHost to support par2 (par2cmdline).
186   Patch submitted by Jaco Bongers and adapted by Josh Marshall.
187
188 * Improved stat() usage in BackupPC_nightly, plus some other cleanup,
189   giving a significant performance improvement.  Patch submitted by
190   Wayne Scott.
191
192 * Allow several BackupPC_nightly processes to run in parallel based
193   on new $Conf{BackupPCNightlyJobs} setting.  This speeds up the
194   traversal of the pool, reducing the overall run time for
195   BackupPC_nightly.
196
197 * Allow BackupPC_nightly to split the pool traversal across several
198   nightly runs.  This improves the running time per night, at the expense
199   of a slight increase in disk storage as unused pool files might not
200   be deleted for a couple of days.  Controller by new config setting
201   $Conf{BackupPCNightlyPeriod}.
202
203 #------------------------------------------------------------------------
204 # Version 2.1.0beta0, 20 Mar 2004
205 #------------------------------------------------------------------------
206
207 * A failed full dump is now saved as a partial (incomplete) dump,
208   provided it includes some files.  This can be used for browsing,
209   restoring etc, and will also form the basis of resuming full
210   dumps.  Only one partial is kept, and it is removed as soon
211   as a successful full (or a new partial) is done.
212
213 * Added support for resuming a full dump for rsync.  The partial
214   full is kept, and to resume an incremental is done against the
215   partial, and a full is done for the rest.
216
217 * Added support for Rsync checksum caching.  Rsync checksum are
218   appended to the compressed pool files.  This means that block
219   and file checksums do not need to be recomputed on the server
220   when using rsync.  Requires a patch to rsync to support fixed
221   checksum seeds.  This patch is included in the cygwin-rsyncd
222   release on http://backuppc.sourceforge.net.
223
224 * Major addition of Archive feature from Josh Marshall.  Special
225   clients can be configured to be archive targets (eg: tape drives,
226   CD-R).  Any subset of the backup clients can be selected and tar
227   archives are created, optionally compressed and split and written
228   to the output device.  Logs are maintained and are browsable.
229
230 * Major changes from Ryan Kucera to add style sheets to the CGI
231   interface, allowing easy customization.  Added new icons and
232   BackupPC logo.  Numerous navigation improvements.
233
234 * Added directory history display to BackupPC_Admin, allowing the
235   user to quickly see which files changed between backups on a
236   per-directory basis.
237
238 * Added exponential expiry option for full dumps.  This allows you
239   to specify
240   
241    - how many fulls to keep at intervals of $Conf{FullPeriod}, followed by
242    - how many fulls to keep at intervals of 2 * $Conf{FullPeriod},
243    - how many fulls to keep at intervals of 4 * $Conf{FullPeriod},
244    - how many fulls to keep at intervals of 8 * $Conf{FullPeriod},
245    - how many fulls to keep at intervals of 16 * $Conf{FullPeriod},
246
247   and so on.  This allows you, for example, to keep 4 weekly fulls,
248   followed by 6 fulls every 4 weeks (approx 1 month) and 2 fulls at
249   16 weeks, for roughly 1 year of history.  This works by deleting
250   every other full as each expiry boundary is crossed.  Suggested
251   by David Cramblett.
252
253 * Added Italian language translation it.pm from Lorenzo Cappelletti.
254
255 * Major updates to language files for new features and tags changes.
256   Updated makeDist to do pedantic consistency checking of language
257   files.
258
259 * Addition of administration options from Paul Lukins.  Initial
260   page allows server to be started/stopped/reloaded.  This still
261   needs some i18n work.  Currently the server start/stop is
262   commented out.
263
264 * Split BackupPC_Admin into a set of modules, one for each major action.
265   Each action is now a seperate module in lib/BackupPC/CGI.
266
267 * Allow the blackout period begin/end to span midnight.  Adapted
268   from patch submitted by David Smith.
269
270 * Allow multiple blackout periods, with new config variable
271   $Conf{BlackoutPeriods} that replaces the old variables
272   $Conf{BlackoutHourBegin}, $Conf{BlackoutHourEnd}, and
273   $Conf{BlackoutWeekDays}.  Based on patch submitted by
274   Lorenzo Cappelletti.
275
276 * Disabled alarms after forks to avoid timeouts in children that
277   do not reset their alarm.  Prompted by ideas from James Leu.
278
279 * Added options for block size, buffer size and share wild-card to
280   BackupPC_tarCreate.  Also added negative backup number options
281   that are relative to the last (so -1 is the last), suggested by
282   William McKee and Carl Soderstrom.
283
284 * The "Wrong user" message in BackupPC::Lib now goes to stderr, so that
285   the user is more likely to see the error with BackupPC_tarCreate.
286   Reported by Paul Fox.
287
288 * Add creation of per-PC directory in BackupPC/CGI/Restore.pm in
289   case it doesn't already exist.
290
291 * Added -q -x to all ssh commands in conf/config.pl.  Suggested by
292   SI Reasoning and Niranjan Ghate.
293
294 * Changed restore code so that option #1 (direct restore) can be
295   disabled if the restore command is undefined.  Disabling direct
296   restore is necessary if the share is read-only.  Suggested by
297   Rich B from SAIC.
298
299 * Changed regexp in lib/BackupPC/Smb.pm to allow numbers with both
300   a decimal point or comma for international versions of Samba.
301   Patch submitted by Frank Gard.
302
303 * Browsing and directory history now sort the files in a
304   case-insensitive manner.
305
306 * Changed exec() syntax to allow executing commands whose path
307   contains spaces.
308
309 * BackupPC_dump no longer removes backups if $Conf{FullKeepCnt}
310   is zero or undefined.  The protects the existing backups in the
311   case of a bad config.pl file.  Suggested by Christian Warden.
312
313 * Swapped the Server and Hosts sections on the Nav bar.  Moved the
314   host search text box to the top of the hosts section.  This was
315   done to move the variable-length part of the Nav bar (when all
316   hosts are displayed) to the bottom.
317
318 * Fixed a bug in tar restore related to how the common prefix path is
319   removed.  Now ensure that the common path is at a directory boundary.
320   Reported by Patrick Neuner.
321
322 * Added --chuid ${USER} to init.d/src/gentoo-backuppc.  Suggested by
323   SI Reasoning, Pascal Pochol, Michael Evanoff and others.
324
325 * Added Suse notes to init.d/README from Bruno Vernay.
326
327 * Added Apache 2 documentation fix from Michael Tuzi.
328
329 #------------------------------------------------------------------------
330 # Version 2.0.2, 6 Oct 2003
331 #------------------------------------------------------------------------
332
333 * Fixed stupid last-minute change in octal size conversion in
334   Backup_tarExtract.
335
336 #-----------------------------------------------------------------------
337 # Version 2.0.1, 5 Oct 2003
338 #------------------------------------------------------------------------
339
340 * Fixed handling of >= 8GB files in BackupPC_tarExtract and >= 4GB
341   files in BackupPC_tarCreate.
342
343 * Removed smbclient size repair in BackupPC_tarExtract for files
344   between 2GB and 4GB.  This means that BackupPC_tarExtract 2.0.1
345   doesn't behave the same as 2.0.0 for file sizes between 2GB and 4GB
346   extacted using smbclient 2.2.x.  If you have problems backing up
347   files whose size is between 2GB and 4GB using smbclient 2.2.x
348   you should upgrade smbclient to 3.0, since it now generates
349   correct file sizes.
350
351 * Replace PingClientPath with PingPath in configure.pl.
352
353 * Removed -T (taint mode) on binaries installed in configure.pl.
354
355 * Added support for smbclient from samba version 3.0.0.
356
357 * Fixed $Conf{HardLinkMax} limit check in BackupPC::Lib; reported
358   by Ross Skaliotis.
359
360 * In BackupPC_Admin, default REMOTE_USER to $Conf{BackupPCUser}
361   if it is not defined.  This allows the CGI interface to work
362   when AdminUsers = '*'.  Reported by Quentin Arce.
363
364 * For SMB, code that detected files with a read-locked region (eg:
365   outlook .pst files), removed them and then tried to link with an
366   earlier version was broken.  This code missed a step of mangling
367   the file names.  This is now fixed.  Reported by Pierre Bourgin.
368
369 * A backup of a share that has zero files is now considered
370   fatal. This is used to catch miscellaneous Xfer errors that
371   result in no files being backed up.  A new config parameter
372   $Conf{BackupZeroFilesIsFatal} (defaults to 1) and can be set to
373   zero to turn off this check.  Suggested by Guillaume Filion.
374   Additional change: this check only applies to a full dump.
375
376 * SMB: now detect NT_STATUS_ACCESS_DENIED on entire share or BackupFilesOnly
377   (also ERRDOS - ERRnoaccess (Access denied.) for older versions of
378   smbclient.)  Suggested by Guillaume Filion.
379
380 * SMB: now detects "tree connect failed: NT_STATUS_BAD_NETWORK_NAME" and
381   the dump is considered failed.
382
383 * Rsync: Previously BackupFilesOnly = '/' did --include '/' --exclude '/*',
384   which just included the '/' directory and nothing below.  Now it
385   does just --include '/', which should include everything.
386   Reported by denon.
387
388 * Add hostError to DumpPostUserCmd variable substitutions for both dump
389   and restore.
390
391 * Verbose output in Lib.pm goes to STDERR, not STDOUT.  This now
392   makes BackupPC_dump -v work better.
393
394 * Don't allow browsing with ".." in directory in case a user tries
395   to trick BackupPC_Admin into displaying directories outside where
396   they are allowed.
397
398 * Required File::RsyncP version is now 0.44, since File::RsyncP 0.44
399   fixes large file (>2GB) bugs.  Large file bugs reported by Steve
400   Waltner.
401
402 #------------------------------------------------------------------------
403 # Version 2.0.0, 14 Jun 2003
404 #------------------------------------------------------------------------
405
406 * Minor tweaks to disable utf8 on utf8-capable machines (eg: RH8+).
407   Added "no utf8" to all programs, and added binmode() to relevant
408   file handles.
409
410 #------------------------------------------------------------------------
411 # Version 2.0.0beta3, 1 Jun 2003
412 #------------------------------------------------------------------------
413
414 * Several improvements to restore: cancel now reports the correct
415   message and cleans up correctly.
416
417 * Rsync with whitespace and wildcard excludes fixed by replacing
418   argList with argList+ in config.pl plus a fix to Lib.pm for
419   shell escaping array arguments.
420
421 * Fixed rsync restore for character and block special devices
422   (major and minor device numbers weren't correctly restored).
423
424 * Fixed typo in bin/BackupPC_restore (XferLOG -> RestoreLOG).
425
426 * (Re)-fixed "Bad command" in log file when restore via tar or zip
427   file download is done.
428
429 * Added untaint to exec in Lib.pm to avoid tainted errors.
430
431 * Applied additional tweak to hilight patch from Tim Demarest.
432
433 * $Conf{CgiAdminUsers} = '*' now allows privileged even with REMOTE_USER
434   not set.
435
436 * Don't display RsyncdPasswd when displaying config.pl files.
437
438 * Replace pipe with socketpair in bin/BackupPC_dump and bin/BackupPC_restore,
439   which increases typical buffering from 4K to 16K-64K.  This improves the
440   performance.
441
442 * Add check on $ENV{LANG} setting do configure.pl: if LANG includes utf
443   then a warning is printed.
444
445 #------------------------------------------------------------------------
446 # Version 2.0.0beta2, 11 May 2003
447 #------------------------------------------------------------------------
448
449 * Added German translation, provided by Manfred Herrmann.
450
451 * Fixed large-file problem with rsync, reported by Manfred Herrmann.
452
453 * Fixed zip and tar file download from CGI under mod_perl.  Reported
454   by Pierre Bourgin and Paul Lukins.
455
456 * Fixed directory browsing and top-level directory browsing in 2.0.0beta0.
457   Reported by several users.
458
459 * Added -v option to BackupPC_dump for verbose output (useful when
460   you run the command manually).  Added messages for all exits.
461
462 * If nmblookup returns multiple IP addresses, NetBiosHostIPFind()
463   now returns the first IP address that matches the subnet mask.
464   Suggested by Tim Demarest.
465
466 * Fixed BackupPC::View so the top-level directory is handled correctly.
467   This allows the top-level share/directory to be restored via the
468   CGI interface.  Reported by several users.
469
470 * Fixed RsyncFileIO failures on certain large files by replacing seek()
471   with sysseek().  Reported by Manfred Herrmann.
472
473 * Added configurable highlighting of PC status in the CGI summary
474   screen; submitted by Tim Demarest.
475
476 * Fixed command queue CGI display; submitted by Tim Demarest.
477
478 * BackupPC_trashClean now logs an error if it can't remove all the
479   trash and then goes back to sleep, rather than continually trying.
480
481 * Moved correct user (uid) check into BackupPC::Lib so that all
482   applications do a user check if $Cong{BackupPCUserVerify} is
483   set.  The avoids the risk of manually running BackupPC_dump as
484   the wrong user.
485
486 * Loss of blackout now applies to "host not found" as well as no ping.
487   Reported by Dale Renton.
488
489 * "Host not found" is now treated in a similar manner to "no ping".
490
491 * Added suse-linux init.d script from Leon Letto.
492
493 * Added Gentoo linux init.d script from Tim Demarest.
494
495 * Applied additional i18n strings from GFK and the translation team.
496
497 * Fixed option parsing so that getopts errors are reported and we exit.
498
499 * Changed reporting of Xfer PIDs so that rsync cancel works correctly.
500
501 #------------------------------------------------------------------------
502 # Version 2.0.0beta1, 30 Mar 2003
503 #------------------------------------------------------------------------
504
505 * Added Spanish translation es.pm from Javier Gonzalez.
506
507 * Fixed CGI browse navigation bug that causes BackupPC_Admin to wedge
508   when directories were selected in a certain order.
509
510 * Fixed BackupPC::PoolWrite so that it can recover when the initial
511   file size is wrong.  This is needed since rsync could write a file
512   whose size is different from the initial size returned in the
513   file list when that file is updated while rsync is running.
514
515 * Added binmode(STDIN) to BackupPC_tarExtract, suggested by Pat LoPresti
516   to fix a problem a RedHat8 with perl 5.8.0.  It's unclear why this
517   helps, but it should be benign.  See:
518     http://sourceforge.net/mailarchive/forum.php?thread_id=1853018&forum_id=503
519
520 #------------------------------------------------------------------------
521 # Version 2.0.0beta0, 23 Feb 2003
522 #------------------------------------------------------------------------
523
524 * Support for rsync and rsyncd backup and restore.  Changes to
525   BackupPC_dump, BackupPC_restore, and new modules BackupPC::Xfer::Rsync
526   and BackupPC::Xfer::RsyncFileIO.
527
528 * Added internationalization (i18n) code from Xavier Nicollet,
529   with additions from Guillaume Filion.  Voila!  BackupPC_Admin
530   now supports English and French, and adding more languages is
531   now easy.  New config paramater $Conf{Language} sets the language.
532
533 * Added optional user-defined pre/post dump/restore commands, allowing
534   things like database shutdown/startup for dumps.
535
536 * Changed the way hosts are found.
537
538 * Added $Conf{ClientNameAlias}, which allows the name of the physical
539   client machine to be set.  This allows several different backup
540   "hosts" to all refer to the same physical machine, which is
541   convenient if several different types of data need to be backed
542   up, or if different parameters are needed for different parts of
543   the host.
544
545 * Replaced $Conf{PingArgs} with $Conf{PingCmd}, added $Conf{DfCmd},
546   $Conf{NmbLookupCmd} allowing all these commands to be fully
547   configured.  Also, all commands can also now be fragments of
548   perl code.
549
550 * Moved all smbclient commands into the config.pl file so the specific
551   arguments can be customized.  New config parameters are
552   $Conf{SmbClientFullCmd}, $Conf{SmbClientIncrCmd} and
553   $Conf{SmbClientRestoreCmd}.
554
555 * Added new BackupPC::View module that creates views of backups
556   (handling merging etc).  Updated BackupPC_Admin, BackupPC_zipCreate
557   and BackupPC_tarCreate to use BackupPC::View.  This removes lots
558   of merging and mangling code from the higher-level code.
559
560 * Added code from Toby Johnson that allows additional users to be
561   specified in the hosts file; these users can also view/start/stop
562   and restore backups for that host.  Also added a new config
563   setting $Conf{CgiNavBarAdminAllHosts} that allows all hosts to
564   be listed in the left nav bar for admins.
565
566 * Added $Conf{HardLinkMax} (default 31999) which sets the limit on
567   the maximum number of hardlinks per file in the pool.  If a file
568   ever gets to this number of links a new pool file is created to
569   handle additional links.
570
571 * Added $Conf{PerlModuleLoad}, which allows optional additional perl
572   modules to be loaded.
573
574 * Added $Conf{EMailUserDestDomain} and other EMail config settings to
575   allow language-specific default messages to be overridden.
576
577 * Added BPC_FTYPE_DELETED to lib/BackupPC/Attrib.pm, allowing deleted
578   files to be represented in the attrib file correctly.
579
580 * Added support for environment variable BPC_SMB_PASSWD, which is the
581   client's smb password.  This overrides the old environment variable
582   PASSWD.
583
584 * Added taint cleanup for perl5.8 to lib/BackupPC/Lib.pm.
585
586 * Changed $tar_unpack_header format in BackupPC_tarExtract to correctly
587   handle files with trailing spaces.
588
589 * Added catching of SIG_PIPE to BackupPC_dump, and changed catch_signal
590   to ignore multiple signals of the same type.
591
592 * Added reporting of the largest number of hardlinks in the pool to the
593   log file.
594
595 * Adding reporting of syntax errors in the per-PC config.pl file.
596
597 * Updated BackupPC_sendEmail to handle language-specific email messages.
598
599 * Allow client (host) names to contain spaces.  Spaces in host names
600   need to be escaped via "\" in the hosts file.  The user of spaces in
601   host names is discouraged, but they should work.  One feature that
602   doesn't work with host names that contain spaces is the highlighting
603   of that name in the log file display in the CGI interface.  There are
604   no plans to fix this.
605
606 * Renamed $Conf{SmbClientTimeout} to $Conf{ClientTimeout}.
607
608 * Fixed all open() calls to use 3 argument form to fix handling of file
609   names with trailing whitespace.  Also fixed CGI interface so these
610   file names are displayed correctly.
611
612 * Fixed new 2.0.0 CGI navigation bug that causes the top-level directory
613   to have a URL "&share=//boot&dir=" instead of "&share=/boot&dir=/".
614   Reported by Pascal Schelcher.  Fixed similar problem reported by
615   Doug Lytle.
616
617 * Added "PerlTaintCheck On" to the mod_perl section in the docs,
618   suggested by Tim Demarest.
619
620 #------------------------------------------------------------------------
621 # Version 1.5.0, 2 Aug 2002
622 #------------------------------------------------------------------------
623
624 * Changed conf/config.pl so that $Conf{TarIncrArgs} uses the --newer
625   option instead of --newer-mtime.  Also removed --atime-preserve from
626   $Conf{TarClientCmd}.  This makes the default settings work better
627   with tripwire.
628
629 * Fixed configure.pl so it correctly detects a running BackupPC <= v1.4.0
630   so it can correctly warn the user to stop it before upgrading.  Reported
631   by David Holland.
632
633 * Added missing ";" to entity escape in EscapeHTML in BackupPC_Admin.
634   Reported by Guillaume Filion.
635
636 * Added LDAP setup to documentation from David Holland.
637
638 * Tar.pm now adds a "." to file paths that start with "/", so that all
639   tar paths are relative.  From Ludovic Drolez.
640
641 #------------------------------------------------------------------------
642 # Version 1.5.0beta0, 30 Jun 2002
643 #------------------------------------------------------------------------
644
645 * A full set of restore options is now supported, including direct
646   restore via smbclient or tar or downloading a zip or tar file.
647
648 * Major additions to CGI script to support better directory navigation,
649   restore features and mod_perl.  Also, file downloads from the CGI
650   interface now correctly preserve the file name and provide the
651   correct Content-Type for the most common types of files.  Improved
652   directory navigation was contributed by Ryan Kucera.
653
654 * New script BackupPC_zipCreate (contributed by Guillaume Filion) is the
655   zip analog of BackupPC_tarCreate.  BackupPC_zipCreate can be used to
656   create a zip archive of any portion of a backup.
657
658 * Substantial additions to BackupPC_tarCreate to support restore,
659   including modifying path names, handling hardlinks, fixing
660   support of old backups without attributes (pre-v1.4.0).  Plus
661   BackupPC_tarCreate is now an offical part of the release.
662   (Lack of support for hardlinks was reported by John Stanley.)
663
664 * BackupPC_tarExtract now supports hardlinks and fixed pooling of
665   attribute files.
666
667 * A unix domain socket is now used for communication between the CGI
668   interface and BackupPC.  The original TCP socket is optional.  Sockets
669   are correctly re-initialized if config.pl is updated with new socket
670   settings.
671
672 * For improved security messages over the unix or TCP socket are protected
673   via an MD5 digest based on a shared secret, a sequence number, a time
674   stamp and a unique per-connection number.
675
676 * Additions to configure.pl to support install of directory navigation
677   images.
678
679 * Fixed case where $Conf{BackupFilesOnly} or $Conf{BackupFilesExclude}
680   were set to a single string or list (in v1.4.0 only the case of
681   hash worked correctly).  Reported by Phillip Bertolus.
682
683 * Fixed case of $Conf{BackoutGoodCnt} == 0.  This setting now makes the
684   client always subject to blackout, matching the comments in config.pl.
685   Also fixed handling of $Conf{BackoutGoodCnt} < 0 in the CGI script
686   reported by Pascal Schelcher.
687
688 * Fixed byte and file totals for tar backups, reported by several users.
689
690 * Fixed --newer-mtime date/timestamp format to make it ISO 8601 compliant,
691   suggested by Erminio Baranzini.
692
693 * Fixed handling of $Conf{BackupFilesOnly} in BackupPC::Xfer::Tar.pm, as
694   well as shell escaping of tar arguments.
695
696 * Fixed entity encoding of 8-bit characters in the CGI interface.
697
698 * Added optional CGI headers in $Conf{CgiHeaders} that by default
699   is set to a no-cache pragma.  Suggested by Benno Zuure.
700
701 #------------------------------------------------------------------------
702 # Version 1.4.0, 16 Mar 2002
703 #------------------------------------------------------------------------
704
705 * BackupPC now supports tar (in addition to smb) for extracting host    
706   data.  This is the most convenient option for linux/unix hosts.
707   Tar can be configured to run over ssh, rsh or to backup a local
708   nfs mount from the host.
709
710 * Support for special files, including symbolic links, fifo, character
711   and block device files has been added, so that all native linux/unix
712   file types can be correctly backed up when using tar transport.
713   Special files are all stored as regular files and the type attributes
714   are used to remember the original file type.
715
716 * All unix file attributes are now saved (and pooled when possible).
717   This includes user and group ownership, permissions, and modification
718   time.  Smbclient also does a reasonable job of emulating unix 
719   permissions (such as mtime), and these attributes get saved too.
720
721 * The new default is to not fill incremental dumps.  configure.pl
722   automatically sets $Conf{IncrFill} to 0.  The default was 1
723   (incrementals were filled with hardlinks).  Since the CGI
724   script does filling at browsing time, there is no need to
725   fill incremental dumps.
726
727 * Backup file names are now stored in "mangled" form. Each node of a
728   path is preceded by "f", and special characters (\n, \r, % and /) are
729   URI-encoded as "%xx", where xx is the ascii character's hex value. So
730   c:/craig/example.txt is now stored as fc/fcraig/fexample.txt. This
731   was done mainly so meta-data could be stored alongside the backup
732   files without name collisions.  In particular, the attributes for the
733   files in a directory are stored in a file called "attrib", and
734   mangling avoids file name collisions (I discarded the idea of having
735   a duplicate directory tree for every backup just to store the
736   attributes). Other meta-data (eg: rsync checksums) could be stored in
737   file names preceded by, eg, "c".  There are two other benefits to
738   mangling: the share name might contain "/" (eg: "/home/craig" for tar
739   transport), and I wanted that represented as a single level in the
740   storage tree.  Secondly, as files are written to NewFileList for later
741   processing by BackupPC_link, embedded newlines in the file's path
742   will cause problems which are avoided by mangling.
743
744   The CGI script undoes the mangling, so it is invisibe to the user.
745   Of course, old (unmangled) backups are still supported by the CGI
746   interface.
747
748 * Various changes to the CGI interface, BackupPC_Admin:
749
750   + Added button that allows users to manually start a full dump in
751     addition to the existing incremental dump.
752
753   + Added display of file attributes when browsing backups.
754
755   + Added an optional holdoff time specified by the user when canceling
756     a backup. BackupPC will not attempt any new backups for at least the
757     specified time. This holdoff time can be changed whether or not a
758     backup is running.
759
760   + Added supports for file mangling, and correct merging of unfilled
761     backups from mangled or unmangled (and compressed or uncompressed)
762     fulls when browsing or restoring.
763
764   + Only displays a "Start Incr Backup" button if there are already some
765     backups.
766
767   + For DHCP hosts, when a user tries to manually start a backup, add
768     a check for the netbios name of both the host the request came
769     from (REMOTE_ADDR) and the last known DHCP address for that host
770     to see if either address matches the host. If not, an error
771     message is display. The previous behavior was that only requests
772     from the client itself succeeded, and requests from other machines
773     quietly failed.
774
775 * Changed the version numbering to X.Y.Z, instead of X.0Y. This release
776   is 1.4.0. The first digit is for major new releases, the middle digit
777   is for significant feature releases and improvements, and the last
778   digit is for bug fixes. You should think of the old 1.00, 1.01, 1.02
779   and 1.03 as 1.0.0, ..., 1.3.0.
780
781 * BackupPC and the CGI script BackupPC_Admin now check that the effective
782   user id is correct to avoid accidentally launching BackupPC as the
783   wrong user or detecting CGI configuration problems.  This behavior
784   can be turned off using the $Conf{BackupPCUserVerify} option.
785
786 * In numerous places changed "Smb" to "Xfer" (eg: log file names) to
787   support generic names for both smb and tar transport methods.  The
788   CGI script checks for old names for backward compatibility.
789
790 * Major changed to Backup_dump to support new tar transport.  All transport
791   specific code moved into BackupPC::Xfer::Smb and BackupPC::Xfer::Tar
792   objects.
793
794 * Added workaround for a bug in Samba's smbclient for files between 2GB
795   and 4GB.  The file size in the tar header is incorrect.  This allows
796   files up to 4GB to work with smbclient, rather than 2GB.  To support
797   files larger than 2GB you must make sure perl is compiled with the
798   uselargefiles option (use "perl -V | egrep largefiles" to check) and
799   the pool directory must be on a file system that supports large files.
800
801 * Moved the pool writing code into a module BackupPC::PoolWrite.  This
802   allows the clever file pool checking (digest, uncompressing, comparing
803   etc with minimum disk IO) to be used easily in multiple places (eg: it
804   is now used for writing attribute files so they can be pooled).
805
806 * Changed MD5 to Digest::MD5 to avoid use of the depreceated MD5 module.
807
808 * Shortened default $Conf{MyPath} so that perl's taint mode is more likely
809   to be happy.  The old $Conf{MyPath} contained /usr/local/bin, which
810   on one user's machine was world writable and perl -T correctly
811   complained about it.
812
813 * Fixed ping command options in Lib.pm so that it works on OpenBSD.
814   Thanks to Kyle Amon for sending the fix.  Decided to move the
815   ping options from Lib.pm into config.pl (as $Conf{PingArgs}) and
816   now configure.pl tries to come up with a sensible default based on
817   the OS.
818
819 * Fixed argument checking in BackupPC_tarExtract to allow '$' in the
820   share name (eg: C$).  Thanks to Jules Agee for this fix.  Also
821   changed the default config.pl so that single quotes are used
822   everywhere so that people don't get tripped up putting '$' inside
823   double-quoted strings.
824
825 #------------------------------------------------------------------------
826 # Version 1.03, 9 Dec 2001
827 #------------------------------------------------------------------------
828
829 * BackupPC now has full support for compression.  There are now two
830   pool areas, the original pool for uncompressed files, and cpool for
831   compressed files. The compression is done by Compress::Zlib.
832   Compression reduces the pool disk usage by around 40%, although your
833   mileage may vary.  Compression is optional and can also be specified on
834   a per-PC basis (although this will cost more pool storage since many
835   backup files will have to be stored in both compressed and
836   uncompressed forms.
837
838 * A new script, BackupPC_compressPool, can be run to compress the entire
839   pool.  This is used once to migrate all the pool data from uncompressed
840   to compressed on existing installations.  Read the documentation
841   (Installing BackupPC/Compressing an existing pool) before running
842   BackupPC_compressPool!
843
844   Alternatively, compression can simply be turned on and all new backups
845   will be compressed. Both old (uncompressed) and new (compressed)
846   backups can be browsed and viewed. Eventually, the old backups will
847   expire and all the pool data will be compressed.  However, until the
848   old backups expire, this approach could require 60% or more additional
849   pool storage space to store both uncompressed and compressed versions
850   of the backup files.
851
852 * Significant improvements to the cgi interface, BackupPC_Admin:
853
854     - much better layout navigation
855     - handles compressed backup files and compressed log files
856     - handles unfilled incremental dumps
857     - better backup directory browsing navigation
858     - reports compression statistics
859     - $Conf{CgiDateFormatMMDD} allows you to set date format (MM/DD or DD/MM)
860     - Additional customization with $Conf{CgiHeaderFontType},
861       $Conf{CgiHeaderFontSize}, $Conf{CgiNavBarBgColor}, and
862       $Conf{CgiHeaderBgColor}.
863
864 * Eliminated BackupPC_queueAll.  BackupPC directly reads the hosts
865   file and queues the PCs itself.  Like config.pl, BackupPC will
866   re-read the hosts file on each wakeup if its modification time
867   changes, or upon a SIGHUP.  This also makes for better behavior
868   when adding a host: if you add hosts, simply send a SIGHUP to
869   BackupPC or wait for the next wakeup.
870
871 * BackupPC_dump now compresses the SmbLOG file if compression is enabled.
872
873 * BackupPC_dump keeps track of compressed file sizes so that compression
874   statistics can be reported by the cgi interface.
875
876 * Aging of old log files now handles compressed log files (.z extension).
877
878 * Added configuration option $Conf{IncrFill} to specify whether
879   incremental dumps should be filled in.  Old behavior was that
880   filling was on.  Now it's optional.  See config.pl for more
881   details.
882
883 * BackupPC_nightly now cleans and generates statistics for both
884   the uncompressed pool and compressed pool (cpool).
885
886 * Added new utility script BackupPC_zcat that can be used to
887   uncompresses BackupPC files.
888
889 * configure.pl offers various options related to compression,
890   depending upon whether this is a new install or upgrade,
891   and whether or not Compress::Zlib is installed.
892
893 * configure.pl now makes a backup copy of config.pl before
894   config.pl is updated.
895
896 * added three new fields to the backups file to handle optional
897   filling and compression stats.
898
899 * Added -e option to BackupPC_dump.  BackupPC now invokes BackupPC_dump -e
900   on each dhcp host once each night to verify that very old backups are
901   expired.  This ensures that very old backups are expired even if
902   the dhcp host has not been on the network for a long time.
903
904 * fixed bug in BackupPC::FileZIO.pm that required Compress::Zlib,
905   even if compression was off.  Thanks to Steve Holmes for reporting
906   this.
907
908 * fixed bug that caused a BackupPC queue to get blocked when a backup
909   cancel attempt was made during the BackupPC_link phase.
910
911 #------------------------------------------------------------------------
912 # Version 1.02, 28 Oct 2001.
913 #------------------------------------------------------------------------
914
915 * Added new script BackupPC_tarExtract to extract the smbclient tar
916   archive. This reduces disk writes by perhaps 90-95% and disk reads by
917   50%. Previously, tar was used to extract and write everything to disk.
918   Then BackupPC_dump would read enough of each file to compute the MD5
919   digest, and then compare the full file with candidate pool files.  So
920   for each 1MB file that matches a single file in the pool, there would
921   be 1MB of disk writes and 2MB of disk reads (to compare two 1MB files).
922
923   BackupPC_tarExtract instead extracts the archive using a 1MB memory
924   buffer.  This allows the MD5 digest to be computed without touching the
925   disk.  Next, any potential pool file compares are done by comparing the
926   pool file against the incoming tar data in memory, which only requires
927   the pool file to be read.  So for each 1MB file that matches a single
928   file in the pool, there are now no disk writes, and only 1MB of reads.
929   BackupPC_tarExtract handles arbitrary size files and repeated
930   potential pool matches.  If the incoming file doesn't match the pool
931   then it is written to disk (once the pool is mature this happens maybe
932   5-10% of the time).
933
934 * Substantial changes to BackupPC_dump:
935
936     + BackupPC_tarExtract is now used in place of tar.
937
938     + BackupPC_dump now reads the output from both smbclient and
939       BackupPC_tarExtract and merges them into SmbLOG.
940
941     + Named pipes are no longer used to connect smbclient to tar
942       (now BackupPC_tarExtract).  Regular pipes are used instead.
943       This avoids the need to system mknod or mkfifo.
944
945     + Locked files on the client that can't be read by smbclient
946       previously were filled with 0x0 bytes by smbclient, meaning
947       tar extracted a useless file filled with 0x0 bytes.  Now,
948       BackupPC_dump watches the output of smbclient and removes
949       any files that smbclient couldn't read.  This avoids storing
950       useless files.  It tries to replace such files with a hard link
951       to a previous dump.  These actions appear in the log file.
952
953 * added new module lib/BackupPC/FileZIO.pm. This handles pool file
954   I/O and is used by BackupPC_tarExtract.  BackupPC::FileIO supports
955   reading and writing compressed and regular files and provides all the
956   hooks for compression support in BackupPC (should be supported in next
957   version). BackupPC::FileIO also does efficient writing of files that
958   contain leading 0x0 bytes (by seeking past the 0x0 bytes). This is
959   helpful when smbclient reads a locked file, and it fills the tar
960   output with a file of the correct size but all 0x0.  Such files will be
961   later removed by BackupPC_dump.  But in the meantime, BackupPC::FileIO
962   writes such files efficiently (as sparse files), meaning just a few
963   blocks of disk space will be needed even if the file is large.
964
965 * alive/dead counting for blackout now works correctly for DHCP hosts.
966
967 * BackupPC resets activeJob on startup, to fix bug when BackupPC was
968   killed and restarted with backups running.
969
970 * added extra non blocking select() in BackupPC to make sure the socket
971   reads don't block.
972
973 * BackupPC avoids queuing multiple BackupPC_queueAll's on the CmdQueue.
974
975 * Updated BackupPC_sendEmail to correctly parse the locked file
976   error from 2.2.1a smbclient, so that missing Outlook file emails
977   can be correctly sent.
978
979 * Changed HostInfoRead() in lib/BackupPC/Lib.pm to lowercase the
980   hostname read from the hosts file.
981
982 * BackupPC_Admin provides general summary when the host name is empty.
983
984 * configure.pl (and BackupPC) now requires perl 5.6.0 or later.
985
986 * configure.pl complains if BackupPC is already running, reminding you
987   to stop it before upgrading.
988
989 * updated documentation, and fixed auto-insertion of config.pl into
990   BackupPC.pod (previously the last config parameter was left out of
991   BackupPC.pod).
992
993 #------------------------------------------------------------------------
994 # Version 1.01, 30 Sep 2001
995 #------------------------------------------------------------------------
996
997 * Documentation cleanup in README, doc/BackupPC.pod, conf/config.pl.
998
999 * BackupPC_sendMail now reads the optional per-PC config file, allowing
1000   email configuration parameters to be set on a per-PC basis.
1001
1002 * Removed the unused 4096-length MD5 digest code in lib/BackupPC/Lib.pm.
1003
1004 #------------------------------------------------------------------------
1005 # Version 1.00, 21 Sep 2001
1006 #------------------------------------------------------------------------
1007
1008 * Initial release of BackupPC on sourceforge.net.