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