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