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