diff -Nru burp-1.3.0+20120214git/autoconf/configure burp-1.3.1/autoconf/configure --- burp-1.3.0+20120214git/autoconf/configure 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/autoconf/configure 2012-02-27 13:57:59.000000000 +0000 @@ -3765,13 +3765,13 @@ CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then - CFLAGS="-g -O2" + CFLAGS="-g -O0" else CFLAGS="-g" fi else if test "$GCC" = yes; then - CFLAGS="-O2" + CFLAGS="-O0" else CFLAGS= fi @@ -4113,13 +4113,13 @@ CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then - CXXFLAGS="-g -O2" + CXXFLAGS="-g -O0" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then - CXXFLAGS="-O2" + CXXFLAGS="-O0" else CXXFLAGS= fi @@ -8144,13 +8144,13 @@ CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then - CXXFLAGS="-g -O2" + CXXFLAGS="-g -O0" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then - CXXFLAGS="-O2" + CXXFLAGS="-O0" else CXXFLAGS= fi @@ -20382,9 +20382,9 @@ $as_echo "#define PROTOTYPES 1" >>confdefs.h -if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O2"; then +if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O0"; then if test -z "$CCOPTS"; then - CCOPTS='-g -O2 -Wall' + CCOPTS='-g -O0 -Wall' fi CFLAGS="$CCOPTS" fi @@ -28112,10 +28112,10 @@ fi # clean up any old junk -echo " " -echo "Cleaning up" -echo " " -${MAKE:-make} clean +#echo " " +#echo "Cleaning up" +#echo " " +#${MAKE:-make} clean echo " Configuration on `date`: diff -Nru burp-1.3.0+20120214git/autoconf/configure.in burp-1.3.1/autoconf/configure.in --- burp-1.3.0+20120214git/autoconf/configure.in 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/autoconf/configure.in 2012-02-27 13:57:59.000000000 +0000 @@ -546,9 +546,9 @@ dnl -------------------------------------------------------------------------- dnl Supply default CFLAGS, if not specified by `CFLAGS=flags ./configure' dnl -if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O2"; then +if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O0"; then if test -z "$CCOPTS"; then - CCOPTS='-g -O2 -Wall' + CCOPTS='-g -O0 -Wall' fi CFLAGS="$CCOPTS" fi @@ -1576,10 +1576,10 @@ fi # clean up any old junk -echo " " -echo "Cleaning up" -echo " " -${MAKE:-make} clean +#echo " " +#echo "Cleaning up" +#echo " " +#${MAKE:-make} clean echo " Configuration on `date`: diff -Nru burp-1.3.0+20120214git/autoconf/libtool/libtool.m4 burp-1.3.1/autoconf/libtool/libtool.m4 --- burp-1.3.0+20120214git/autoconf/libtool/libtool.m4 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/autoconf/libtool/libtool.m4 2012-02-27 13:57:59.000000000 +0000 @@ -6968,7 +6968,7 @@ [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O0" AC_SUBST(GCJFLAGS)])])[]dnl ]) diff -Nru burp-1.3.0+20120214git/CHANGELOG burp-1.3.1/CHANGELOG --- burp-1.3.0+20120214git/CHANGELOG 2012-02-13 13:13:37.000000000 +0000 +++ burp-1.3.1/CHANGELOG 2012-02-27 15:36:40.000000000 +0000 @@ -1,3 +1,5 @@ +2012-02-27 Changes in burp-1.3.1: + * EFS support on Windows. * Move to using mingw-w64 for both 32bit and 64bit Windows builds. * Add 'exclude_fs =' option for Linux so that you can skip partitions types (for example, tmpfs) without generating warnings. @@ -8,6 +10,16 @@ * Add man pages for bedup and burp_ca. * Remove embedded uthash code. It will need to be installed as a dependency. For example, in Debian, you might run 'apt-get install uthash-dev'. + * Add Bas van den Dikkenberg's tweaks for getting burp into official Debian + and Ubuntu repositories. Burp is now in debian sid and ubuntu precise. + * Make the server tell the client what extra_comms features it supports, so + that, in future, old servers are more likely to work with new clients. + * Improve 'make clean'. + * Add option to strip off leading path components on restore. + * Fix segfault that was happening on the server when SSL_accept() failed. + * Move burp and bedup to /usr/sbin (you need to check that any cron jobs + are pointing there too). + * Moved list of things to do to https://github.com/grke/burp/issues 2012-01-27 Changes in burp-1.3.0: * Add a mechanism for automatically upgrading clients. diff -Nru burp-1.3.0+20120214git/configs/client/cron.example burp-1.3.1/configs/client/cron.example --- burp-1.3.0+20120214git/configs/client/cron.example 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/configs/client/cron.example 2012-02-27 13:57:59.000000000 +0000 @@ -2,4 +2,4 @@ # will decide whether it is yet time to do a backup or not. # It might be a good idea to change the numbers below for different clients, # in order to spread the load a bit. -7,27,47 * * * * root /sbin/burp -a t >>/var/log/burp-client 2>&1 +7,27,47 * * * * root /usr/sbin/burp -a t >>/var/log/burp-client 2>&1 diff -Nru burp-1.3.0+20120214git/configs/server/cron.example burp-1.3.1/configs/server/cron.example --- burp-1.3.0+20120214git/configs/server/cron.example 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/configs/server/cron.example 2012-02-27 13:57:59.000000000 +0000 @@ -8,4 +8,4 @@ # The following will run file deduplication over all client storages every # Saturday at 8 in the morning. Again, if your server is using a different # config file to /etc/burp/burp-server.conf, change that argument. -0 8 * * 6 root /sbin/bedup -l -c /etc/burp/burp-server.conf >>/var/log/burp-bedup 2>&1 +0 8 * * 6 root /usr/sbin/bedup -l -c /etc/burp/burp-server.conf >>/var/log/burp-bedup 2>&1 diff -Nru burp-1.3.0+20120214git/configs/server/summary_script burp-1.3.1/configs/server/summary_script --- burp-1.3.0+20120214git/configs/server/summary_script 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/configs/server/summary_script 2012-02-27 13:57:59.000000000 +0000 @@ -8,5 +8,5 @@ (echo "To: $2" echo "From: burp" echo "Subject: $3" - /sbin/burp -c "$1" -a S + /usr/sbin/burp -c "$1" -a S echo) | /usr/sbin/sendmail -t diff -Nru burp-1.3.0+20120214git/configure burp-1.3.1/configure --- burp-1.3.0+20120214git/configure 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/configure 2012-02-27 13:57:59.000000000 +0000 @@ -1019,7 +1019,7 @@ # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' +sbindir='${exec_prefix}/usr/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' @@ -1565,7 +1565,7 @@ Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] + --sbindir=DIR system admin executables [EPREFIX/usr/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] @@ -3765,13 +3765,13 @@ CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then - CFLAGS="-g -O2" + CFLAGS="-g -O0" else CFLAGS="-g" fi else if test "$GCC" = yes; then - CFLAGS="-O2" + CFLAGS="-O0" else CFLAGS= fi @@ -4113,13 +4113,13 @@ CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then - CXXFLAGS="-g -O2" + CXXFLAGS="-g -O0" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then - CXXFLAGS="-O2" + CXXFLAGS="-O0" else CXXFLAGS= fi @@ -8144,13 +8144,13 @@ CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then - CXXFLAGS="-g -O2" + CXXFLAGS="-g -O0" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then - CXXFLAGS="-O2" + CXXFLAGS="-O0" else CXXFLAGS= fi @@ -20382,9 +20382,9 @@ $as_echo "#define PROTOTYPES 1" >>confdefs.h -if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O2"; then +if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O0"; then if test -z "$CCOPTS"; then - CCOPTS='-g -O2 -Wall' + CCOPTS='-g -O0 -Wall' fi CFLAGS="$CCOPTS" fi @@ -28112,10 +28112,10 @@ fi # clean up any old junk -echo " " -echo "Cleaning up" -echo " " -${MAKE:-make} clean +#echo " " +#echo "Cleaning up" +#echo " " +#${MAKE:-make} clean echo " Configuration on `date`: diff -Nru burp-1.3.0+20120214git/debian/burp.cron.d burp-1.3.1/debian/burp.cron.d --- burp-1.3.0+20120214git/debian/burp.cron.d 2012-02-11 22:20:45.000000000 +0000 +++ burp-1.3.1/debian/burp.cron.d 2012-02-27 13:57:59.000000000 +0000 @@ -5,4 +5,4 @@ # will decide whether it is yet time to do a backup or not. # It might be a good idea to change the numbers below for different clients, # in order to spread the load a bit. -#7,27,47 * * * * root [ -x /sbin/burp ] && /sbin/burp -a t >>/var/log/burp-client 2>&1 +#7,27,47 * * * * root [ -x /usr/sbin/burp ] && /usr/sbin/burp -a t >>/var/log/burp-client 2>&1 diff -Nru burp-1.3.0+20120214git/debian/changelog burp-1.3.1/debian/changelog --- burp-1.3.0+20120214git/debian/changelog 2012-02-14 17:56:32.000000000 +0000 +++ burp-1.3.1/debian/changelog 2012-02-27 18:31:03.000000000 +0000 @@ -1,3 +1,13 @@ +burp (1.3.1-1) unstable; urgency=medium + + * New upstream release version 1.3.1 + -fixes respect noopt in DEB_BUILD_OPTIONS. (Closes: #661281) + * Switched to Standards-Version 3.9.3 Debian bug: (Closes: #661001) + * Fixed typo in logrotate script Debian bug: (Closes: #660964) + * added debug package Debian bug: (Closes: #661267) + + -- Bastiaan Franciscus van den Dikkenberg Mon, 27 Feb 2012 17:01:35 +0100 + burp (1.3.0+20120214git-1) unstable; urgency=low * Compilation bug solved for in farm (Closes: #659692) @@ -7,10 +17,10 @@ * If recovery method 'resume' is set, but the includes/excludes change, switch to 'use', then start a new backup. * In the tests, check to see whether it looks like the server has finished - the backup before moving on, rather than just waiting a set + the backup before moving on, rather than just waiting a set amount of time.(Closes: #659462) * Add man pages for bedup and burp_ca. - * Remove embedded uthash code. It will need to be installed + * Remove embedded uthash code. It will need to be installed as a dependency. (Closes: #659454) -- Bastiaan Franciscus van den Dikkenberg Tue, 14 Feb 2012 15:47:01 +0100 @@ -26,7 +36,7 @@ * added forwarded header to patches * removed changelog entries from patches * removed debian/README (Closes: #659453) - * removed blank MAILTO header in cronjob and + * removed blank MAILTO header in cronjob and redirected output to /var/log/burp-client (Closes: #659452) * added extra logrotate for /var/log/burp-client * changed /var/run to /run (Closes: #659464) diff -Nru burp-1.3.0+20120214git/debian/control burp-1.3.1/debian/control --- burp-1.3.0+20120214git/debian/control 2012-02-14 13:35:11.000000000 +0000 +++ burp-1.3.1/debian/control 2012-02-27 13:57:59.000000000 +0000 @@ -3,7 +3,7 @@ Priority: extra Maintainer: Bastiaan Franciscus van den Dikkenberg Build-Depends: debhelper (>= 7.0.50~), autotools-dev, libncurses5-dev, libssl-dev, zlib1g-dev, librsync-dev, libacl1-dev, libattr1-dev, uthash-dev -Standards-Version: 3.9.2 +Standards-Version: 3.9.3 Homepage: http://burp.grke.net/ Vcs-Git: git://github.com/grke/burp.git #Vcs-Browser: http://git.debian.org/?p=collab-maint/burp.git;a=summary @@ -11,7 +11,18 @@ Package: burp Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Description: simple network BackUp and Restore Program +Description: Simple cross-platform network BackUp and Restore Program Burp is a client/server backup system that saves space and network usage by using librsync, and uses the Volume Snapshot Service when backing up Windows clients. + +Package: burp-dbg +Architecture: any +Section: debug +Depends: burp (= ${binary:Version}), ${misc:Depends} +Description: debugging symbols for Burp + Burp is a client/server backup system that saves space and network + usage by using librsync, and uses the Volume Snapshot Service when + backing up Windows clients. + . + This package contains debugging symbols for burp. diff -Nru burp-1.3.0+20120214git/debian/copyright burp-1.3.1/debian/copyright --- burp-1.3.0+20120214git/debian/copyright 2012-02-06 22:59:24.000000000 +0000 +++ burp-1.3.1/debian/copyright 2012-02-27 13:57:59.000000000 +0000 @@ -325,7 +325,7 @@ END OF TERMS AND CONDITIONS Files: debian/* -Copyright: 2012 Bas van den Dikkenberg +Copyright: 2012 Bastiaan Franciscus van den Dikkenberg License: GPL-2+ This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -Nru burp-1.3.0+20120214git/debian/init burp-1.3.1/debian/init --- burp-1.3.0+20120214git/debian/init 2012-02-07 12:10:30.000000000 +0000 +++ burp-1.3.1/debian/init 2012-02-27 13:57:59.000000000 +0000 @@ -17,7 +17,7 @@ PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC=burp # Introduce a short description here NAME=burp # Introduce the short server's name here -DAEMON=/sbin/burp # Introduce the server's location here +DAEMON=/usr/sbin/burp # Introduce the server's location here DAEMON_ARGS="" # Arguments to run the daemon with PIDFILE=/var/run/burp.server.pid SCRIPTNAME=/etc/init.d/$NAME diff -Nru burp-1.3.0+20120214git/debian/logrotate burp-1.3.1/debian/logrotate --- burp-1.3.0+20120214git/debian/logrotate 2012-02-11 22:19:03.000000000 +0000 +++ burp-1.3.1/debian/logrotate 2012-02-27 13:57:59.000000000 +0000 @@ -3,7 +3,7 @@ missingok rotate 7 postrotate - invoke-rd.d burp reload >/dev/null + invoke-rc.d burp reload >/dev/null endscript compress notifempty diff -Nru burp-1.3.0+20120214git/debian/patches/Backup-phase2-compilation-problem burp-1.3.1/debian/patches/Backup-phase2-compilation-problem --- burp-1.3.0+20120214git/debian/patches/Backup-phase2-compilation-problem 2012-02-13 09:53:28.000000000 +0000 +++ burp-1.3.1/debian/patches/Backup-phase2-compilation-problem 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -Description: Backup phase2 compilation problem - . - burp (1.3.0-4) unstable; urgency=low - . - * Compilation bug solved for in farm (Closes: #659692) -Author: Graham Keeling - - ---- -The information above should follow the Patch Tagging Guidelines, please -checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here -are templates for supplementary fields that you might want to add: - -Origin: vendor -Bug-Debian: http://bugs.debian.org/ -Bug-Debian: http://bugs.debian.org/659692 -Forwarded: keeling@spamcop.net -Reviewed-By: Bastiaan Franciscus van den Dikkenberg -Last-Update: 2012-02-13 - ---- burp-1.3.0.orig/src/backup_phase2_server.c -+++ burp-1.3.0/src/backup_phase2_server.c -@@ -569,7 +569,7 @@ int backup_phase2_server(gzFile *cmanfp, - if(!(p2fp=open_file(phase2data, "r+b"))) - goto error; - -- if(resume && do_resume(p1zp, p2fp, ucfp, cmanfp, dpth, cconf, -+ if(resume && do_resume(p1zp, p2fp, ucfp, *cmanfp, dpth, cconf, - p1cntr, cntr)) - goto error; - diff -Nru burp-1.3.0+20120214git/debian/patches/series burp-1.3.1/debian/patches/series --- burp-1.3.0+20120214git/debian/patches/series 2012-02-14 13:14:36.000000000 +0000 +++ burp-1.3.1/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -Backup-phase2-compilation-problem -Updated-man-pages diff -Nru burp-1.3.0+20120214git/debian/patches/Updated-man-pages burp-1.3.1/debian/patches/Updated-man-pages --- burp-1.3.0+20120214git/debian/patches/Updated-man-pages 2012-02-14 13:15:44.000000000 +0000 +++ burp-1.3.1/debian/patches/Updated-man-pages 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -Description: Updates man pages -Author: Bastiaan Franciscus van den Dikkenberg - ---- -Last-Update: 2012-02-14 -Forwarded: keeling@spamcop.net - ---- burp-1.3.1.orig/manpages/bedup.8 -+++ burp-1.3.1/manpages/bedup.8 -@@ -1,15 +1,15 @@ --.\" manual page [] for bedup --.\" SH section heading --.\" SS subsection heading --.\" LP paragraph --.\" IP indented paragraph --.\" TP hanging label --.TH bedup 8 "bedup" -+.\"Created with GNOME Manpages Editor Wizard -+.\"http://sourceforge.net/projects/gmanedit2 -+.TH bedup 8 "February 10, 2012" "" "bedup" -+ - .SH NAME --bedup -+bedup \- program for deduplication program with additional knowledge of burp -+ - .SH SYNOPSIS --.B bedup: [options] --.SH DESCRIPTION -+.B bedup -+.RI [ options ] -+.br -+ - .LP - A file deduplication program with additional knowledge of burp storage directories. This program comes with the burp backup and restore package. - -@@ -36,10 +36,8 @@ Non-burp mode. Deduplicate any (set of) - \fB\-v\fR \fB\fR - Print version and exit.\fR - .TP --\fB\Defaults\fR \fB\fR - By default, bedup will read /etc/burp/burp.conf and deduplicate client storage directories using special knowledge of the structure.\fR - .TP --\fB\Defaults\fR \fB\fR - With '-n', this knowledge is turned off and you have to specify the directories to deduplicate on the command line. Running with '-n' is therefore dangerous if you are deduplicating burp storage directories. - - .SH BUGS ---- burp-1.3.1.orig/manpages/burp_ca.8 -+++ burp-1.3.1/manpages/burp_ca.8 -@@ -1,15 +1,13 @@ --.\" manual page [] for burp_ca --.\" SH section heading --.\" SS subsection heading --.\" LP paragraph --.\" IP indented paragraph --.\" TP hanging label --.TH burp_ca 8 "burp_ca" -+.TH burp_ca 8 "February 10, 2012" "" "burp_ca" -+ - .SH NAME --bedup -+burp_ca \- program for generating certificates for use with burp -+ - .SH SYNOPSIS --.B burp_ca: [options] --.SH DESCRIPTION -+.B burp_ca -+.RI [ options ] -+.br -+ - .LP - A script for generating certificates for use with burp. This script comes with the burp backup and restore package, and was contributed by Patrick Koppen. - diff -Nru burp-1.3.0+20120214git/debian/rules burp-1.3.1/debian/rules --- burp-1.3.0+20120214git/debian/rules 2012-02-14 17:53:59.000000000 +0000 +++ burp-1.3.1/debian/rules 2012-02-27 13:57:59.000000000 +0000 @@ -24,3 +24,11 @@ override_dh_auto_configure: ./configure +override_dh_strip: + dh_strip --dbg-package=burp-dbg + +override_dh_auto_install: + dh_auto_install --destdir=debian/burp + +override_dh_installdocs: + dh_installdocs --link-doc=burp diff -Nru burp-1.3.0+20120214git/Makefile.in burp-1.3.1/Makefile.in --- burp-1.3.0+20120214git/Makefile.in 2012-02-13 13:13:37.000000000 +0000 +++ burp-1.3.1/Makefile.in 2012-02-27 13:57:59.000000000 +0000 @@ -133,12 +133,18 @@ clean: @for I in ${all_subdirs} test ; \ do (cd $$I; echo "==>Entering directory `pwd`"; ${MAKE} $@ || exit 1); done + @cd src/win32 && ${MAKE} $@ @$(RMF) *~ 1 2 3 core core.* config.guess console.log console.sum - @$(RMF) config.log config.out - @$(RMF) examples/1 examples/2 examples/devices/1 examples/devices/2 - @$(RMF) -r autom4te.cache + @$(RMF) config.log config.out config.status libtool + @$(RMF) -r autoconf/autom4te.cache autoconf/Make.common @$(RMF) burp-cross-tools @$(RMF) burp-depkgs + @$(RMF) Makefile + @$(RMF) website/html/*.html + @$(RMF) website/html/*.html + @$(RMF) -r website/html/about + @$(RMF) -r website/html/faq + @$(RMF) -r website/html/txt @find . -name ".#*" -exec $(RMF) {} \; diff -Nru burp-1.3.0+20120214git/manpages/bedup.8 burp-1.3.1/manpages/bedup.8 --- burp-1.3.0+20120214git/manpages/bedup.8 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/manpages/bedup.8 2012-02-27 13:57:59.000000000 +0000 @@ -1,15 +1,15 @@ -.\" manual page [] for bedup -.\" SH section heading -.\" SS subsection heading -.\" LP paragraph -.\" IP indented paragraph -.\" TP hanging label -.TH bedup 8 "bedup" +.\"Created with GNOME Manpages Editor Wizard +.\"http://sourceforge.net/projects/gmanedit2 +.TH bedup 8 "February 10, 2012" "" "bedup" + .SH NAME -bedup +bedup \- program for deduplication program with additional knowledge of burp + .SH SYNOPSIS -.B bedup: [options] -.SH DESCRIPTION +.B bedup +.RI [ options ] +.br + .LP A file deduplication program with additional knowledge of burp storage directories. This program comes with the burp backup and restore package. @@ -36,10 +36,8 @@ \fB\-v\fR \fB\fR Print version and exit.\fR .TP -\fB\Defaults\fR \fB\fR By default, bedup will read /etc/burp/burp.conf and deduplicate client storage directories using special knowledge of the structure.\fR .TP -\fB\Defaults\fR \fB\fR With '-n', this knowledge is turned off and you have to specify the directories to deduplicate on the command line. Running with '-n' is therefore dangerous if you are deduplicating burp storage directories. .SH BUGS diff -Nru burp-1.3.0+20120214git/manpages/burp.8 burp-1.3.1/manpages/burp.8 --- burp-1.3.0+20120214git/manpages/burp.8 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/manpages/burp.8 2012-02-27 15:36:40.000000000 +0000 @@ -77,6 +77,9 @@ option in the config file. Use .I /dev/null to deactivate or '' to reactivate output. +.TP +\fB\-s\fR \fB[number]\fR +For use with restores - strip a number of leading path components. .SH EXAMPLES .TP @@ -107,6 +110,9 @@ \fBburp -a r -b 1 -r myregex -d /tmp/restoredir\fR Restores all the files in backup number 1 that match the regular expression 'myregex' into the directory /tmp/restoredir. .TP +\fBburp -a r -b 1 -r myregex -d /tmp/restoredir -s 2\fR +Restores all the files in backup number 1 that match the regular expression 'myregex' into the directory /tmp/restoredir and strip 2 leading path components. +.TP \fBburp -a r\fR Restores all the files in the most recent backup to their original location. You won't be given a warning if the files already exist there, so use with caution. .TP diff -Nru burp-1.3.0+20120214git/manpages/burp_ca.8 burp-1.3.1/manpages/burp_ca.8 --- burp-1.3.0+20120214git/manpages/burp_ca.8 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/manpages/burp_ca.8 2012-02-27 13:57:59.000000000 +0000 @@ -1,15 +1,13 @@ -.\" manual page [] for burp_ca -.\" SH section heading -.\" SS subsection heading -.\" LP paragraph -.\" IP indented paragraph -.\" TP hanging label -.TH burp_ca 8 "burp_ca" +.TH burp_ca 8 "February 10, 2012" "" "burp_ca" + .SH NAME -bedup +burp_ca \- program for generating certificates for use with burp + .SH SYNOPSIS -.B burp_ca: [options] -.SH DESCRIPTION +.B burp_ca +.RI [ options ] +.br + .LP A script for generating certificates for use with burp. This script comes with the burp backup and restore package, and was contributed by Patrick Koppen. diff -Nru burp-1.3.0+20120214git/manpages/Makefile burp-1.3.1/manpages/Makefile --- burp-1.3.0+20120214git/manpages/Makefile 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/manpages/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,152 +0,0 @@ -# -# -# -# This file is pulled in by all the Unix Burp Makefiles -# so it has all the "common" definitions -# - -DATE="" -LSMDATE= -VERSION=1.3.1 -VERNAME=burp-$(VERSION)# -MAINT=Graham Keeling# -MAINTEMAIL=# -WEBMAINT=# -WEBMAINTEMAIL=# -WEBPAGE=# -FTPSITENAME=# -FTPSITEDIR=# -#------------------------------------------------------------------------- - -SHELL = /bin/sh - -# Installation target directories & other installation stuff -prefix = -exec_prefix = -binprefix = -manprefix = -datarootdir = /usr/share -docdir = /usr/share/doc/burp -sbindir = /sbin -libdir = /usr/lib -includedir = /usr/include -sysconfdir = /etc/burp -plugindir = @plugindir@ -scriptdir = @scriptdir@ -archivedir = @archivedir@ -mandir = ${datarootdir}/man -manext = 8 - -NO_ECHO = @ - -# Tools & program stuff -CC = gcc -CPP = gcc -E -CXX = g++ -MV = /bin/mv -RM = /bin/rm -RMF = $(RM) -f -CP = /bin/cp -SED = /bin/sed -AWK = /usr/bin/mawk -ECHO = /bin/echo -CMP = /usr/bin/cmp -TBL = /usr/bin/tbl -AR = /usr/bin/ar -GMAKE = @GMAKE@ -RANLIB = ranlib -MKDIR = /home/graham/burp/autoconf/mkinstalldirs -INSTALL = /usr/bin/install -c -# add the -s to the following in PRODUCTION mode -INSTALL_PROGRAM = $(INSTALL) -m 0755 -INSTALL_LIB = $(INSTALL) -m 755 -INSTALL_DATA = $(INSTALL) -m 644 -INSTALL_SCRIPT = $(INSTALL) -m 0755 -INSTALL_CONFIG = $(INSTALL) -m 640 - -# -# Libtool specific settings -# -DEFAULT_OBJECT_TYPE = .lo -DEFAULT_ARCHIVE_TYPE = .la -DEFAULT_SHARED_OBJECT_TYPE = .la -LIBTOOL = /home/graham/burp/libtool -LIBTOOL_COMPILE = $(LIBTOOL) --silent --tag=CXX --mode=compile -LIBTOOL_LINK = $(LIBTOOL) --silent --tag=CXX --mode=link -LIBTOOL_INSTALL = $(LIBTOOL) --silent --tag=CXX --mode=install -LIBTOOL_INSTALL_FINISH = $(LIBTOOL) --silent --tag=CXX --finish --mode=install -LIBTOOL_UNINSTALL = $(LIBTOOL) --silent --tag=CXX --mode=uninstall -LIBTOOL_CLEAN = $(LIBTOOL) --silent --tag=CXX --mode=clean - -# Flags & libs -CFLAGS = -g -O2 -Wall -fno-strict-aliasing -fno-exceptions -fno-rtti - -CPPFLAGS = -fno-strict-aliasing -fno-exceptions -fno-rtti -LDFLAGS = -TTOOL_LDFLAGS = @TTOOL_LDFLAGS@ -#DEFS = -DHAVE_CONFIG_H -LIBS = -WRAPLIBS = -DINCLUDE = -DLIB = -DB_LIBS = -PYTHON_LIBS = @PYTHON_LIBS@ -PYTHON_INC = @PYTHON_INCDIR@ -OPENSSL_LIBS = -lssl -lcrypto -RSYNC_LIBS = -lrsync -NCURSES_LIBS = -lncurses -CRYPT_LIBS = -lcrypt -ZLIBS = -lz -BDB_CPPFLAGS = @BDB_CPPFLAGS@ -BDB_LIBS = @BDB_LIBS@ - - -# Windows (cygwin) flags -WCFLAGS = -WLDFLAGS = - -# X Include directory -#XINC = @XPM_CFLAGS@ - -# extra libraries needed by X on some systems, X library location -#XLIB = @XPM_LIBS@ -lX11 - -# End of common section of the Makefile -#------------------------------------------------------------------------- - -.PHONY: dummy - -MAN8 = burp.8 burp_ca.8 bedup.8 \ - -MAN1 = - -all: - -nothing: - -depend: - -install: - $(MKDIR) $(DESTDIR)/$(mandir)/man8 - for I in ${MAN8}; \ - do ($(RMF) $$I.gz; gzip -c $$I >$$I.gz; \ - $(INSTALL_DATA) $$I.gz $(DESTDIR)$(mandir)/man8/$$I.gz; \ - rm -f $$I.gz); \ - done - -uninstall: - for I in ${MAN8}; \ - do (rm -f $(DESTDIR)$(mandir)/man8/$$I.gz); \ - done - for I in ${MAN1}; \ - do (rm -f $(DESTDIR)$(mandir)/man1/$$I.gz); \ - done - -clean: - @$(RMF) *~ 1 2 3 *.bak - @find . -name .#* -exec $(RMF) {} \; - -depend: - -distclean: clean - $(RMF) Makefile diff -Nru burp-1.3.0+20120214git/manpages/Makefile.in burp-1.3.1/manpages/Makefile.in --- burp-1.3.0+20120214git/manpages/Makefile.in 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/manpages/Makefile.in 2012-02-27 13:57:59.000000000 +0000 @@ -32,6 +32,7 @@ clean: @$(RMF) *~ 1 2 3 *.bak + @$(RMF) Makefile @find . -name .#* -exec $(RMF) {} \; depend: diff -Nru burp-1.3.0+20120214git/README burp-1.3.1/README --- burp-1.3.0+20120214git/README 2012-02-13 13:13:37.000000000 +0000 +++ burp-1.3.1/README 2012-02-27 13:57:59.000000000 +0000 @@ -33,7 +33,7 @@ it is yet time for a new backup. It is probably a good idea to change the numbers for each client, in order to spread the load a bit: MAILTO= -7,27,47 * * * * root /sbin/burp -a t +7,27,47 * * * * root /usr/sbin/burp -a t WINDOWS CLIENT diff -Nru burp-1.3.0+20120214git/src/autoupgrade_client.c burp-1.3.1/src/autoupgrade_client.c --- burp-1.3.0+20120214git/src/autoupgrade_client.c 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/src/autoupgrade_client.c 2012-02-27 14:48:30.000000000 +0000 @@ -32,7 +32,7 @@ //set_win32_backup(&bfd); if(bopen(&bfd, incoming, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, - S_IRUSR | S_IWUSR)<0) + S_IRUSR | S_IWUSR, 0)<=0) { berrno be; logp("Could not open for writing %s: %s\n", @@ -49,12 +49,12 @@ #endif #ifdef HAVE_WIN32 - ret=transfer_gzfile_in(incoming, &bfd, NULL, &rcvdbytes, &sentbytes, - NULL, 0, p1cntr, NULL); + ret=transfer_gzfile_in(NULL, incoming, &bfd, NULL, + &rcvdbytes, &sentbytes, NULL, 0, p1cntr, NULL); bclose(&bfd); #else - ret=transfer_gzfile_in(incoming, NULL, fp, &rcvdbytes, &sentbytes, - NULL, 0, p1cntr, NULL); + ret=transfer_gzfile_in(NULL, incoming, NULL, fp, + &rcvdbytes, &sentbytes, NULL, 0, p1cntr, NULL); close_fp(&fp); #endif end: diff -Nru burp-1.3.0+20120214git/src/backup_phase1_client.c burp-1.3.1/src/backup_phase1_client.c --- burp-1.3.0+20120214git/src/backup_phase1_client.c 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/src/backup_phase1_client.c 2012-02-27 13:57:59.000000000 +0000 @@ -54,9 +54,34 @@ */ if(ff->winattr & FILE_ATTRIBUTE_ENCRYPTED) { - if(ff->type!=FT_DIREND) - logw(p1cntr, "EFS not yet supported: %s", ff->fname); - return 0; +// if(ff->type!=FT_DIREND) +// logw(p1cntr, "EFS not yet supported: %s", ff->fname); +// return 0; + + if(ff->type==FT_REGE + || ff->type==FT_REG + || ff->type==FT_DIRBEGIN) + { + encode_stat(attribs, &ff->statp, ff->winattr); + if(async_write_str(CMD_STAT, attribs) + || async_write_str(CMD_EFS_FILE, ff->fname)) + return -1; + do_filecounter(p1cntr, CMD_EFS_FILE, 1); + if(ff->type==FT_REG) + do_filecounter_bytes(p1cntr, + (unsigned long long)ff->statp.st_size); + return 0; + } + else if(ff->type==FT_DIREND) + return 0; + else + { + // Hopefully, here is never reached. + logw(p1cntr, "EFS type %d not yet supported: %s", + ff->type, + ff->fname); + return 0; + } } #endif diff -Nru burp-1.3.0+20120214git/src/backup_phase1_server.c burp-1.3.1/src/backup_phase1_server.c --- burp-1.3.0+20120214git/src/backup_phase1_server.c 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/src/backup_phase1_server.c 2012-02-27 13:57:59.000000000 +0000 @@ -58,7 +58,8 @@ if(sb.cmd==CMD_FILE || sb.cmd==CMD_ENC_FILE || sb.cmd==CMD_METADATA - || sb.cmd==CMD_ENC_METADATA) + || sb.cmd==CMD_ENC_METADATA + || sb.cmd==CMD_EFS_FILE) do_filecounter_bytes(p1cntr, (unsigned long long)sb.statp.st_size); } @@ -101,7 +102,8 @@ if(p1b.cmd==CMD_FILE || p1b.cmd==CMD_ENC_FILE || p1b.cmd==CMD_METADATA - || p1b.cmd==CMD_ENC_METADATA) + || p1b.cmd==CMD_ENC_METADATA + || p1b.cmd==CMD_EFS_FILE) do_filecounter_bytes(p1cntr, (unsigned long long)p1b.statp.st_size); } @@ -202,7 +204,7 @@ return 0; } -int do_resume(gzFile p1zp, FILE *p2fp, FILE *ucfp, gzFile cmanfp, struct dpth *dpth, struct config *cconf, struct cntr *p1cntr, struct cntr *cntr) +int do_resume(gzFile p1zp, FILE *p2fp, FILE *ucfp, struct dpth *dpth, struct config *cconf, struct cntr *p1cntr, struct cntr *cntr) { int ret=0; struct sbuf p1b; diff -Nru burp-1.3.0+20120214git/src/backup_phase1_server.h burp-1.3.1/src/backup_phase1_server.h --- burp-1.3.0+20120214git/src/backup_phase1_server.h 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/src/backup_phase1_server.h 2012-02-27 13:57:59.000000000 +0000 @@ -2,6 +2,6 @@ #define BACKUP_PHASE1_SERVER_H extern int backup_phase1_server(const char *phase1data, const char *client, struct cntr *p1cntr, struct cntr *cntr, struct config *cconf); -extern int do_resume(gzFile p1zp, FILE *p2fp, FILE *ucfp, gzFile cmanfp, struct dpth *dpth, struct config *cconf, struct cntr *p1cntr, struct cntr *cntr); +extern int do_resume(gzFile p1zp, FILE *p2fp, FILE *ucfp, struct dpth *dpth, struct config *cconf, struct cntr *p1cntr, struct cntr *cntr); #endif diff -Nru burp-1.3.0+20120214git/src/backup_phase2_client.c burp-1.3.1/src/backup_phase2_client.c --- burp-1.3.0+20120214git/src/backup_phase2_client.c 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/src/backup_phase2_client.c 2012-02-27 13:57:59.000000000 +0000 @@ -122,13 +122,13 @@ return r; } -static int send_whole_file_w(const char *fname, const char *datapth, int quick_read, unsigned long long *bytes, const char *encpassword, struct cntr *cntr, int compression, BFILE *bfd, FILE *fp, const char *extrameta, size_t elen) +static int send_whole_file_w(char cmd, const char *fname, const char *datapth, int quick_read, unsigned long long *bytes, const char *encpassword, struct cntr *cntr, int compression, BFILE *bfd, FILE *fp, const char *extrameta, size_t elen) { - if(compression || encpassword) + if((compression || encpassword) && cmd!=CMD_EFS_FILE) return send_whole_file_gz(fname, datapth, quick_read, bytes, encpassword, cntr, compression, bfd, fp, extrameta, elen); else - return send_whole_file(fname, datapth, quick_read, bytes, + return send_whole_file(cmd, fname, datapth, quick_read, bytes, cntr, bfd, fp, extrameta, elen); } @@ -183,7 +183,7 @@ } else if(buf) { - //logp("got: %c:%s\n", cmd, buf); + //logp("now: %c:%s\n", cmd, buf); if(cmd==CMD_DATAPTH) { sb.datapth=buf; @@ -203,7 +203,8 @@ else if(cmd==CMD_FILE || cmd==CMD_ENC_FILE || cmd==CMD_METADATA - || cmd==CMD_ENC_METADATA) + || cmd==CMD_ENC_METADATA + || cmd==CMD_EFS_FILE) { int forget=0; int64_t winattr=0; @@ -234,13 +235,13 @@ } if(conf->min_file_size - && statbuf.st_sizemin_file_size) + && statbuf.st_size<(boffset_t)conf->min_file_size) { logw(cntr, "File size decreased below min_file_size after initial scan: %s", sb.path); forget++; } else if(conf->max_file_size - && statbuf.st_size>conf->max_file_size) + && statbuf.st_size>(boffset_t)conf->max_file_size) { logw(cntr, "File size increased above max_file_size after initial scan: %s", sb.path); forget++; @@ -315,7 +316,7 @@ // send the whole file. if(async_write_str(CMD_STAT, attribs) || async_write_str(cmd, sb.path) - || send_whole_file_w(sb.path, + || send_whole_file_w(cmd, sb.path, NULL, 0, &bytes, conf->encryption_password, cntr, conf->compression, @@ -327,11 +328,7 @@ } else { - //if(cmd==CMD_METADATA - // || cmd==CMD_ENC_METADATA) - do_filecounter(cntr, cmd, 1); - //else - // do_filecounter(cntr, CMD_NEW_FILE, 1); + do_filecounter(cntr, cmd, 1); do_filecounter_bytes(cntr, bytes); do_filecounter_sentbytes(cntr, bytes); } diff -Nru burp-1.3.0+20120214git/src/backup_phase2_server.c burp-1.3.1/src/backup_phase2_server.c --- burp-1.3.0+20120214git/src/backup_phase2_server.c 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/src/backup_phase2_server.c 2012-02-27 13:57:59.000000000 +0000 @@ -20,6 +20,7 @@ //logp("start to receive: %s\n", sb->path); + mk_dpth(dpth, cconf, sb->cmd); if(!(sb->datapth=strdup(dpth->path))) // file data path { log_and_send("out of memory"); @@ -46,7 +47,8 @@ return (cmd==CMD_FILE || cmd==CMD_ENC_FILE || cmd==CMD_METADATA - || cmd==CMD_ENC_METADATA); + || cmd==CMD_ENC_METADATA + || cmd==CMD_EFS_FILE); } static int process_changed_file(struct sbuf *cb, struct sbuf *p1b, const char *currentdata, struct cntr *cntr) @@ -179,13 +181,19 @@ { int oldcompressed=0; + // If the file type changed, I think it is time to back it + // up again (for example, EFS changing to normal file, or + // back again). + if(cb->cmd!=p1b->cmd) + return process_new_file(cb, p1b, p2fp, ucfp, cntr); + // mtime is the actual file data. // ctime is the attributes or meta data. if(cb->statp.st_mtime==p1b->statp.st_mtime && cb->statp.st_ctime==p1b->statp.st_ctime) { // got an unchanged file - //logp("got unchanged file: %s\n", cb->path); + logp("got unchanged file: %s %c %c\n", cb->path, cb->cmd, p1b->cmd); return process_unchanged_file(cb, ucfp, cntr); } @@ -199,7 +207,9 @@ || p1b->cmd==CMD_ENC_METADATA // TODO: make unencrypted metadata use the librsync || cb->cmd==CMD_METADATA - || p1b->cmd==CMD_METADATA) + || p1b->cmd==CMD_METADATA + || cb->cmd==CMD_EFS_FILE + || p1b->cmd==CMD_EFS_FILE) return process_new_file(cb, p1b, p2fp, ucfp, cntr); else @@ -216,6 +226,8 @@ || p1b->cmd==CMD_ENC_FILE || cb->cmd==CMD_ENC_METADATA || p1b->cmd==CMD_ENC_METADATA + || cb->cmd==CMD_EFS_FILE + || p1b->cmd==CMD_EFS_FILE // TODO: make unencrypted metadata use the librsync || cb->cmd==CMD_METADATA || p1b->cmd==CMD_METADATA) @@ -466,10 +478,7 @@ rb->slen=rlen; rbuf=NULL; } - else if(rcmd==CMD_FILE - || rcmd==CMD_ENC_FILE - || rcmd==CMD_METADATA - || rcmd==CMD_ENC_METADATA) + else if(filedata(rcmd)) { rb->cmd=rcmd; rb->plen=rlen; @@ -569,8 +578,7 @@ if(!(p2fp=open_file(phase2data, "r+b"))) goto error; - if(resume && do_resume(p1zp, p2fp, ucfp, cmanfp, dpth, cconf, - p1cntr, cntr)) + if(resume && do_resume(p1zp, p2fp, ucfp, dpth, cconf, p1cntr, cntr)) goto error; logp("Begin phase2 (receive file data)\n"); diff -Nru burp-1.3.0+20120214git/src/bedup.c burp-1.3.1/src/bedup.c --- burp-1.3.0+20120214git/src/bedup.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/bedup.c 2012-02-27 15:36:40.000000000 +0000 @@ -147,7 +147,7 @@ while(1) { - if((ogot=fread(obuf, 1, FULL_CHUNK, *ofp))<0) return 0; + ogot=fread(obuf, 1, FULL_CHUNK, *ofp); ngot=fread(nbuf, 1, FULL_CHUNK, *nfp); if(ogot!=ngot) return 0; for(i=0; ipvContext)); + if(ret) bfd->mode=BF_CLOSED; + else bfd->mode=BF_READ; + goto end; + } + else { - int ret=0; - if(p_OpenEncryptedFileRawW && p_MultiByteToWideChar) - { - // unicode open for open existing read - ret=OpenEncryptedFileRawW((LPCWSTR)win32_fname_wchar, - CREATE_FOR_EXPORT, - &(bfd->pvContext)); - if(ret) bfd->mode=BF_CLOSED; - else bfd->mode=BF_READ; - goto end; - } - else - { - // ascii open - ret=OpenEncryptedFileRawA(win32_fname, - CREATE_FOR_EXPORT, - &(bfd->pvContext)); - if(ret) bfd->mode=BF_CLOSED; - else bfd->mode=BF_READ; - goto end; - } + // ascii open + ret=p_OpenEncryptedFileRawA(win32_fname, + ulFlags, &(bfd->pvContext)); + if(ret) bfd->mode=BF_CLOSED; + else bfd->mode=BF_READ; + goto end; } + end: if(win32_fname_wchar) free(win32_fname_wchar); if(win32_fname) free(win32_fname); return bfd->mode == BF_CLOSED ? -1 : 1; } -int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode) +int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode, int isdir) { char *win32_fname=NULL; char *win32_fname_wchar=NULL; @@ -136,7 +134,7 @@ DWORD dwaccess, dwflags, dwshare; if(bfd->winattr & FILE_ATTRIBUTE_ENCRYPTED) - return bopen_encrypted(bfd, fname, flags, mode); + return bopen_encrypted(bfd, fname, flags, mode, isdir); if (!(p_CreateFileA || p_CreateFileW)) { return 0; @@ -262,6 +260,14 @@ return bfd->mode == BF_CLOSED ? -1 : 1; } +static int bclose_encrypted(BFILE *bfd) +{ + CloseEncryptedFileRaw(bfd->pvContext); + bfd->pvContext=NULL; + bfd->mode = BF_CLOSED; + return 0; +} + /* * Returns 0 on success * -1 on error @@ -278,6 +284,9 @@ return 0; } + if(bfd->winattr & FILE_ATTRIBUTE_ENCRYPTED) + return bclose_encrypted(bfd); + /* * We need to tell the API to release the buffer it * allocated in lpContext. We do so by calling the diff -Nru burp-1.3.0+20120214git/src/bfile.h burp-1.3.1/src/bfile.h --- burp-1.3.0+20120214git/src/bfile.h 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/bfile.h 2012-02-27 13:57:59.000000000 +0000 @@ -61,7 +61,7 @@ void binit(BFILE *bfd, int64_t winattr); bool set_win32_backup(BFILE *bfd); bool have_win32_api(); -int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode); +int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode, int isdir); int bclose(BFILE *bfd); ssize_t bread(BFILE *bfd, void *buf, size_t count); ssize_t bwrite(BFILE *bfd, void *buf, size_t count); diff -Nru burp-1.3.0+20120214git/src/client.c burp-1.3.1/src/client.c --- burp-1.3.0+20120214git/src/client.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/client.c 2012-02-27 15:36:40.000000000 +0000 @@ -124,9 +124,23 @@ #endif } +static int server_supports(const char *feat, const char *wanted) +{ + if(strstr(feat, wanted)) return 1; + return 0; +} + +static int server_supports_autoupgrade(const char *feat) +{ + // 1.3.0 servers did not list the features, but the only feature + // that was supported was autoupgrade. + if(!strcmp(feat, "extra_comms_begin ok")) return 1; + return server_supports(feat, ":autoupgrade:"); +} + static int s_server_session_id_context=1; -int client(struct config *conf, enum action act, const char *backup, const char *restoreprefix, const char *regex, int forceoverwrite) +int client(struct config *conf, enum action act, const char *backup, const char *restoreprefix, const char *regex, int forceoverwrite, int strip) { int ret=0; int rfd=-1; @@ -185,22 +199,46 @@ if(!ret && act!=ACTION_ESTIMATE) { + char cmd; + size_t len=0; + char *feat=NULL; ret=authorise_client(conf, &p1cntr); - if(async_write_str(CMD_GEN, "extra_comms_begin") - || async_read_expect(CMD_GEN, "extra_comms_begin ok")) + if(async_write_str(CMD_GEN, "extra_comms_begin")) { logp("Problem requesting extra_comms_begin\n"); ret=-1; } + // Servers greater than 1.3.0 will list the extra_comms + // features they support. + else if(async_read(&cmd, &feat, &len)) + { + logp("Problem reading response to extra_comms_begin\n"); + ret=-1; + } + else if(cmd!=CMD_GEN) + { + logp("Unexpected command from server when reading response to extra_comms_begin: %c:%s\n", cmd, feat); + ret=-1; + } + else if(strncmp(feat, + "extra_comms_begin ok", strlen("extra_comms_begin ok"))) + { + logp("Unexpected response from server when reading response to extra_comms_begin: %c:%s\n", cmd, feat); + ret=-1; + } // Can add extra bits here. The first extra bit is the // autoupgrade stuff. - if(!ret && conf->autoupgrade_dir && conf->autoupgrade_os) - ret=autoupgrade_client(conf, &p1cntr); + if(!ret && server_supports_autoupgrade(feat)) + { + if(conf->autoupgrade_dir && conf->autoupgrade_os) + ret=autoupgrade_client(conf, &p1cntr); + } - if(!ret) ret=incexc_send_client(conf, &p1cntr); + if(!ret && server_supports(feat, ":incexc:")) + ret=incexc_send_client(conf, &p1cntr); if(async_write_str(CMD_GEN, "extra_comms_end") || async_read_expect(CMD_GEN, "extra_comms_end ok")) @@ -208,6 +246,8 @@ logp("Problem requesting extra_comms_end\n"); ret=-1; } + + if(feat) free(feat); } if(!ret) @@ -284,7 +324,7 @@ if(!ret && do_restore_client(conf, act, backup, restoreprefix, regex, forceoverwrite, - &p1cntr, &cntr)) ret=-1; + strip, &p1cntr, &cntr)) ret=-1; if((conf->restore_script_post_run_on_fail || !ret) && conf->restore_script_post) { diff -Nru burp-1.3.0+20120214git/src/cmd.h burp-1.3.1/src/cmd.h --- burp-1.3.0+20120214git/src/cmd.h 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/cmd.h 2012-02-27 13:57:59.000000000 +0000 @@ -1,39 +1,6 @@ #ifndef _CMD_H #define _CMD_H -// used in CMD_*: -// a -// c -// d -// e -// E -// f -// g -// G -// h -// H -// i -// j -// J -// l -// L -// m -// M -// n -// p -// P -// r -// s -// t -// u -// w -// x -// X -// y -// Y -// z -// Z - /* These things appear at the beginning of each line of communication on the network, and in the manifest. */ @@ -50,6 +17,7 @@ #define CMD_SPECIAL 's' /* Fifo, socket, device node... */ #define CMD_METADATA 'm' /* Extra meta data */ #define CMD_ENC_METADATA 'n' /* Encrypted extra meta data */ +#define CMD_EFS_FILE 'k' /* Windows EFS file */ // Commands #define CMD_GEN 'c' /* Generic command */ @@ -86,6 +54,9 @@ #define CMD_SPECIAL_CHANGED 'h' #define CMD_SPECIAL_SAME 'H' +#define CMD_EFS_FILE_CHANGED 'I' +#define CMD_EFS_FILE_SAME 'K' + #define CMD_TIMESTAMP 'b' /* Backup timestamp (in response to list) */ diff -Nru burp-1.3.0+20120214git/src/counter.c burp-1.3.1/src/counter.c --- burp-1.3.0+20120214git/src/counter.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/counter.c 2012-02-27 13:57:59.000000000 +0000 @@ -44,6 +44,10 @@ c->special_same=0; c->special_changed=0; + c->efs=0; + c->efs_same=0; + c->efs_changed=0; + c->warning=0; c->byte=0; c->recvbyte=0; @@ -64,6 +68,7 @@ case CMD_SOFT_LINK: return CMD_SOFT_LINK_SAME; case CMD_HARD_LINK: return CMD_HARD_LINK_SAME; case CMD_SPECIAL: return CMD_SPECIAL_SAME; + case CMD_EFS_FILE: return CMD_EFS_FILE_SAME; } return CMD_ERROR; } @@ -80,6 +85,7 @@ case CMD_SOFT_LINK: return CMD_SOFT_LINK_CHANGED; case CMD_HARD_LINK: return CMD_HARD_LINK_CHANGED; case CMD_SPECIAL: return CMD_SPECIAL_CHANGED; + case CMD_EFS_FILE: return CMD_EFS_FILE_CHANGED; } return CMD_ERROR; } @@ -194,6 +200,13 @@ case CMD_SPECIAL_CHANGED: ++(c->special_changed); ++(c->total_changed); break; + case CMD_EFS_FILE: + ++(c->efs); ++(c->total); break; + case CMD_EFS_FILE_SAME: + ++(c->efs_same); ++(c->total_same); break; + case CMD_EFS_FILE_CHANGED: + ++(c->efs_changed); ++(c->total_changed); break; + case CMD_WARNING: ++(c->warning); return; // do not add to total case CMD_ERROR: @@ -310,6 +323,7 @@ restore_print("Soft links:", c->slink); restore_print("Hard links:", c->hlink); restore_print("Special files:", c->special); + restore_print("EFS files:", c->efs); restore_print("Grand total:", c->total); } else if(act==ACTION_VERIFY) @@ -322,6 +336,7 @@ restore_print("Verified soft links:", c->slink); restore_print("Verified hard links:", c->hlink); restore_print("Verified special:", c->special); + restore_print("Verified EFS files:", c->efs); restore_print("Grand total:", c->total); } else @@ -382,6 +397,13 @@ p1c->special, client?FORMAT_CLIENT_NODE:FORMAT_SERVER); + quint_print("EFS files:", + c->efs, + c->efs_changed, + c->efs_same, + p1c->efs, + client?FORMAT_CLIENT_NODE:FORMAT_SERVER); + quint_print("Grand total:", c->total, c->total_changed, diff -Nru burp-1.3.0+20120214git/src/counter.h burp-1.3.1/src/counter.h --- burp-1.3.0+20120214git/src/counter.h 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/counter.h 2012-02-27 13:57:59.000000000 +0000 @@ -41,6 +41,10 @@ unsigned long long special_same; unsigned long long special_changed; + unsigned long long efs; + unsigned long long efs_same; + unsigned long long efs_changed; + unsigned long long warning; unsigned long long byte; unsigned long long recvbyte; diff -Nru burp-1.3.0+20120214git/src/dpth.c burp-1.3.1/src/dpth.c --- burp-1.3.0+20120214git/src/dpth.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/dpth.c 2012-02-27 13:57:59.000000000 +0000 @@ -8,11 +8,13 @@ #include "dpth.h" #include "find.h" -static void mk_dpth(struct dpth *dpth, struct config *cconf) +void mk_dpth(struct dpth *dpth, struct config *cconf, char cmd) { // file data snprintf(dpth->path, sizeof(dpth->path), "%04X/%04X/%04X%s", - dpth->prim, dpth->seco, dpth->tert, cconf->compression?".gz":""); + dpth->prim, dpth->seco, dpth->tert, + /* Because of the way EFS works, it cannot be compressed. */ + (cconf->compression && cmd!=CMD_EFS_FILE)?".gz":""); } static void mk_dpth_prim(struct dpth *dpth) @@ -60,7 +62,7 @@ { // Could not open directory. Set all zeros. dpth->prim=0; - mk_dpth(dpth, cconf); +// mk_dpth(dpth, cconf); return 0; } mk_dpth_prim(dpth); @@ -73,7 +75,7 @@ { // Could not open directory. Set zero. dpth->seco=0; - mk_dpth(dpth, cconf); +// mk_dpth(dpth, cconf); free(tmp); return 0; } @@ -88,7 +90,7 @@ { // Could not open directory. Set zero. dpth->tert=0; - mk_dpth(dpth, cconf); +// mk_dpth(dpth, cconf); free(tmp); return 0; } @@ -128,7 +130,7 @@ } } //printf("before incr_dpth: %s %04X/%04X/%04X\n", dpth->path, dpth->prim, dpth->seco, dpth->tert); - mk_dpth(dpth, cconf); +// mk_dpth(dpth, cconf); //printf("after incr_dpth: %s\n", dpth->path); return 0; } @@ -151,6 +153,6 @@ dpth->prim=a; dpth->seco=b; dpth->tert=c; - mk_dpth(dpth, cconf); +// mk_dpth(dpth, cconf); return 0; } diff -Nru burp-1.3.0+20120214git/src/dpth.h burp-1.3.1/src/dpth.h --- burp-1.3.0+20120214git/src/dpth.h 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/dpth.h 2012-02-27 13:57:59.000000000 +0000 @@ -13,5 +13,6 @@ extern int init_dpth(struct dpth *dpth, const char *currentdata, struct config *cconf); extern int incr_dpth(struct dpth *dpth, struct config *cconf); extern int set_dpth_from_string(struct dpth *dpth, const char *datapath, struct config *conf); +extern void mk_dpth(struct dpth *dpth, struct config *cconf, char cmd); #endif diff -Nru burp-1.3.0+20120214git/src/find.c burp-1.3.1/src/find.c --- burp-1.3.0+20120214git/src/find.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/find.c 2012-02-27 13:57:59.000000000 +0000 @@ -261,8 +261,10 @@ sizeleft=ff_pkt->statp.st_size; // If the user specified a minimum or maximum file size, obey it. - if(conf->min_file_size && sizeleftmin_file_size) return 0; - if(conf->max_file_size && sizeleft>conf->max_file_size) return 0; + if(conf->min_file_size && sizeleft<(boffset_t)conf->min_file_size) + return 0; + if(conf->max_file_size && sizeleft>(boffset_t)conf->max_file_size) + return 0; /* Don't bother opening empty, world readable files. Also do not open files when archive is meant for /dev/null. */ diff -Nru burp-1.3.0+20120214git/src/handy.c burp-1.3.1/src/handy.c --- burp-1.3.0+20120214git/src/handy.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/handy.c 2012-02-27 15:36:40.000000000 +0000 @@ -336,7 +336,8 @@ { #ifdef HAVE_WIN32 binit(bfd, winattr); - if(bopen(bfd, fname, O_RDONLY | O_BINARY | O_NOATIME, 0)<0) + if(bopen(bfd, fname, O_RDONLY | O_BINARY | O_NOATIME, 0, + (winattr & FILE_ATTRIBUTE_DIRECTORY))<=0) { berrno be; logw(cntr, @@ -579,7 +580,42 @@ return ret; } -int send_whole_file(const char *fname, const char *datapth, int quick_read, unsigned long long *bytes, struct cntr *cntr, BFILE *bfd, FILE *fp, const char *extrameta, size_t elen) +#ifdef HAVE_WIN32 +struct winbuf +{ + MD5_CTX *md5; + int quick_read; + const char *datapth; + struct cntr *cntr; + unsigned long long *bytes; +}; + +static DWORD WINAPI write_efs(PBYTE pbData, PVOID pvCallbackContext, ULONG ulLength) +{ + struct winbuf *mybuf=(struct winbuf *)pvCallbackContext; + (*(mybuf->bytes))+=ulLength; + if(!MD5_Update(mybuf->md5, pbData, ulLength)) + { + logp("MD5_Update() failed\n"); + return ERROR_FUNCTION_FAILED; + } + if(async_write(CMD_APPEND, (const char *)pbData, ulLength)) + { + return ERROR_FUNCTION_FAILED; + } + if(mybuf->quick_read) + { + int qr; + if((qr=do_quick_read(mybuf->datapth, mybuf->cntr))<0) + return ERROR_FUNCTION_FAILED; + if(qr) // client wants to interrupt + return ERROR_FUNCTION_FAILED; + } + return ERROR_SUCCESS; +} +#endif + +int send_whole_file(char cmd, const char *fname, const char *datapth, int quick_read, unsigned long long *bytes, struct cntr *cntr, BFILE *bfd, FILE *fp, const char *extrameta, size_t elen) { int ret=0; size_t s=0; @@ -625,8 +661,30 @@ else { #ifdef HAVE_WIN32 - if(!ret) while((s=(uint32_t)bread(bfd, buf, 4096))>0) + if(!ret && cmd==CMD_EFS_FILE) + { + struct winbuf mybuf; + mybuf.md5=&md5; + mybuf.quick_read=quick_read; + mybuf.datapth=datapth; + mybuf.cntr=cntr; + mybuf.bytes=bytes; + // The EFS read function, ReadEncryptedFileRaw(), + // works in an annoying way. You have to give it a + // function that it calls repeatedly every time the + // read buffer is called. + // So ReadEncryptedFileRaw() will not return until + // it has read the whole file. I have no idea why + // they do not have a plain 'read()' function for it. + + ReadEncryptedFileRaw((PFE_EXPORT_FUNC)write_efs, + &mybuf, bfd->pvContext); + } + + if(!ret && cmd!=CMD_EFS_FILE) { + while((s=(uint32_t)bread(bfd, buf, 4096))>0) + { *bytes+=s; if(!MD5_Update(&md5, buf, s)) { @@ -653,6 +711,7 @@ break; } } + } } #else //printf("send_whole_file: %s\n", fname); @@ -1255,6 +1314,8 @@ snprintf(buf, len, "Meta data changed"); break; case CMD_METADATA_SAME: snprintf(buf, len, "Meta data unchanged"); break; + case CMD_ENC_METADATA: + snprintf(buf, len, "Encrypted meta data"); break; case CMD_ENC_METADATA_CHANGED: snprintf(buf, len, "Encrypted meta data changed"); break; case CMD_ENC_METADATA_SAME: @@ -1263,6 +1324,12 @@ snprintf(buf, len, "Encrypted file changed"); break; case CMD_ENC_FILE_SAME: snprintf(buf, len, "Encrypted file unchanged"); break; + case CMD_EFS_FILE: + snprintf(buf, len, "Windows EFS file"); break; + case CMD_EFS_FILE_SAME: + snprintf(buf, len, "Windows EFS file changed"); break; + case CMD_EFS_FILE_CHANGED: + snprintf(buf, len, "Windows EFS file unchanged"); break; case CMD_DIRECTORY_CHANGED: snprintf(buf, len, "Directory changed"); break; case CMD_DIRECTORY_SAME: diff -Nru burp-1.3.0+20120214git/src/handy.h burp-1.3.1/src/handy.h --- burp-1.3.0+20120214git/src/handy.h 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/handy.h 2012-02-27 15:36:40.000000000 +0000 @@ -19,7 +19,7 @@ extern int open_file_for_send(BFILE *bfd, FILE **fp, const char *fname, int64_t winattr, struct cntr *cntr); extern void close_file_for_send(BFILE *bfd, FILE **fp); extern int send_whole_file_gz(const char *fname, const char *datapth, int quick_read, unsigned long long *bytes, const char *encpassword, struct cntr *cntr, int compression, BFILE *bfd, FILE *fp, const char *extrameta, size_t elen); -extern int send_whole_file(const char *fname, const char *datapth, int quick_read, unsigned long long *bytes, struct cntr *cntr, BFILE *bfd, FILE *fp, const char *extrameta, size_t elen); +extern int send_whole_file(char cmd, const char *fname, const char *datapth, int quick_read, unsigned long long *bytes, struct cntr *cntr, BFILE *bfd, FILE *fp, const char *extrameta, size_t elen); extern int set_non_blocking(int fd); extern int set_blocking(int fd); extern int do_rename(const char *oldpath, const char *newpath); diff -Nru burp-1.3.0+20120214git/src/list_client.c burp-1.3.1/src/list_client.c --- burp-1.3.0+20120214git/src/list_client.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/list_client.c 2012-02-27 13:57:59.000000000 +0000 @@ -157,6 +157,7 @@ else if(fcmd==CMD_DIRECTORY || fcmd==CMD_FILE || fcmd==CMD_ENC_FILE + || fcmd==CMD_EFS_FILE || fcmd==CMD_SPECIAL) { *ls='\0'; diff -Nru burp-1.3.0+20120214git/src/Makefile.in burp-1.3.1/src/Makefile.in --- burp-1.3.0+20120214git/src/Makefile.in 2012-02-13 13:13:38.000000000 +0000 +++ burp-1.3.1/src/Makefile.in 2012-02-27 15:36:40.000000000 +0000 @@ -147,7 +147,8 @@ clean: libtool-clean @$(RMF) burp core core.* a.out *.o *.bak *~ *.intpro *.extpro 1 2 3 - @$(RMF) bedup static-burp static-bedup + @$(RMF) bedup static-burp static-bedup config.h + @$(RMF) Makefile # @if test -f win32/Makefile -a "${GMAKE}" != "none"; then \ # (cd win32; $(GMAKE) clean); \ # fi @@ -170,13 +171,12 @@ fi install: all + rm -f $(DESTDIR)/sbin/burp ; \ + rm -f $(DESTDIR)/sbin/bedup ; \ + rm -f $(DESTDIR)/usr/sbin/burp ; \ + rm -f $(DESTDIR)/usr/sbin/bedup ; \ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) burp $(DESTDIR)$(sbindir)/burp $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) bedup $(DESTDIR)$(sbindir)/bedup - @if [ $(sbindir) != /usr/sbin ] ; then \ - rm -f $(DESTDIR)/usr/sbin/burp ; \ - mkdir -p $(DESTDIR)/usr/sbin ; \ - ln -sfT $(sbindir)/burp $(DESTDIR)/usr/sbin/burp ; \ - fi @if test -f static-burp; then \ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) static-burp $(DESTDIR)$(sbindir)/static-burp; \ fi diff -Nru burp-1.3.0+20120214git/src/msg.c burp-1.3.1/src/msg.c --- burp-1.3.0+20120214git/src/msg.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/msg.c 2012-02-27 13:57:59.000000000 +0000 @@ -4,6 +4,7 @@ #include "counter.h" #include "asyncio.h" #include "handy.h" +#include "sbuf.h" int send_msg_fp(FILE *fp, char cmd, const char *buf, size_t s) { @@ -116,7 +117,70 @@ return 0; } -int transfer_gzfile_in(const char *path, BFILE *bfd, FILE *fp, unsigned long long *rcvd, unsigned long long *sent, const char *encpassword, int enccompressed, struct cntr *cntr, char **metadata) +#ifdef HAVE_WIN32 + +struct winbuf +{ + unsigned long long *rcvd; + unsigned long long *sent; + struct cntr *cntr; +}; + +static DWORD WINAPI read_efs(PBYTE pbData, PVOID pvCallbackContext, PULONG ulLength) +{ + char cmd='\0'; + size_t len=0; + char *buf=NULL; + struct winbuf *mybuf=(struct winbuf *)pvCallbackContext; + + while(1) + { + if(async_read(&cmd, &buf, &len)) + return ERROR_FUNCTION_FAILED; + (*(mybuf->rcvd))+=len; + + switch(cmd) + { + case CMD_APPEND: + memcpy(pbData, buf, len); + *ulLength=(ULONG)len; + (*(mybuf->sent))+=len; + free(buf); + return ERROR_SUCCESS; + case CMD_END_FILE: + *ulLength=0; + free(buf); + return ERROR_SUCCESS; + case CMD_WARNING: + logp("WARNING: %s\n", buf); + do_filecounter(mybuf->cntr, cmd, 0); + free(buf); + continue; + default: + logp("unknown append cmd: %c\n", cmd); + free(buf); + break; + } + } + return ERROR_FUNCTION_FAILED; +} + +static int transfer_efs_in(BFILE *bfd, unsigned long long *rcvd, unsigned long long *sent, struct cntr *cntr) +{ + int ret=0; + struct winbuf mybuf; + mybuf.rcvd=rcvd; + mybuf.sent=sent; + mybuf.cntr=cntr; + if((ret=WriteEncryptedFileRaw((PFE_IMPORT_FUNC)read_efs, + &mybuf, bfd->pvContext))) + logp("WriteEncryptedFileRaw returned %d\n", ret); + return ret; +} + +#endif + +int transfer_gzfile_in(struct sbuf *sb, const char *path, BFILE *bfd, FILE *fp, unsigned long long *rcvd, unsigned long long *sent, const char *encpassword, int enccompressed, struct cntr *cntr, char **metadata) { char cmd; char *buf=NULL; @@ -137,6 +201,12 @@ //unsigned char checksum[MD5_DIGEST_LENGTH+1]; //logp("in transfer_gzfile_in\n"); + +#ifdef HAVE_WIN32 + if(sb && sb->cmd==CMD_EFS_FILE) + return transfer_efs_in(bfd, rcvd, sent, cntr); +#endif + //if(!MD5_Init(&md5)) //{ // logp("MD5_Init() failed"); @@ -173,7 +243,7 @@ inflateEnd(&zstrm); return -1; } - rcvd+=len; + (*rcvd)+=len; //logp("transfer in: %c:%s\n", cmd, buf); switch(cmd) diff -Nru burp-1.3.0+20120214git/src/msg.h burp-1.3.1/src/msg.h --- burp-1.3.0+20120214git/src/msg.h 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/msg.h 2012-02-27 13:57:59.000000000 +0000 @@ -6,7 +6,7 @@ extern int send_msg_fp(FILE *fp, char cmd, const char *buf, size_t s); extern int send_msg_zp(gzFile zp, char cmd, const char *buf, size_t s); -extern int transfer_gzfile_in(const char *path, BFILE *bfd, FILE *fp, unsigned long long *rcvd, unsigned long long *sent, const char *encpassword, int enccompressed, struct cntr *cntr, char **metadata); +extern int transfer_gzfile_in(struct sbuf *sb, const char *path, BFILE *bfd, FILE *fp, unsigned long long *rcvd, unsigned long long *sent, const char *encpassword, int enccompressed, struct cntr *cntr, char **metadata); extern FILE *open_file(const char *fname, const char *mode); extern gzFile gzopen_file(const char *fname, const char *mode); diff -Nru burp-1.3.0+20120214git/src/prog.c burp-1.3.1/src/prog.c --- burp-1.3.0+20120214git/src/prog.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/prog.c 2012-02-27 13:57:59.000000000 +0000 @@ -119,6 +119,7 @@ #endif int forking=1; int gotlock=0; + int strip=0; char *logfile=NULL; struct config conf; int forceoverwrite=0; @@ -131,7 +132,7 @@ init_log(argv[0]); - while((option=getopt(argc, argv, "a:b:c:d:hfFinr:l:v?"))!=-1) + while((option=getopt(argc, argv, "a:b:c:d:hfFinr:s:l:v?"))!=-1) { switch(option) { @@ -186,6 +187,9 @@ case 'r': regex=optarg; break; + case 's': + strip=atoi(optarg); + break; case 'l': logfile=optarg; break; @@ -253,7 +257,7 @@ { logp("before client\n"); ret=client(&conf, act, backup, - restoreprefix, regex, forceoverwrite); + restoreprefix, regex, forceoverwrite, strip); logp("after client\n"); } diff -Nru burp-1.3.0+20120214git/src/prog.h burp-1.3.1/src/prog.h --- burp-1.3.0+20120214git/src/prog.h 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/prog.h 2012-02-27 13:57:59.000000000 +0000 @@ -27,6 +27,7 @@ extern int server(struct config *conf, const char *configfile, int forking, int daemon, char **logfile); extern int client(struct config *conf, enum action act, const char *backup, - const char *restoreprefix, const char *regex, int forceoverwrite); + const char *restoreprefix, const char *regex, int forceoverwrite, + int strip); #endif // _PROG_H diff -Nru burp-1.3.0+20120214git/src/readwrite.txt burp-1.3.1/src/readwrite.txt --- burp-1.3.0+20120214git/src/readwrite.txt 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/readwrite.txt 2012-02-27 13:57:59.000000000 +0000 @@ -20,4 +20,4 @@ Server make new revfile -> gzip file, file yes Server make new revfile -> file, file yes Server restore file -> file, gzip fd yes -Client restore file -> gzip fd, file no +Client restore file -> gzip fd, file yes diff -Nru burp-1.3.0+20120214git/src/restore_client.c burp-1.3.1/src/restore_client.c --- burp-1.3.0+20120214git/src/restore_client.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/restore_client.c 2012-02-27 13:57:59.000000000 +0000 @@ -28,7 +28,10 @@ // If it is file data, get the server // to interrupt the flow and move on. - if((sb->cmd!=CMD_FILE && sb->cmd!=CMD_ENC_FILE) || !(sb->datapth)) + if((sb->cmd!=CMD_FILE + && sb->cmd!=CMD_ENC_FILE + && sb->cmd!=CMD_EFS_FILE) + || !(sb->datapth)) return 0; if(async_write_str(CMD_INTERRUPT, sb->datapth)) @@ -141,13 +144,13 @@ if(S_ISDIR(sb->statp.st_mode)) { mkdir(rpath, 0777); - bopenret=bopen(&bfd, rpath, O_WRONLY | O_BINARY, 0); + bopenret=bopen(&bfd, rpath, O_WRONLY | O_BINARY, 0, 1); } else bopenret=bopen(&bfd, rpath, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, - S_IRUSR | S_IWUSR); - if(bopenret<0) + S_IRUSR | S_IWUSR, 0); + if(bopenret<=0) { berrno be; char msg[256]=""; @@ -193,7 +196,7 @@ if(metadata) { - ret=transfer_gzfile_in(fname, NULL, NULL, + ret=transfer_gzfile_in(sb, fname, NULL, NULL, &rcvdbytes, &sentbytes, encpassword, enccompressed, cntr, metadata); *metalen=sentbytes; @@ -204,12 +207,12 @@ else { #ifdef HAVE_WIN32 - ret=transfer_gzfile_in(fname, &bfd, NULL, + ret=transfer_gzfile_in(sb, fname, &bfd, NULL, &rcvdbytes, &sentbytes, encpassword, enccompressed, cntr, NULL); bclose(&bfd); #else - ret=transfer_gzfile_in(fname, NULL, fp, + ret=transfer_gzfile_in(sb, fname, NULL, fp, &rcvdbytes, &sentbytes, encpassword, enccompressed, cntr, NULL); close_fp(&fp); @@ -467,7 +470,46 @@ return ret; } -int do_restore_client(struct config *conf, enum action act, const char *backup, const char *restoreprefix, const char *restoreregex, int forceoverwrite, struct cntr *p1cntr, struct cntr *cntr) +/* Return 1 for ok, -1 for error, 0 for too many components stripped. */ +static int strip_path_components(struct sbuf *sb, char **path, int strip, struct cntr *cntr) +{ + int s=0; + char *tmp=NULL; + char *cp=*path; + char *dp=NULL; + for(s=0; cp && *cp && scmd==CMD_FILE || sb->cmd==CMD_ENC_FILE || sb->cmd==CMD_METADATA - || sb->cmd==CMD_ENC_METADATA) + || sb->cmd==CMD_ENC_METADATA + || sb->cmd==CMD_EFS_FILE) { return restore_file(arr, a, i, sb->datapth, sb->path, tmppath1, tmppath2, act, diff -Nru burp-1.3.0+20120214git/src/sbuf.c burp-1.3.1/src/sbuf.c --- burp-1.3.0+20120214git/src/sbuf.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/sbuf.c 2012-02-27 13:57:59.000000000 +0000 @@ -121,7 +121,8 @@ else if(!phase1 && (sb->cmd==CMD_FILE || sb->cmd==CMD_ENC_FILE || sb->cmd==CMD_METADATA - || sb->cmd==CMD_ENC_METADATA)) + || sb->cmd==CMD_ENC_METADATA + || sb->cmd==CMD_EFS_FILE)) { char cmd; if((ars=async_read_fp(fp, zp, &cmd, @@ -164,7 +165,8 @@ if(write_endfile && (sb->cmd==CMD_FILE || sb->cmd==CMD_ENC_FILE || sb->cmd==CMD_METADATA - || sb->cmd==CMD_ENC_METADATA)) + || sb->cmd==CMD_ENC_METADATA + || sb->cmd==CMD_EFS_FILE)) { if(send_msg_fp(mp, CMD_END_FILE, sb->endfile, sb->elen)) return -1; @@ -189,7 +191,8 @@ if(write_endfile && (sb->cmd==CMD_FILE || sb->cmd==CMD_ENC_FILE || sb->cmd==CMD_METADATA - || sb->cmd==CMD_ENC_METADATA)) + || sb->cmd==CMD_ENC_METADATA + || sb->cmd==CMD_EFS_FILE)) { if(send_msg_zp(zp, CMD_END_FILE, sb->endfile, sb->elen)) return -1; diff -Nru burp-1.3.0+20120214git/src/server.c burp-1.3.1/src/server.c --- burp-1.3.0+20120214git/src/server.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/server.c 2012-02-27 15:36:40.000000000 +0000 @@ -958,20 +958,42 @@ long min_ver=0; long cli_ver=0; long ser_ver=0; + long feat_list_ver=0; if((min_ver=version_to_long("1.2.7"))<0 || (cli_ver=version_to_long(cversion))<0 - || (ser_ver=version_to_long(VERSION))<0) + || (ser_ver=version_to_long(VERSION))<0 + || (feat_list_ver=version_to_long("1.3.0"))<0) return -1; // Clients before 1.2.7 did not know how to do extra comms, so skip // this section for them. if(cli_ver < min_ver) return 0; - if(async_read_expect(CMD_GEN, "extra_comms_begin") - || async_write_str(CMD_GEN, "extra_comms_begin ok")) + if(async_read_expect(CMD_GEN, "extra_comms_begin")) { - logp("problem in extra_comms\n"); + logp("problem reading in extra_comms\n"); return -1; } + // Want to tell the clients the extra comms features that are + // supported, so that new clients are more likely to work with old + // servers. + if(cli_ver==feat_list_ver) + { + // 1.3.0 did not support the feature list. + if(async_write_str(CMD_GEN, "extra_comms_begin ok")) + { + logp("problem writing in extra_comms\n"); + return -1; + } + } + else + { + if(async_write_str(CMD_GEN, + "extra_comms_begin ok:autoupgrade:incexc:")) + { + logp("problem in extra_comms\n"); + return -1; + } + } while(1) { @@ -1066,6 +1088,7 @@ // Reload global config, in case things have changed. This means that // the server does not need to be restarted for most config changes. init_config(&conf); + init_config(&cconf); if(load_config(configfile, &conf, 1)) return -1; if(!(sbio=BIO_new_socket(*cfd, BIO_NOCLOSE)) diff -Nru burp-1.3.0+20120214git/src/win32/compat/compat.cpp burp-1.3.1/src/win32/compat/compat.cpp --- burp-1.3.0+20120214git/src/win32/compat/compat.cpp 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/win32/compat/compat.cpp 2012-02-27 13:57:59.000000000 +0000 @@ -1175,6 +1175,8 @@ opendir(const char *path) { ssize_t len=0; + char *tspec=NULL; + /* enough space for VSS !*/ int max_len = strlen(path) + MAX_PATH; _dir *rval = NULL; @@ -1183,11 +1185,14 @@ return NULL; } - rval = (_dir *)malloc(sizeof(_dir)); + if(!(rval = (_dir *)malloc(sizeof(_dir)))) + return NULL; memset (rval, 0, sizeof (_dir)); - if (rval == NULL) return NULL; - char *tspec = (char *)malloc(max_len); - if (tspec == NULL) return NULL; + if(!(tspec = (char *)malloc(max_len))) + { + free(rval); + return NULL; + } conv_unix_to_win32_path(path, tspec, max_len); diff -Nru burp-1.3.0+20120214git/src/win32/compat/winapi.c burp-1.3.1/src/win32/compat/winapi.c --- burp-1.3.0+20120214git/src/win32/compat/winapi.c 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/win32/compat/winapi.c 2012-02-27 13:57:59.000000000 +0000 @@ -44,12 +44,6 @@ t_OpenEncryptedFileRawA p_OpenEncryptedFileRawA = NULL; t_OpenEncryptedFileRawW p_OpenEncryptedFileRawW = NULL; -t_CloseEncryptedFileRawA p_CloseEncryptedFileRawA = NULL; -t_CloseEncryptedFileRawW p_CloseEncryptedFileRawW = NULL; -t_ReadEncryptedFileRawA p_ReadEncryptedFileRawA = NULL; -t_ReadEncryptedFileRawW p_ReadEncryptedFileRawW = NULL; -t_WriteEncryptedFileRawA p_WriteEncryptedFileRawA = NULL; -t_WriteEncryptedFileRawW p_WriteEncryptedFileRawW = NULL; t_wunlink p_wunlink = NULL; t_wmkdir p_wmkdir = NULL; @@ -115,11 +109,6 @@ p_CreateFileA = (t_CreateFileA)GetProcAddress(hLib, "CreateFileA"); p_CreateDirectoryA = (t_CreateDirectoryA)GetProcAddress(hLib, "CreateDirectoryA"); - p_OpenEncryptedFileRawA = (t_OpenEncryptedFileRawA)GetProcAddress(hLib, "OpenEncryptedFileRawA"); - p_CloseEncryptedFileRawA = (t_CloseEncryptedFileRawA)GetProcAddress(hLib, "CloseEncryptedFileRawA"); - p_ReadEncryptedFileRawA = (t_ReadEncryptedFileRawA)GetProcAddress(hLib, "ReadEncryptedFileRawA"); - p_WriteEncryptedFileRawA = (t_WriteEncryptedFileRawA)GetProcAddress(hLib, "WriteEncryptedFileRawA"); - /* attribute calls */ p_GetFileAttributesA = (t_GetFileAttributesA)GetProcAddress(hLib, "GetFileAttributesA"); p_GetFileAttributesExA = (t_GetFileAttributesExA)GetProcAddress(hLib, "GetFileAttributesExA"); @@ -151,15 +140,6 @@ p_CreateDirectoryW = (t_CreateDirectoryW) GetProcAddress(hLib, "CreateDirectoryW"); - p_OpenEncryptedFileRawW = (t_OpenEncryptedFileRawW) - GetProcAddress(hLib, "OpenEncryptedFileRawW"); - p_CloseEncryptedFileRawW = (t_CloseEncryptedFileRawW) - GetProcAddress(hLib, "CloseEncryptedFileRawW"); - p_ReadEncryptedFileRawW = (t_ReadEncryptedFileRawW) - GetProcAddress(hLib, "ReadEncryptedFileRawW"); - p_WriteEncryptedFileRawW = (t_WriteEncryptedFileRawW) - GetProcAddress(hLib, "WriteEncryptedFileRawW"); - /* backup calls */ p_BackupRead = (t_BackupRead)GetProcAddress(hLib, "BackupRead"); p_BackupWrite = (t_BackupWrite)GetProcAddress(hLib, "BackupWrite"); @@ -210,6 +190,11 @@ GetProcAddress(hLib, "AdjustTokenPrivileges"); p_LookupPrivilegeValue = (t_LookupPrivilegeValue) GetProcAddress(hLib, "LookupPrivilegeValueA"); + + p_OpenEncryptedFileRawA = (t_OpenEncryptedFileRawA) + GetProcAddress(hLib, "OpenEncryptedFileRawA"); + p_OpenEncryptedFileRawW = (t_OpenEncryptedFileRawW) + GetProcAddress(hLib, "OpenEncryptedFileRawW"); } } diff -Nru burp-1.3.0+20120214git/src/win32/winapi.h burp-1.3.1/src/win32/winapi.h --- burp-1.3.0+20120214git/src/win32/winapi.h 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/src/win32/winapi.h 2012-02-27 13:57:59.000000000 +0000 @@ -65,13 +65,7 @@ typedef DWORD (WINAPI *PFE_IMPORT_FUNC)(PBYTE pbData,PVOID pvCallbackContext,PULONG ulLength); typedef DWORD (WINAPI * t_OpenEncryptedFileRawA)(LPCSTR, ULONG, PVOID); -typedef DWORD (WINAPI * t_OpenEncryptedFileRawW)(LPCSTR, ULONG, PVOID); -typedef void (WINAPI * t_CloseEncryptedFileRawA)(PVOID); -typedef void (WINAPI * t_CloseEncryptedFileRawW)(PVOID); -typedef DWORD (WINAPI * t_ReadEncryptedFileRawA)(PFE_EXPORT_FUNC, PVOID, PVOID); -typedef DWORD (WINAPI * t_ReadEncryptedFileRawW)(PFE_EXPORT_FUNC, PVOID, PVOID); -typedef DWORD (WINAPI * t_WriteEncryptedFileRawA)(PFE_IMPORT_FUNC, PVOID, PVOID); -typedef DWORD (WINAPI * t_WriteEncryptedFileRawW)(PFE_IMPORT_FUNC, PVOID, PVOID); +typedef DWORD (WINAPI * t_OpenEncryptedFileRawW)(LPCWSTR, ULONG, PVOID); typedef HANDLE (WINAPI * t_CreateFileA) (LPCSTR, DWORD ,DWORD, LPSECURITY_ATTRIBUTES, DWORD , DWORD, HANDLE); @@ -134,12 +128,6 @@ extern t_OpenEncryptedFileRawA DLL_IMP_EXP p_OpenEncryptedFileRawA; extern t_OpenEncryptedFileRawW DLL_IMP_EXP p_OpenEncryptedFileRawW; -extern t_CloseEncryptedFileRawA DLL_IMP_EXP p_CloseEncryptedFileRawA; -extern t_CloseEncryptedFileRawW DLL_IMP_EXP p_CloseEncryptedFileRawW; -extern t_ReadEncryptedFileRawA DLL_IMP_EXP p_ReadEncryptedFileRawA; -extern t_ReadEncryptedFileRawW DLL_IMP_EXP p_ReadEncryptedFileRawW; -extern t_WriteEncryptedFileRawA DLL_IMP_EXP p_WriteEncryptedFileRawA; -extern t_WriteEncryptedFileRawW DLL_IMP_EXP p_WriteEncryptedFileRawW; extern t_GetFileAttributesA DLL_IMP_EXP p_GetFileAttributesA; extern t_GetFileAttributesW DLL_IMP_EXP p_GetFileAttributesW; diff -Nru burp-1.3.0+20120214git/test/run_test burp-1.3.1/test/run_test --- burp-1.3.0+20120214git/test/run_test 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/test/run_test 2012-02-27 13:57:59.000000000 +0000 @@ -77,6 +77,10 @@ #./configure --prefix="$target" --datarootdir="$target"/usr/share --sysconfdir="$target"/etc/burp || fail "configure failed" ./configure || fail "configure failed" make || fail "make failed" + # For some reason, make is not returning an error code. + # Look for important binaries before carrying on. + [ -f src/burp ] || fail "make failed" + [ -f src/bedup ] || fail "make failed" make install DESTDIR="$target" || fail "make install failed" } @@ -94,7 +98,7 @@ run_bedup() { echo "Starting test bedup" - ./sbin/bedup -c $serverconf -l >> "$beduplog" 2>&1 \ + ./usr/sbin/bedup -c $serverconf -l >> "$beduplog" 2>&1 \ || fail "bedup returned $?" } @@ -106,14 +110,15 @@ SLEEPTIME=2 echo "Starting test client backup" - ./sbin/burp -c $clientconf -a b >> "$clientlog" 2>&1 \ + ./usr/sbin/burp -c $clientconf -a b >> "$clientlog" 2>&1 \ || fail "client backup returned $?" # Repeatedly check to see whether the server has finished, rather # than just sleeping some length of time. while true ; do sleep $SLEEPTIME - [ ! -e "$working" -a ! -e "$finishing" ] && break + [ ! -e "$working" -a ! -e "$finishing" ] \ + && sleep $SLEEPTIME && break waited=$((waited+$SLEEPTIME)) [ "$waited" -gt 120 ] && \ fail "client backup seemed to be complete after 2 minutes" @@ -124,7 +129,7 @@ { local num="$1" echo "Starting test client verify of backup $num" - ./sbin/burp -c $clientconf -a v -b "$num" \ + ./usr/sbin/burp -c $clientconf -a v -b "$num" \ >> "$clientlog" 2>&1 || fail "client backup returned $?" } @@ -134,7 +139,7 @@ local dir="$2" echo "Starting test client restore of backup $num" makedir "$dir" - ./sbin/burp -c $clientconf -a r -b "$num" -d "$dir" \ + ./usr/sbin/burp -c $clientconf -a r -b "$num" -d "$dir" \ >>"$clientlog" 2>&1 || fail "client restore returned $?" } @@ -287,7 +292,7 @@ # Start up the server echo "Starting test server" -./sbin/burp -c $serverconf -l "$serversystemlog" -F >> "$serveroutputlog" 2>&1 & +./usr/sbin/burp -c $serverconf -l "$serversystemlog" -F >> "$serveroutputlog" 2>&1 & serverpid=$! # Be kind, and wait a little for it to start. diff -Nru burp-1.3.0+20120214git/TODO burp-1.3.1/TODO --- burp-1.3.0+20120214git/TODO 2012-02-13 13:13:37.000000000 +0000 +++ burp-1.3.1/TODO 2012-02-27 13:57:59.000000000 +0000 @@ -1,103 +1,2 @@ -(in no particular order) - -* Make SSL_shutdown() work properly. - -* Investigate HFS / resource forks and make support. I think this might - need somebody to buy me a Mac. - -* Add include/exclude wildcards. - -* Think about adding a utility to create certs, like easy-rsa from OpenVPN. - (burp_ca has been added - does more need to be done?) - -* Add acl/xattr support - (generic linux and freebsd support is done - do solaris next) - -* Improve the status monitor / counters. - - Estimates: - + Should include the final jiggling around time. - + Currently go a bit wonky during resume. - + Don't show up on restore/verify. - - Client knows no counters when resuming, because it didn't do the - phase1 scan. Have the server send it the counters. - - Can something be done to make key presses more responsive? - - When lots of clients are backing up, the live status monitor - truncates information. - - Have a way of browsing backup contents. - - Have a way of viewing logs. - - Make a web interface. - -* Do not compress manifests and logs when compression is turned off. - -* Allow random backups to be deleted safely when hardlinked_archive is on. - -* Delete old backups by time. - -* Delete old backups by space. - -* Add the option to turn an existing hardlinked_archive (not 'current') into - a non-hardlinked_archive, and vice versa. This could be useful for deleting - backups out of the middle of a chain instead of just the oldest. - -* Get metadata transfers to use librsync. - -* Have an option to let the client give the server the encryption password - and hence do server-side encryption. This would mean that network deltas - with encryption can be done. - -* Try to make backup_phase4_server more efficient. For example, a storage - server using a CIFS mounted disk appears very slow when I have a backup - containing 1,500,000 small files with very few changes. - (This may have been exacerbated by working dir recovery 'merge'. With - 'resume', it may be fairly improved). - -* Investigate Windows 'bare metal restore'. - -* Think about having a 'friendly' way of doing restores, as I have known some - people to complain about having to type things on the command line. - -* Break the stupidly long find_files() function down into smaller pieces. - (partly done) - -* Maybe look at the timer script regularly. If the time is now out of the - defined range, interrupt the backup in such a way that it will pick up from - where it left off the next time round. - -* Make transfer_gzfile_in() and send_whole_file[_gz]() check checksums. - -* Windows non-VSS backups. - -* Investigate how to make massive files work better with librsync. - -* Add localisation/gettext. - -* Add localisation/gettext specifically to work around the Polish Windows XP - "schtasks.exe Co_minutę" problem. - -* Get EFS backup/restore working on Windows (FILE_ATTRIBUTE_ENCRYPTED, and - special open/read/close functions). - -* Add automatic tests to verify that acl/xattr backup/restore works properly. - Is probably a bit trickier than other tests, because it has to be different - on different systems. - -* Make sure behaviour is sensible when a client runs out of storage - directories. It is programmed to loop to the start, but it will currently - overwrite existing files (see section that calls incr_dpth() in - backup_phase2_server()). - -* Restore / verify email notifications. - -* Add the ability to specify things like includes/excludes on the server side. - Will probably work by downloading chunks of config to the client. - -* Add option to strip off leading path components on restore. - -* Add option to take a list of paths for restore. - -* Add option to set up a restore on the server side. - -* Add Bas van den Dikkenberg's patches for Debian. - -* In the test script, check whether the backup has finished before going on - to the next step (rather than waiting 10 seconds and then possibly failing). +The list of things to do is now at: +https://github.com/grke/burp/issues diff -Nru burp-1.3.0+20120214git/UPGRADING burp-1.3.1/UPGRADING --- burp-1.3.0+20120214git/UPGRADING 2012-02-13 13:13:37.000000000 +0000 +++ burp-1.3.1/UPGRADING 2012-02-27 13:57:59.000000000 +0000 @@ -1,5 +1,11 @@ Things to watch out for when upgrading. +1.3.1 +----- +Due to Debian policy, burp and bedup will now be installed in /usr/sbin. +Therefore, you may need to update any cron jobs that were previously using +/sbin. + 1.2.4 ----- There was a critical bug in 1.2.4. diff -Nru burp-1.3.0+20120214git/website/content/about/oldnews.about burp-1.3.1/website/content/about/oldnews.about --- burp-1.3.0+20120214git/website/content/about/oldnews.about 1970-01-01 00:00:00.000000000 +0000 +++ burp-1.3.1/website/content/about/oldnews.about 2012-02-27 15:36:41.000000000 +0000 @@ -0,0 +1,265 @@ + + + + + + + + + + +
+
+

+2011-09-09: burp-1.2.0 is released. +

+Changes in burp-1.2.0:
+  * Improvements to the counters and status monitor - remember the phase1
+    scan counters for later phases to use for things like estimated times.
+  * Add 'working_dir_recovery_method = resume' option, which continues a
+    backup from the point it was interrupted.
+  * Add a useful message about options when run with '-h' or '-?'.
+  * Get the client to pass its version to the server. The minimum version the
+    client needs to be is now this release.
+  * Get the server to warn when the client is on a different version.
+  * Put the number of warnings in the subject of the notification emails.
+  * Allow config file location to be changed via configure (Michael Roland's
+    suggestions).
+  * Implement main server process config reload functionality on SIGHUP.
+  * Uncomment the reload lines in the Debian init script.
+  * Add logrotate file for Debian.
+  * Add ability to send a regular snapshot of the status summary screen in an
+        email ("daily backup summary" feature).
+  * Add simple 'exclude_ext =' feature.
+  * Add Windows 7 bare metal restore instructions.
+
+ +

+ +

+2011-09-01: In the UK, a nice half-page review of burp has appeared in the October edition of 'Linux Format' magazine, in their 'Hot Picks' section. + +

+ +

+2011-07-26: burp-1.1.70 is released. +

+Changes in burp-1.1.70:
+  * FreeBSD xattr support.
+  * FreeBSD ACL support.
+  * Handle Windows junction points.
+  * Add 'nobackup = [file name]' option. If this file system entry exists, the
+    directory containing it will not be backed up.
+  * Set librsync signature block size based on the old file size.
+  * Small bug fixes to the status monitor.
+  * Fixed working directory recovery bug where it couldn't find the manifest.gz
+    file due to it being called manifest.gz.tmp.
+  * Get rid of the stupidly complicated 'find_files' callback mechanism
+    inherited from bacula. Just call all the functions directly.
+  * Fix compiler warnings and '-ldl' linker error on FreeBSD 8.2.
+  * When down to 'C:' in mkpath() on Windows restore, strip the ':'.
+  * Run ERR_clear_error() before SSL_read/write.
+
+ +

+ + +

+2011-06-27: burp-1.1.65 is released. +

+Changes in burp-1.1.65:
+  * Add mechanism for backing up and restoring extra meta data.
+  * Linux acl support.
+  * Linux xattr support.
+  * Add option to set the umask on the server.
+  * Added option to specify the clientconfdir password in passwd format.
+  * Allow user and group options to be placed in the server clientconfdir files,
+    so that different client backups can be owned by different users.
+  * Add Patrick's burp_ca patches and README.CA.
+  * Sanitised magic characters by defining them in a new cmd.h file.
+  * Fixed 'ret OK, but zstream not finished: 0' when refusing to restore over
+    existing files.
+  * Fixed bug that made clients disappear from the status monitor.
+  * Bug fix the client_lockdir option.
+  * On the server, be more cautious about creating directories that don't exist.
+  * Remove link kludge in async_read_stat().
+
+ +

+ +

+2011-06-14: burp-1.1.57 is released. +

+Changes in burp-1.1.57:
+  * Add options to run as a different user and group.
+  * Add Patrick Koppen's burp_ca script.
+  * Get the client restore to use the sbuf functions, remove related kludges.
+  * Fix possible client segfault when refusing to restore over existing files.
+  * Make a failure to restore over a busy file not cause the whole restore to
+    fail.
+  * Print byte count as well as human readable byte count in the status summary
+    screen.
+  * Include backup numbers with the backup list in the status summary.
+  * Don't close the server read fd when running in non-forking mode.
+  * Add ssl_key options so that the cert and key can be in separate files.
+  * Add ssl_key_password, a synonym for ssl_cert_password.
+
+ +

+ +

+2011-05-13: burp-1.1.55 is released. +

+Changes in burp-1.1.55:
+  * Make the status monitor use ncurses.
+  * Fixed two bugs that could drastically slow down the server if a file
+    disappeared on a client after the initial scan (to get these two bug fixes,
+    you need to upgrade your clients).
+  * IPv6 patches.
+  * Ability to specify the location of the client lockfiles on the server.
+  * Make the server fork into the background by default. Use '-F' to stay in
+    the foreground.
+  * Add option to specify a log file.
+
+ +

+ +

+2011-04-14: burp-1.1.51 is released. +

+Changes in burp-1.1.51:
+  * Added a script for backing up zfs snapshots with 'zfs send'.
+  * Added the ability to set the level of compression.
+  * Added the ability to turn off compression.
+  * Added an option to define the poll interval in the Windows installer.
+  * Added the ability to turn off librsync delta differencing.
+  * Added the ability to give arguments to backup/restore/pre/post scripts.
+  * Make configure/make work better on Solaris.
+
+ +

+ +

+2011-04-02: burp-1.1.40 is released. +

+Changes in burp-1.1.40:
+  * Ability to run client pre/post backup/restore scripts.
+  * Ability to read data from fifos (and restore to them).
+  * Fixed a bug when restoring the first link in a directory.
+  * Fixed a bug that prevented giving a backup number when using the verify option.
+
+ +

+ +

+2011-03-28: git repository added. + +

+ +

+2011-03-27: burp-1.1.30 is released. +

+Changes in burp-1.1.30:
+  * First pass at having a live status monitor.
+  * Fixed a bug that meant you couldn't restore links.
+  * Fixed a bug when freeing structs at the end of a restore.
+
+ +

+ +

+2011-03-18: burp-1.1.22 is released. +

+Changes in burp-1.1.22:
+  * Added scheduling.
+  * Added email notifications.
+  * Fixed autoconf. Programs like ccache should now work.
+  * Strip whitespace from end of conf lines, ignore quotes around conf lines.
+  * Updated the Windows build tools.
+
+ +

+ +

+2011-03-10: burp-1.1.14 is released. +

+Changes in burp-1.1.14:
+  * Added client-side blowfish file encryption. See the man page for details.
+  * Byte counters also give counts in KB/MB/GB/etc as appropriate.
+  * Restore directories after their contents so that the access times are
+    correct.
+  * Updated the win32 build tools.
+
+ +

+ +

+2011-03-02: burp-1.1.5 is released. +

+Changes in burp-1.1.5:
+  * Added a 'verify' command. See the man page for details.
+  * Improved the include/exclude path functionality.
+  * Added the ability to define mount points to cross.
+  * Fixed a crash on 64bit Windows when exiting.
+
+ +

+ +

+2011-02-27: burp-1.1.0 is released. +

+Changes in burp-1.1.0:
+  * Added openssl.
+  * Added byte counters and checksums to the backup manifest files, in
+    anticipation of a 'verify' command.
+
+    IMPORTANT IF YOU ARE UPGRADING FROM AN OLDER VERSION OF BURP:
+    a) Your previous backups will no longer work, due to changes in the
+    manifest files. You will also need to move old backups aside in order to
+    continue to make new backups.
+    b) Your old config files will need some fields to do with SSL added to them.
+    See the man page and the examples in the 'configs' directory for help.
+
+    IMPORTANT FOR MY ENCOURAGEMENT AND THE FUTURE OF BURP:
+    If you have tried burp, I really want to hear from you to find out what 
+    you like about it, what you don't like, what new features you would like,
+    how you have been using it, whether it has helped you, or anything that
+    you would like to tell me. I am currently working in the dark!
+
+ +

+ +

+2011-02-16: burp-1.0.31 is released. +

+ +

+2011-02-02: burp-1.0.11 is released. +

+ +

+2011-02-02: burp-1.0.10 is released. +

+ +

+2011-01-30: burp-1.0.9 is released. +

+ +

+2011-01-25: burp-1.0.5 is released. +

+

+2011-01-25: mailling list created. +

+

+2011-01-23: burp-1.0.3 is released. +

+

+2011-01-22: burp-1.0.0 is released. +

+

+2011-01-22: Web site created. + +

+ +
diff -Nru burp-1.3.0+20120214git/website/content/html/download.content burp-1.3.1/website/content/html/download.content --- burp-1.3.0+20120214git/website/content/html/download.content 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/content/html/download.content 2012-02-27 13:57:59.000000000 +0000 @@ -14,12 +14,21 @@

-Or, if you are very keen there is now a git repository: +Or, if you are very keen, there is a git repository:

 git clone git://github.com/grke/burp.git (read-only)
 

+

+ +Packages are also available in: +

+Debian sid http://packages.debian.org/sid/burp.
+Ubuntu precise http://packages.ubuntu.com/precise/burp.
+
+ +

diff -Nru burp-1.3.0+20120214git/website/content/html/faq.content burp-1.3.1/website/content/html/faq.content --- burp-1.3.0+20120214git/website/content/html/faq.content 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/content/html/faq.content 2012-02-27 15:36:41.000000000 +0000 @@ -69,6 +69,7 @@
  • Network rate limiting.
  • Storage data deduplication (in versions > 1.2.2)
  • Automatic client upgrade (for server and client >= 1.3.0) +
  • EFS support on Windows.

    @@ -81,21 +82,7 @@

    -A. The following items are on my TODO list (for the full list so the TODO file -in the top level directory of the source): -

      -
    • Add extra ways of deciding when to delete old backups - e.g, by time, or -by space. -
    • Add acl/xattr support for Solaris. -
    • Server-side file encryption option, so that network deltas can still be - done if you have file encryption turned on. -
    • Improve the status monitor. -
    • Add include/exclude wildcards. -
    • Start thinking about how to make a client-side gui for doing things like - restores. -
    • Get EFS backup/restore working on Windows. -
    • Add a mechanism that can make clients upgrade automatically. -
    +A. For the list of things to do, please see https://github.com/grke/burp/issues


    diff -Nru burp-1.3.0+20120214git/website/content/html/howto.content burp-1.3.1/website/content/html/howto.content --- burp-1.3.0+20120214git/website/content/html/howto.content 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/content/html/howto.content 2012-02-27 15:36:41.000000000 +0000 @@ -15,7 +15,7 @@ Make sure that you have openssl, zlib and librsync libraries and development libraries installed. With debian or ubuntu, this command should install them for you: -apt-get install librsync-dev libz-dev libssl-dev +apt-get install librsync-dev libz-dev libssl-dev uthash-dev Change to the burp source directory and run "./configure", then "make". All being well, burp will compile successfully. @@ -44,7 +44,7 @@ it is yet time for a new backup. It is probably a good idea to change the numbers for each client, in order to spread the load a bit: MAILTO= -7,27,47 * * * * root /sbin/burp -a t +7,27,47 * * * * root /usr/sbin/burp -a t WINDOWS CLIENT @@ -159,6 +159,10 @@ in the config file. Use /dev/null to deactivate or '' to reacti‐ vate output. + -s [number] + For use with restores - strip a number of leading path compo‐ + nents. + EXAMPLES burp -a b @@ -177,7 +181,7 @@ Lists all the files in all the backups. burp -a l -b 1 -r myregex - Lists all the files in backup number 1 that match the regular + Lists all the files in backup number 1 that match the regular expression 'myregex'. burp -a L -b 1 -r myregex @@ -186,7 +190,7 @@ burp -a r -b 1 -r myregex Restores all the files in backup number 1 that match the regular - expression 'myregex' back to their original location. You won't + expression 'myregex' back to their original location. You won't be given a warning if the files already exist there, so use with caution. @@ -194,23 +198,28 @@ Restores all the files in backup number 1 that match the regular expression 'myregex' into the directory /tmp/restoredir. + burp -a r -b 1 -r myregex -d /tmp/restoredir -s 2 + Restores all the files in backup number 1 that match the regular + expression 'myregex' into the directory /tmp/restoredir and + strip 2 leading path components. + burp -a r Restores all the files in the most recent backup to their origi‐ - nal location. You won't be given a warning if the files already + nal location. You won't be given a warning if the files already exist there, so use with caution. burp -a v Verifies the most recent backup. burp -a v -b 1 -r myregex - Verifies everything in backup number 1 that matches the regular + Verifies everything in backup number 1 that matches the regular expression 'myregex'. burp -a t - Timed backup. The same as 'burp -a b', except that a script is - run on the server before deciding to go ahead. The intention is - that this command will be run on a repeating cron job with a - short interval, and that the server will decide when it is time + Timed backup. The same as 'burp -a b', except that a script is + run on the server before deciding to go ahead. The intention is + that this command will be run on a repeating cron job with a + short interval, and that the server will decide when it is time for a new backup. @@ -222,7 +231,7 @@ Defines the main TCP port that the server listens on. status_port=[port number] - Defines the TCP port that the server listens on for status + Defines the TCP port that the server listens on for status requests. directory=[path] @@ -245,92 +254,94 @@ Number of backups to keep. This can be overriddden by the client configuration files in clientconfdir on the server. Specify mul‐ tiple 'keep' entries on separate lines in order to keep multiple - periods of backups. For example, assuming that you are doing a + periods of backups. For example, assuming that you are doing a backup a day, keep=7 keep=4 keep=6 (on separate lines) will keep 7 daily backups, 4 weekly backups (7x4=28), and 6 multiples of 4 - weeks (7x4x6=168) - roughly 6 monthly backups. Effectively, you - will be guaranteed to be able to restore up to 168 days ago, + weeks (7x4x6=168) - roughly 6 monthly backups. Effectively, you + will be guaranteed to be able to restore up to 168 days ago, with the number of available backups exponentially decreasing as - you go back in time to that point. In this example, every 7th - backup will be hardlinked to allow burp to safely delete inter‐ - mediate backups when necessary. You can have as many 'keep' - lines as you like, as long as they don't exceed 52560000 when - multiplied together. That is, a backup every minute for 100 + you go back in time to that point. In this example, every 7th + backup will be hardlinked to allow burp to safely delete inter‐ + mediate backups when necessary. You can have as many 'keep' + lines as you like, as long as they don't exceed 52560000 when + multiplied together. That is, a backup every minute for 100 years. hardlinked_archive=[0|1] - On the server, defines whether to keep hardlinked files in the - backups, or whether to generate reverse deltas and delete the - original files. Can be set to either 0 (off) or 1 (on). Disad‐ - vantage: More disk space will be used Advantage: Restores will + On the server, defines whether to keep hardlinked files in the + backups, or whether to generate reverse deltas and delete the + original files. Can be set to either 0 (off) or 1 (on). Disad‐ + vantage: More disk space will be used Advantage: Restores will be faster, and since no reverse deltas need to be generated, the - time and effort the server needs at the end of a backup is + time and effort the server needs at the end of a backup is reduced. max_hardlinks=[number] - On the server, the number of times that a single file can be - hardlinked. The bedup program also obeys this setting. The + On the server, the number of times that a single file can be + hardlinked. The bedup program also obeys this setting. The default is 10000. librsync=[0|1] - When set to 0, delta differencing will not take place. That is, + When set to 0, delta differencing will not take place. That is, when a file changes, the server will request the whole new file. - The default is 1. This option can be overridden by the client + The default is 1. This option can be overridden by the client configuration files in clientconfdif on the server. compression=[gzip0-9] - Choose the level of gzip compression. Setting 0 or gzip0 turns - compression off. The default is gzip9. This option can be over‐ + Choose the level of gzip compression. Setting 0 or gzip0 turns + compression off. The default is gzip9. This option can be over‐ ridden by the client configuration files in clientconfdif on the server. client_lockdir=[path] Path to the directory in which to keep per-client lock files. By - default, this is set to the path given by the 'directory' + default, this is set to the path given by the 'directory' option. user=[username] - Run as a particular user. This can be overridden by the client + Run as a particular user. This can be overridden by the client configuration files in clientconfdir on the server. group=[groupname] - Run as a particular group. This can be overridden by the client + Run as a particular group. This can be overridden by the client configuration files in clientconfdir on the server. umask=[umask] Set the file creation umask. Default is 0022. ratelimit=[Mb/s] - Set the network send rate limit, in Mb/s. If this option is not + Set the network send rate limit, in Mb/s. If this option is not given, burp will send data as fast as it can. network_timeout=[s] - Set the network timeout in seconds. If no data is sent or - received over a period of this length, burp will give up. The + Set the network timeout in seconds. If no data is sent or + received over a period of this length, burp will give up. The default is 7200 seconds (2 hours). working_dir_recovery_method=[resume|use|delete] - This option tells the server what to do when it finds the work‐ - ing directory of an interrupted backup (perhaps somebody pulled + This option tells the server what to do when it finds the work‐ + ing directory of an interrupted backup (perhaps somebody pulled the plug on the server, or something). This can be overridden by - the client configurations files in clientconfdir on the server. + the client configurations files in clientconfdir on the server. Options are... delete: Just delete the old working directory. use: Convert the working directory into a complete backup. - resume: Simply continue the previous backup from the point at which it - left off. + resume: Simply continue the previous backup from the point at which it + left off. NOTE: If the client has changed its include/exclude configu‐ + ration since the backup was interrupted, the recovery method will auto‐ + matically switch to 'use'. ssl_cert_ca=[path] - The path to the SSL CA certificate. This file will probably be + The path to the SSL CA certificate. This file will probably be the same on both the server and the client. The file should con‐ tain just the certificate in PEM format ssl_cert=[path] The path to the server SSL certificate. It works for me when the - file contains the concatenation of the certificate and private + file contains the concatenation of the certificate and private key in PEM format. ssl_key=[path] @@ -343,27 +354,27 @@ Synonym for ssl_key_password. ssl_dhfile=[path] - Path to Diffie-Hellman parameter file. To generate one with - openssl, use a command like this: openssl dhparam -out + Path to Diffie-Hellman parameter file. To generate one with + openssl, use a command like this: openssl dhparam -out dhfile.pem -5 1024 max_children=[number] - Defines the number of child processes to fork (the number of + Defines the number of child processes to fork (the number of clients that can simultaneously connect. The default is 5. max_storage_subdirs=[number] - Defines the number of subdirectories in the data storage areas. - The maximum number of subdirectories that ext3 allows is 32000. + Defines the number of subdirectories in the data storage areas. + The maximum number of subdirectories that ext3 allows is 32000. If you do not set this option, it defaults to 30000. timer_script=[path] - Path to the script to run when a client connects with the timed - backup option. If the script exits with code 0, a backup will + Path to the script to run when a client connects with the timed + backup option. If the script exits with code 0, a backup will run. The first two arguments are the client name and the path to - the 'current' storage directory. The next three arguments are + the 'current' storage directory. The next three arguments are reserved, and user arguments are appended after that. An example - timer script is provided. The timer_script option can be over‐ - riddden by the client configuration files in clientconfdir on + timer script is provided. The timer_script option can be over‐ + riddden by the client configuration files in clientconfdir on the server. timer_arg=[string] @@ -374,19 +385,19 @@ notify_success_script=[path] Path to the script to run when a backup succeeds. User arguments are appended after the first five reserved arguments. An example - notify script is provided. The notify_success_script option can - be overriddden by the client configuration files in client‐ + notify script is provided. The notify_success_script option can + be overriddden by the client configuration files in client‐ confdir on the server. notify_success_arg=[string] - A user-definable argument to the notify success script. You can - have many of these. The notify_success_arg options can be over‐ - riddden by the client configuration files in clientconfdir on + A user-definable argument to the notify success script. You can + have many of these. The notify_success_arg options can be over‐ + riddden by the client configuration files in clientconfdir on the server. notify_success_warnings_only=[0|1] - Set to 1 to send success notifications only when there were - warnings. Leave unset or set to 0 to send success notifications + Set to 1 to send success notifications only when there were + warnings. Leave unset or set to 0 to send success notifications for every backup. notify_failure_script=[path] @@ -396,19 +407,19 @@ The same as notify_failure_arg, but for backups that failed. dedup_group=[string] - Enables you to group clients together for file deduplication - purposes. For example, you might want to set 'dedup_group=xp' - for each Windows XP client, and then run the bedup program on a + Enables you to group clients together for file deduplication + purposes. For example, you might want to set 'dedup_group=xp' + for each Windows XP client, and then run the bedup program on a cron job every other day with the option '-g xp'. server_script_pre=[path] - Path to a script to run on the server after each successfully + Path to a script to run on the server after each successfully authenticated connection but before any work is carried out. The - arguments to it are 'pre', '(client command)', 'reserved3' to - 'reserved5', and then arguments defined by - server_script_pre_arg. If the script returns non-zero, the task - asked for by the client will not be run. This command and - related options can be overriddden by the client configuration + arguments to it are 'pre', '(client command)', 'reserved3' to + 'reserved5', and then arguments defined by + server_script_pre_arg. If the script returns non-zero, the task + asked for by the client will not be run. This command and + related options can be overriddden by the client configuration files in clientconfdir on the server. server_script_pre_arg=[string] @@ -416,37 +427,37 @@ many of these. server_script_post=[path] - Path to a script to run on the server before the client discon‐ - nects. The arguments to it are 'post', '(client command)', + Path to a script to run on the server before the client discon‐ + nects. The arguments to it are 'post', '(client command)', 'reserved3' to 'reserved5', and then arguments defined by - server_script_post_arg. This command and related options can be - overriddden by the client configuration files in clientconfdir + server_script_post_arg. This command and related options can be + overriddden by the client configuration files in clientconfdir on the server. server_script_post_arg=[string] - A user-definable argument to the server post script. You can + A user-definable argument to the server post script. You can have many of these. server_script=[path] You can use this to save space in your config file when you want - to run the same server script twice. It overrides - server_script_pre and server_script_post. This command and - related options can be overriddden by the client configuration + to run the same server script twice. It overrides + server_script_pre and server_script_post. This command and + related options can be overriddden by the client configuration files in clientconfdir on the server. server_script_arg=[path] - Goes with server_script and overrides server_script_pre_arg and + Goes with server_script and overrides server_script_pre_arg and server_script_post_arg. server_script_post_run_on_fail=[0|1] - If this is set to 1, server_script_post will always be run. The - default is 0, which means that if the task asked for by the + If this is set to 1, server_script_post will always be run. The + default is 0, which means that if the task asked for by the client fails, server_script_post will not be run. autoupgrade_dir=[path] - Path to autoupgrade directory from which upgrades are down‐ + Path to autoupgrade directory from which upgrades are down‐ loaded. The option can be left unset in order not to autoupgrade - clients. Please see docs/autoupgrade.txt in the source package + clients. Please see docs/autoupgrade.txt in the source package for more help with this option. @@ -483,22 +494,22 @@ Run as a particular group (not supported on Windows). ratelimit=[Mb/s] - Set the network send rate limit, in Mb/s. If this option is not + Set the network send rate limit, in Mb/s. If this option is not given, burp will send data as fast as it can. network_timeout=[s] - Set the network timeout in seconds. If no data is sent or - received over a period of this length, burp will give up. The + Set the network timeout in seconds. If no data is sent or + received over a period of this length, burp will give up. The default is 7200 seconds (2 hours). include=[path] - Path to include in the backup. You can have multiple include - lines. Use forward slashes '/', not backslashes '\' as path + Path to include in the backup. You can have multiple include + lines. Use forward slashes '/', not backslashes '\' as path delimiters. exclude=[path] - Path to exclude from the backup. You can have multiple exclude - lines. Use forward slashes '/', not backslashes '\' as path + Path to exclude from the backup. You can have multiple exclude + lines. Use forward slashes '/', not backslashes '\' as path delimiters. exclude_ext=[extension] @@ -506,6 +517,14 @@ have multiple exclude extension lines. For example, set 'vdi' to exclude VirtualBox disk images. + exclude_fs=[fstype] + File systems to exclude from the backup. Case insensitive. You + can have multiple exclude file system lines. For example, set + 'tmpfs' to exclude tmpfs. Burp has an internal mapping of file + system names to file system IDs. If you know the file system ID, + you can use that instead. For example, 'exclude_fs = 0x01021994' + will also exclude tmpfs. + min_file_size=[b/Kb/Mb/Gb] Do not back up files that are less than the specified size. Example: 'min_file_size = 10Mb'. Set to 0 (the default) to have diff -Nru burp-1.3.0+20120214git/website/content/html/index.content burp-1.3.1/website/content/html/index.content --- burp-1.3.0+20120214git/website/content/html/index.content 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/content/html/index.content 2012-02-27 15:36:41.000000000 +0000 @@ -40,7 +40,7 @@


    -

    Current stable version: 1.2.2

    +

    Current stable version: 1.3.0


    NEWS

    @@ -52,7 +52,49 @@

    -2012-01-27: burp-1.30 is released. +2012-01-27: This month marks one year of burp! +
    +Many thanks to the following donors for financially supporting burp: +

    +  * £250.00 Robert L.
    +  *  £50.00 Sebastiano P.
    +  *  £10.00 Tim R.
    +  *  £10.00 Patryk D.
    +
    + +

    + +

    +2012-01-27: burp-1.3.1 is released. +

    +Changes in burp-1.3.1:
    +  * EFS support on Windows.
    +  * Move to using mingw-w64 for both 32bit and 64bit Windows builds.
    +  * Add 'exclude_fs =' option for Linux so that you can skip partitions
    +    types (for example, tmpfs) without generating warnings.
    +  * If recovery method 'resume' is set, but the includes/excludes change,
    +    switch to 'use', then start a new backup.
    +  * In the tests, check to see whether it looks like the server has finished
    +    the backup before moving on, rather than just waiting a set amount of time.
    +  * Add man pages for bedup and burp_ca.
    +  * Remove embedded uthash code. It will need to be installed as a dependency.
    +    For example, in Debian, you might run 'apt-get install uthash-dev'.
    +  * Add Bas van den Dikkenberg's tweaks for getting burp into official Debian
    +    and Ubuntu repositories. Burp is now in debian sid and ubuntu precise.
    +  * Make the server tell the client what extra_comms features it supports, so
    +    that, in future, old servers are more likely to work with new clients.
    +  * Improve 'make clean'.
    +  * Add option to strip off leading path components on restore.
    +  * Fix segfault that was happening on the server when SSL_accept() failed.
    +  * Move burp and bedup to /usr/sbin (you need to check that any cron jobs
    +    are pointing there too).
    +  * Moved list of things to do to https://github.com/grke/burp/issues
    +
    + +

    + +

    +2012-01-27: burp-1.3.0 is released.

     Changes in burp-1.3.0:
       * Add a mechanism for automatically upgrading clients.
    @@ -154,255 +196,7 @@
     

    -2011-09-09: burp-1.2.0 is released. -

    -Changes in burp-1.2.0:
    -  * Improvements to the counters and status monitor - remember the phase1
    -    scan counters for later phases to use for things like estimated times.
    -  * Add 'working_dir_recovery_method = resume' option, which continues a
    -    backup from the point it was interrupted.
    -  * Add a useful message about options when run with '-h' or '-?'.
    -  * Get the client to pass its version to the server. The minimum version the
    -    client needs to be is now this release.
    -  * Get the server to warn when the client is on a different version.
    -  * Put the number of warnings in the subject of the notification emails.
    -  * Allow config file location to be changed via configure (Michael Roland's
    -    suggestions).
    -  * Implement main server process config reload functionality on SIGHUP.
    -  * Uncomment the reload lines in the Debian init script.
    -  * Add logrotate file for Debian.
    -  * Add ability to send a regular snapshot of the status summary screen in an
    -        email ("daily backup summary" feature).
    -  * Add simple 'exclude_ext =' feature.
    -  * Add Windows 7 bare metal restore instructions.
    -
    - -

    - -

    -2011-09-01: In the UK, a nice half-page review of burp has appeared in the October edition of 'Linux Format' magazine, in their 'Hot Picks' section. - -

    - -

    -2011-07-26: burp-1.1.70 is released. -

    -Changes in burp-1.1.70:
    -  * FreeBSD xattr support.
    -  * FreeBSD ACL support.
    -  * Handle Windows junction points.
    -  * Add 'nobackup = [file name]' option. If this file system entry exists, the
    -    directory containing it will not be backed up.
    -  * Set librsync signature block size based on the old file size.
    -  * Small bug fixes to the status monitor.
    -  * Fixed working directory recovery bug where it couldn't find the manifest.gz
    -    file due to it being called manifest.gz.tmp.
    -  * Get rid of the stupidly complicated 'find_files' callback mechanism
    -    inherited from bacula. Just call all the functions directly.
    -  * Fix compiler warnings and '-ldl' linker error on FreeBSD 8.2.
    -  * When down to 'C:' in mkpath() on Windows restore, strip the ':'.
    -  * Run ERR_clear_error() before SSL_read/write.
    -
    - -

    - - -

    -2011-06-27: burp-1.1.65 is released. -

    -Changes in burp-1.1.65:
    -  * Add mechanism for backing up and restoring extra meta data.
    -  * Linux acl support.
    -  * Linux xattr support.
    -  * Add option to set the umask on the server.
    -  * Added option to specify the clientconfdir password in passwd format.
    -  * Allow user and group options to be placed in the server clientconfdir files,
    -    so that different client backups can be owned by different users.
    -  * Add Patrick's burp_ca patches and README.CA.
    -  * Sanitised magic characters by defining them in a new cmd.h file.
    -  * Fixed 'ret OK, but zstream not finished: 0' when refusing to restore over
    -    existing files.
    -  * Fixed bug that made clients disappear from the status monitor.
    -  * Bug fix the client_lockdir option.
    -  * On the server, be more cautious about creating directories that don't exist.
    -  * Remove link kludge in async_read_stat().
    -
    - -

    - -

    -2011-06-14: burp-1.1.57 is released. -

    -Changes in burp-1.1.57:
    -  * Add options to run as a different user and group.
    -  * Add Patrick Koppen's burp_ca script.
    -  * Get the client restore to use the sbuf functions, remove related kludges.
    -  * Fix possible client segfault when refusing to restore over existing files.
    -  * Make a failure to restore over a busy file not cause the whole restore to
    -    fail.
    -  * Print byte count as well as human readable byte count in the status summary
    -    screen.
    -  * Include backup numbers with the backup list in the status summary.
    -  * Don't close the server read fd when running in non-forking mode.
    -  * Add ssl_key options so that the cert and key can be in separate files.
    -  * Add ssl_key_password, a synonym for ssl_cert_password.
    -
    - -

    - -

    -2011-05-13: burp-1.1.55 is released. -

    -Changes in burp-1.1.55:
    -  * Make the status monitor use ncurses.
    -  * Fixed two bugs that could drastically slow down the server if a file
    -    disappeared on a client after the initial scan (to get these two bug fixes,
    -    you need to upgrade your clients).
    -  * IPv6 patches.
    -  * Ability to specify the location of the client lockfiles on the server.
    -  * Make the server fork into the background by default. Use '-F' to stay in
    -    the foreground.
    -  * Add option to specify a log file.
    -
    - -

    - -

    -2011-04-14: burp-1.1.51 is released. -

    -Changes in burp-1.1.51:
    -  * Added a script for backing up zfs snapshots with 'zfs send'.
    -  * Added the ability to set the level of compression.
    -  * Added the ability to turn off compression.
    -  * Added an option to define the poll interval in the Windows installer.
    -  * Added the ability to turn off librsync delta differencing.
    -  * Added the ability to give arguments to backup/restore/pre/post scripts.
    -  * Make configure/make work better on Solaris.
    -
    - -

    - -

    -2011-04-02: burp-1.1.40 is released. -

    -Changes in burp-1.1.40:
    -  * Ability to run client pre/post backup/restore scripts.
    -  * Ability to read data from fifos (and restore to them).
    -  * Fixed a bug when restoring the first link in a directory.
    -  * Fixed a bug that prevented giving a backup number when using the verify option.
    -
    - -

    - -

    -2011-03-28: git repository added. - -

    - -

    -2011-03-27: burp-1.1.30 is released. -

    -Changes in burp-1.1.30:
    -  * First pass at having a live status monitor.
    -  * Fixed a bug that meant you couldn't restore links.
    -  * Fixed a bug when freeing structs at the end of a restore.
    -
    - -

    - -

    -2011-03-18: burp-1.1.22 is released. -

    -Changes in burp-1.1.22:
    -  * Added scheduling.
    -  * Added email notifications.
    -  * Fixed autoconf. Programs like ccache should now work.
    -  * Strip whitespace from end of conf lines, ignore quotes around conf lines.
    -  * Updated the Windows build tools.
    -
    - -

    - -

    -2011-03-10: burp-1.1.14 is released. -

    -Changes in burp-1.1.14:
    -  * Added client-side blowfish file encryption. See the man page for details.
    -  * Byte counters also give counts in KB/MB/GB/etc as appropriate.
    -  * Restore directories after their contents so that the access times are
    -    correct.
    -  * Updated the win32 build tools.
    -
    - -

    - -

    -2011-03-02: burp-1.1.5 is released. -

    -Changes in burp-1.1.5:
    -  * Added a 'verify' command. See the man page for details.
    -  * Improved the include/exclude path functionality.
    -  * Added the ability to define mount points to cross.
    -  * Fixed a crash on 64bit Windows when exiting.
    -
    - -

    - -

    -2011-02-27: burp-1.1.0 is released. -

    -Changes in burp-1.1.0:
    -  * Added openssl.
    -  * Added byte counters and checksums to the backup manifest files, in
    -    anticipation of a 'verify' command.
    -
    -    IMPORTANT IF YOU ARE UPGRADING FROM AN OLDER VERSION OF BURP:
    -    a) Your previous backups will no longer work, due to changes in the
    -    manifest files. You will also need to move old backups aside in order to
    -    continue to make new backups.
    -    b) Your old config files will need some fields to do with SSL added to them.
    -    See the man page and the examples in the 'configs' directory for help.
    -
    -    IMPORTANT FOR MY ENCOURAGEMENT AND THE FUTURE OF BURP:
    -    If you have tried burp, I really want to hear from you to find out what 
    -    you like about it, what you don't like, what new features you would like,
    -    how you have been using it, whether it has helped you, or anything that
    -    you would like to tell me. I am currently working in the dark!
    -
    - -

    - -

    -2011-02-16: burp-1.0.31 is released. -

    - -

    -2011-02-02: burp-1.0.11 is released. -

    - -

    -2011-02-02: burp-1.0.10 is released. -

    - -

    -2011-01-30: burp-1.0.9 is released. -

    - -

    -2011-01-25: burp-1.0.5 is released. -

    -

    -2011-01-25: mailling list created. -

    -

    -2011-01-23: burp-1.0.3 is released. -

    -

    -2011-01-22: burp-1.0.0 is released. -

    -

    -2011-01-22: Web site created. - +Older news

    diff -Nru burp-1.3.0+20120214git/website/content/html/why.content burp-1.3.1/website/content/html/why.content --- burp-1.3.0+20120214git/website/content/html/why.content 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/content/html/why.content 2012-02-27 13:57:59.000000000 +0000 @@ -44,6 +44,7 @@
  • Retention configuration - it is just impossible to configure a sensible retention policy. Here is my explanation why, sent to the bacula-users mailing list. +
  • No Windows EFS support - EFS files are silently ignored. The main advantage that Bacula has over other open source offerings is that diff -Nru burp-1.3.0+20120214git/website/content/main.template burp-1.3.1/website/content/main.template --- burp-1.3.0+20120214git/website/content/main.template 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/content/main.template 2012-02-27 13:57:59.000000000 +0000 @@ -88,7 +88,7 @@ -Last updated: February 2012 +Last updated: March 2012 diff -Nru burp-1.3.0+20120214git/website/fixscript burp-1.3.1/website/fixscript --- burp-1.3.0+20120214git/website/fixscript 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/fixscript 2012-02-27 13:57:59.000000000 +0000 @@ -41,6 +41,7 @@ man ../manpages/burp.8 | col -b >> $howto print_bottom "$howto" +mkdir -p html/txt cp -v ../docs/*.txt html/txt go_for_it() @@ -109,7 +110,7 @@ if ! [ $x = "html" ] ; then rmdir $root/$x ; fi else case "$i" in - *.content|*.howto|*.faq|*.html) + *.content|*.howto|*.faq|*.html|*.about) go_for_it "$i" "$dir" ;; *.template|*.jpg|*.rtf|*.png) diff -Nru burp-1.3.0+20120214git/website/html/contact.html burp-1.3.1/website/html/contact.html --- burp-1.3.0+20120214git/website/html/contact.html 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/html/contact.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,118 +0,0 @@ - - - - - - -BURP - BackUp and Restore Program - - - - - - - - - - - -
    - - - - -

    - -BURP - BackUp and Restore Program - - -
    - - - - - - - - - -
    indexwhyfaqhowtodownloadcontact
    -
    - -

    - - - -The best way to contact me or to ask for help is to send a message to the -mailing list. Use the link below to subscribe. -
    -
    -https://lists.sourceforge.net/lists/listinfo/burp-users -
    -
    -However, I would appreciate any kind of feedback at all on this software. -
    -If you would to send me a quick message, -you can use this page -on my personal website. -
    -
    -
    -
    -
    -
    -
    -
    - - - - - - - - - -
    -
    - - - - -
    -
    -

    - -Burp is open and free software. I work on it in my spare time. -If you would like this work to continue, please consider making a small -donation. - -

    -
    -
    - -
    -
    -
    - -
    - -Burp, don't suck. - - - -Last updated: February 2012 - -
    - - - - - diff -Nru burp-1.3.0+20120214git/website/html/download.html burp-1.3.1/website/html/download.html --- burp-1.3.0+20120214git/website/html/download.html 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/html/download.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,132 +0,0 @@ - - - - - - -BURP - BackUp and Restore Program - - - - - - - - - - - -
    - - - - -

    - -BURP - BackUp and Restore Program - - -
    - - - - - - - - - -
    indexwhyfaqhowtodownloadcontact
    -
    - -

    - - - - - - - - - - - - - -
    -

    - -For downloads, please visit the -burp sourceforge page. - -

    -

    - -Or, if you are very keen there is now a git repository: -

    -git clone git://github.com/grke/burp.git (read-only)
    -
    - -

    - -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - -
    -
    - - - - -
    -
    -

    - -Burp is open and free software. I work on it in my spare time. -If you would like this work to continue, please consider making a small -donation. - -

    -
    -
    - -
    -
    -
    - -
    - -Burp, don't suck. - - - -Last updated: February 2012 - -
    - - - - - diff -Nru burp-1.3.0+20120214git/website/html/faq/licence.html burp-1.3.1/website/html/faq/licence.html --- burp-1.3.0+20120214git/website/html/faq/licence.html 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/html/faq/licence.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,970 +0,0 @@ - - - - - - -BURP - BackUp and Restore Program - - - - - - - - - - - -
    - - - - -

    - -BURP - BackUp and Restore Program - - -
    - - - - - - - - - -
    indexwhyfaqhowtodownloadcontact
    -
    - -

    - - - - - - - - - - - - - -
    -
    - - -

    - -The following is the Burp LICENCE file. - -

    -Burp started life as an extremely cut down and tweaked version of the Bacula
    -code.
    -The intention was to cut out everything except for the Windows VSS API parts
    -and to combine that with librsync to make a new backup program.
    -As well as the Windows VSS API parts these things remain:
    -Some of src/findlib remain.
    -A fragment of src/lib/berrno.c.
    -Some Makefiles and configure scripts.
    -
    -The new Burp code is Copyright Graham Keeling.
    -The license for the new Burp code continues to be AGPLv3.
    -
    -What follows are the original Bacula LICENSE declarations (stripped of
    -references to deleted files), from bacula-5.0.3.
    -They continue to be applicable.
    -
    -
    -History:
    -The original Bacula code was Copyright Kern Sibbald and John Walker.
    -After November 2004, it became Copyright Kern Sibbald, and finally,
    -the copyright was transferred to the Free Software Foundation Europe
    -on 15 November 2006. The license was changed from GPLv2 to AGPLv3
    -on 24 July 2010.
    -
    -Trademark:
    -The name Bacula is a registered trademark of Kern Sibbald.
    -
    -===================================
    -
    -License:
    -For the most part, Bacula is licensed under the AGPL version 3. This
    -code is listed under Copyright Free Software Foundation Europe e.V.
    -What follows is the addition(s) to the AGPL version 3 license, that
    -applies to code that is copyrighted by the Free Software Foundation
    -Europe e.V.
    -
    -Linking: 
    -As a special exception to the AGPLv3, the Bacula Project gives
    -permission to link the code of its release of Bacula with the OpenSSL
    -project's "OpenSSL" library (or with modified versions of it that use
    -the same license as the "OpenSSL" library), and distribute the linked
    -executables.  You must obey the GNU Affero General Public License in all
    -respects for all of the code used other than "OpenSSL".
    -
    -As a special exception to the AGPLv3, the Bacula Project gives
    -permission to link the code of its release of the Bacula Win32 File
    -daemon with the Microsoft supplied Volume Shadow Copy (VSS) libraries
    -and distribute the linked executables.  You must obey the GNU General
    -Public License in all respects for all of the code used other than for
    -the Microsoft VSS code, where you must obey their license terms.
    -
    -The Bacula Project gives permission for plugins with AGPLv3 compatible
    -licenses to be loaded and distributed with the Bacula executables as
    -long as the combined work is distributed under the terms listed in the 
    -Bacula LICENSE file.  A full list of AGPLv3 compatible licenses can be
    -found at: http://www.fsf.org/licensing/licenses/.  If you wish to load
    -or distribute plugins with different licensing terms please contact
    -the Bacula Project at: license@bacula.org
    -             
    -===================================
    -
    -
    -What follows is information from the authors of the code:
    -
    -License:
    -To the best of our knowledge, all code used in Bacula, which is 
    -copyrighted by a third party, has licenses that are compatible
    -with the OpenSSL license, and so given the exception that we have 
    -made to the AGPLv3 above, Bacula can be freely linked and distributed
    -with the OpenSSL libraries.
    -
    -Intellectual Property rights:
    -Recipient understands that although each Contributor to Bacula grants
    -the licenses to its Contributions set forth herein, no assurances are
    -provided by any Contributor that the Program does not infringe the
    -patent or other intellectual property rights of any other entity.
    -Each Contributor disclaims any liability to Recipient for claims
    -brought by any other entity based on infringement of intellectual
    -property rights or otherwise.  As a condition to exercising the rights
    -and licenses granted hereunder, each Recipient hereby assumes sole
    -responsibility to secure any other intellectual property rights
    -needed, if any.  For example, if a third party patent license is
    -required to allow Recipient to distribute the Program, it is
    -Recipient's responsibility to acquire that license before distributing
    -the Program.
    -
    -Copyrights:
    -Each Contributor to Bacula represents that to its knowledge it has
    -sufficient copyright rights in its Contribution, if any, to grant
    -the copyright license set forth in this Agreement.
    -
    -Code falling under the above conditions will be marked as follows:
    -
    -   Bacula® - The Network Backup Solution
    -
    -   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
    -
    -   The main author of Bacula is Kern Sibbald, with contributions from
    -   many others, a complete list can be found in the file AUTHORS.
    -   This program is Free Software; you can redistribute it and/or
    -   modify it under the terms of version three of the GNU Affero General Public
    -   License as published by the Free Software Foundation plus additions
    -   that are listed in the file LICENSE.
    -
    -   This program is distributed in the hope that it will be useful, but
    -   WITHOUT ANY WARRANTY; without even the implied warranty of
    -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    -   General Public License for more details.
    -
    -   You should have received a copy of the GNU Affero General Public License
    -   along with this program; if not, write to the Free Software
    -   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    -   02110-1301, USA.
    -
    -   Bacula® is a registered trademark of Kern Sibbald.
    -
    -   The licensor of Bacula is the Free Software Foundation Europe
    -   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
    -   Switzerland, email:ftf@fsfeurope.org.
    -
    -
    -Windows:
    -Certain source code used to build the Windows version of the
    -Bacula File daemon is copyrighted and or trademarked by Microsoft
    -and may contain Microsoft intellectual property (examples:
    -Microsoft VC++, the source to the VSS libraries, the Microsoft C
    -runtime libraries).  As such we cannot and do not distribute that
    -software.  We are permitted however to distribute Bacula with the
    -necessary Microsoft libraries in binary form.
    -
    -You may obtain the parts that we cannot distribute as follows.  The
    -Microsoft compiler available for purchase, and Microsoft provides a free
    -version of the compiler.  The source code and libraries are available for
    -download from Microsoft public Web servers.  We have documented in the
    -src/win32 directory the URLs from which we obtained the library source, and
    -how we build the Windows File daemon and many users have succeeded in doing
    -so themselves.  Our intention is to respect as closely as possible Open
    -Source practices while maintaining full respect for proprietary and
    -copyrighted code.
    -
    -3 clause BSD License notice for inclusion with the binary:              
    -
    - src/win32/compat/getopt.c
    -   "... licensed under IBM copyrights to use the IBM-provided source code 
    -   in any way he or she deems fit ..."
    -
    - src/win32/compat/sys/mtio.h (LGPL)
    -   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
    -
    -Bacula can be enabled with data encryption and/or communications
    -encryption. If this is the case, you will be including OpenSSL code that
    -that contains cryptographic software written by Eric Young
    -(eay@cryptsoft.com) and also software written by Tim Hudson
    -(tjh@cryptsoft.com).
    -
    -There are parts of Bacula that are licensed under the LGPL so
    -that those files may be used in proprietary code to interface with
    -Bacula.
    -
    -Finally there are parts of Bacula that are in the public domain.
    -             
    -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
    -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
    -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
    -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
    -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
    -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    -
    -=====================================
    -
    -
    -The entire AGPL is reproduced below, in the manuals distributed with the
    -Bacula documentation and can also be found online on the GNU web site
    -as well as at www.bacula.org. You may also obtain a copy of the
    -AGPL (or LGPL) by writing to: Free Software Foundation, Inc.,
    -51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
    -
    -
    -                    GNU AFFERO GENERAL PUBLIC LICENSE
    -                       Version 3, 19 November 2007
    -
    - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
    - Everyone is permitted to copy and distribute verbatim copies
    - of this license document, but changing it is not allowed.
    -
    -                            Preamble
    -
    -  The GNU Affero General Public License is a free, copyleft license for
    -software and other kinds of works, specifically designed to ensure
    -cooperation with the community in the case of network server software.
    -
    -  The licenses for most software and other practical works are designed
    -to take away your freedom to share and change the works.  By contrast,
    -our General Public Licenses are intended to guarantee your freedom to
    -share and change all versions of a program--to make sure it remains free
    -software for all its users.
    -
    -  When we speak of free software, we are referring to freedom, not
    -price.  Our General Public Licenses are designed to make sure that you
    -have the freedom to distribute copies of free software (and charge for
    -them if you wish), that you receive source code or can get it if you
    -want it, that you can change the software or use pieces of it in new
    -free programs, and that you know you can do these things.
    -
    -  Developers that use our General Public Licenses protect your rights
    -with two steps: (1) assert copyright on the software, and (2) offer
    -you this License which gives you legal permission to copy, distribute
    -and/or modify the software.
    -
    -  A secondary benefit of defending all users' freedom is that
    -improvements made in alternate versions of the program, if they
    -receive widespread use, become available for other developers to
    -incorporate.  Many developers of free software are heartened and
    -encouraged by the resulting cooperation.  However, in the case of
    -software used on network servers, this result may fail to come about.
    -The GNU General Public License permits making a modified version and
    -letting the public access it on a server without ever releasing its
    -source code to the public.
    -
    -  The GNU Affero General Public License is designed specifically to
    -ensure that, in such cases, the modified source code becomes available
    -to the community.  It requires the operator of a network server to
    -provide the source code of the modified version running there to the
    -users of that server.  Therefore, public use of a modified version, on
    -a publicly accessible server, gives the public access to the source
    -code of the modified version.
    -
    -  An older license, called the Affero General Public License and
    -published by Affero, was designed to accomplish similar goals.  This is
    -a different license, not a version of the Affero GPL, but Affero has
    -released a new version of the Affero GPL which permits relicensing under
    -this license.
    -
    -  The precise terms and conditions for copying, distribution and
    -modification follow.
    -
    -                       TERMS AND CONDITIONS
    -
    -  0. Definitions.
    -
    -  "This License" refers to version 3 of the GNU Affero General Public License.
    -
    -  "Copyright" also means copyright-like laws that apply to other kinds of
    -works, such as semiconductor masks.
    -
    -  "The Program" refers to any copyrightable work licensed under this
    -License.  Each licensee is addressed as "you".  "Licensees" and
    -"recipients" may be individuals or organizations.
    -
    -  To "modify" a work means to copy from or adapt all or part of the work
    -in a fashion requiring copyright permission, other than the making of an
    -exact copy.  The resulting work is called a "modified version" of the
    -earlier work or a work "based on" the earlier work.
    -
    -  A "covered work" means either the unmodified Program or a work based
    -on the Program.
    -
    -  To "propagate" a work means to do anything with it that, without
    -permission, would make you directly or secondarily liable for
    -infringement under applicable copyright law, except executing it on a
    -computer or modifying a private copy.  Propagation includes copying,
    -distribution (with or without modification), making available to the
    -public, and in some countries other activities as well.
    -
    -  To "convey" a work means any kind of propagation that enables other
    -parties to make or receive copies.  Mere interaction with a user through
    -a computer network, with no transfer of a copy, is not conveying.
    -
    -  An interactive user interface displays "Appropriate Legal Notices"
    -to the extent that it includes a convenient and prominently visible
    -feature that (1) displays an appropriate copyright notice, and (2)
    -tells the user that there is no warranty for the work (except to the
    -extent that warranties are provided), that licensees may convey the
    -work under this License, and how to view a copy of this License.  If
    -the interface presents a list of user commands or options, such as a
    -menu, a prominent item in the list meets this criterion.
    -
    -  1. Source Code.
    -
    -  The "source code" for a work means the preferred form of the work
    -for making modifications to it.  "Object code" means any non-source
    -form of a work.
    -
    -  A "Standard Interface" means an interface that either is an official
    -standard defined by a recognized standards body, or, in the case of
    -interfaces specified for a particular programming language, one that
    -is widely used among developers working in that language.
    -
    -  The "System Libraries" of an executable work include anything, other
    -than the work as a whole, that (a) is included in the normal form of
    -packaging a Major Component, but which is not part of that Major
    -Component, and (b) serves only to enable use of the work with that
    -Major Component, or to implement a Standard Interface for which an
    -implementation is available to the public in source code form.  A
    -"Major Component", in this context, means a major essential component
    -(kernel, window system, and so on) of the specific operating system
    -(if any) on which the executable work runs, or a compiler used to
    -produce the work, or an object code interpreter used to run it.
    -
    -  The "Corresponding Source" for a work in object code form means all
    -the source code needed to generate, install, and (for an executable
    -work) run the object code and to modify the work, including scripts to
    -control those activities.  However, it does not include the work's
    -System Libraries, or general-purpose tools or generally available free
    -programs which are used unmodified in performing those activities but
    -which are not part of the work.  For example, Corresponding Source
    -includes interface definition files associated with source files for
    -the work, and the source code for shared libraries and dynamically
    -linked subprograms that the work is specifically designed to require,
    -such as by intimate data communication or control flow between those
    -subprograms and other parts of the work.
    -
    -  The Corresponding Source need not include anything that users
    -can regenerate automatically from other parts of the Corresponding
    -Source.
    -
    -  The Corresponding Source for a work in source code form is that
    -same work.
    -
    -  2. Basic Permissions.
    -
    -  All rights granted under this License are granted for the term of
    -copyright on the Program, and are irrevocable provided the stated
    -conditions are met.  This License explicitly affirms your unlimited
    -permission to run the unmodified Program.  The output from running a
    -covered work is covered by this License only if the output, given its
    -content, constitutes a covered work.  This License acknowledges your
    -rights of fair use or other equivalent, as provided by copyright law.
    -
    -  You may make, run and propagate covered works that you do not
    -convey, without conditions so long as your license otherwise remains
    -in force.  You may convey covered works to others for the sole purpose
    -of having them make modifications exclusively for you, or provide you
    -with facilities for running those works, provided that you comply with
    -the terms of this License in conveying all material for which you do
    -not control copyright.  Those thus making or running the covered works
    -for you must do so exclusively on your behalf, under your direction
    -and control, on terms that prohibit them from making any copies of
    -your copyrighted material outside their relationship with you.
    -
    -  Conveying under any other circumstances is permitted solely under
    -the conditions stated below.  Sublicensing is not allowed; section 10
    -makes it unnecessary.
    -
    -  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
    -
    -  No covered work shall be deemed part of an effective technological
    -measure under any applicable law fulfilling obligations under article
    -11 of the WIPO copyright treaty adopted on 20 December 1996, or
    -similar laws prohibiting or restricting circumvention of such
    -measures.
    -
    -  When you convey a covered work, you waive any legal power to forbid
    -circumvention of technological measures to the extent such circumvention
    -is effected by exercising rights under this License with respect to
    -the covered work, and you disclaim any intention to limit operation or
    -modification of the work as a means of enforcing, against the work's
    -users, your or third parties' legal rights to forbid circumvention of
    -technological measures.
    -
    -  4. Conveying Verbatim Copies.
    -
    -  You may convey verbatim copies of the Program's source code as you
    -receive it, in any medium, provided that you conspicuously and
    -appropriately publish on each copy an appropriate copyright notice;
    -keep intact all notices stating that this License and any
    -non-permissive terms added in accord with section 7 apply to the code;
    -keep intact all notices of the absence of any warranty; and give all
    -recipients a copy of this License along with the Program.
    -
    -  You may charge any price or no price for each copy that you convey,
    -and you may offer support or warranty protection for a fee.
    -
    -  5. Conveying Modified Source Versions.
    -
    -  You may convey a work based on the Program, or the modifications to
    -produce it from the Program, in the form of source code under the
    -terms of section 4, provided that you also meet all of these conditions:
    -
    -    a) The work must carry prominent notices stating that you modified
    -    it, and giving a relevant date.
    -
    -    b) The work must carry prominent notices stating that it is
    -    released under this License and any conditions added under section
    -    7.  This requirement modifies the requirement in section 4 to
    -    "keep intact all notices".
    -
    -    c) You must license the entire work, as a whole, under this
    -    License to anyone who comes into possession of a copy.  This
    -    License will therefore apply, along with any applicable section 7
    -    additional terms, to the whole of the work, and all its parts,
    -    regardless of how they are packaged.  This License gives no
    -    permission to license the work in any other way, but it does not
    -    invalidate such permission if you have separately received it.
    -
    -    d) If the work has interactive user interfaces, each must display
    -    Appropriate Legal Notices; however, if the Program has interactive
    -    interfaces that do not display Appropriate Legal Notices, your
    -    work need not make them do so.
    -
    -  A compilation of a covered work with other separate and independent
    -works, which are not by their nature extensions of the covered work,
    -and which are not combined with it such as to form a larger program,
    -in or on a volume of a storage or distribution medium, is called an
    -"aggregate" if the compilation and its resulting copyright are not
    -used to limit the access or legal rights of the compilation's users
    -beyond what the individual works permit.  Inclusion of a covered work
    -in an aggregate does not cause this License to apply to the other
    -parts of the aggregate.
    -
    -  6. Conveying Non-Source Forms.
    -
    -  You may convey a covered work in object code form under the terms
    -of sections 4 and 5, provided that you also convey the
    -machine-readable Corresponding Source under the terms of this License,
    -in one of these ways:
    -
    -    a) Convey the object code in, or embodied in, a physical product
    -    (including a physical distribution medium), accompanied by the
    -    Corresponding Source fixed on a durable physical medium
    -    customarily used for software interchange.
    -
    -    b) Convey the object code in, or embodied in, a physical product
    -    (including a physical distribution medium), accompanied by a
    -    written offer, valid for at least three years and valid for as
    -    long as you offer spare parts or customer support for that product
    -    model, to give anyone who possesses the object code either (1) a
    -    copy of the Corresponding Source for all the software in the
    -    product that is covered by this License, on a durable physical
    -    medium customarily used for software interchange, for a price no
    -    more than your reasonable cost of physically performing this
    -    conveying of source, or (2) access to copy the
    -    Corresponding Source from a network server at no charge.
    -
    -    c) Convey individual copies of the object code with a copy of the
    -    written offer to provide the Corresponding Source.  This
    -    alternative is allowed only occasionally and noncommercially, and
    -    only if you received the object code with such an offer, in accord
    -    with subsection 6b.
    -
    -    d) Convey the object code by offering access from a designated
    -    place (gratis or for a charge), and offer equivalent access to the
    -    Corresponding Source in the same way through the same place at no
    -    further charge.  You need not require recipients to copy the
    -    Corresponding Source along with the object code.  If the place to
    -    copy the object code is a network server, the Corresponding Source
    -    may be on a different server (operated by you or a third party)
    -    that supports equivalent copying facilities, provided you maintain
    -    clear directions next to the object code saying where to find the
    -    Corresponding Source.  Regardless of what server hosts the
    -    Corresponding Source, you remain obligated to ensure that it is
    -    available for as long as needed to satisfy these requirements.
    -
    -    e) Convey the object code using peer-to-peer transmission, provided
    -    you inform other peers where the object code and Corresponding
    -    Source of the work are being offered to the general public at no
    -    charge under subsection 6d.
    -
    -  A separable portion of the object code, whose source code is excluded
    -from the Corresponding Source as a System Library, need not be
    -included in conveying the object code work.
    -
    -  A "User Product" is either (1) a "consumer product", which means any
    -tangible personal property which is normally used for personal, family,
    -or household purposes, or (2) anything designed or sold for incorporation
    -into a dwelling.  In determining whether a product is a consumer product,
    -doubtful cases shall be resolved in favor of coverage.  For a particular
    -product received by a particular user, "normally used" refers to a
    -typical or common use of that class of product, regardless of the status
    -of the particular user or of the way in which the particular user
    -actually uses, or expects or is expected to use, the product.  A product
    -is a consumer product regardless of whether the product has substantial
    -commercial, industrial or non-consumer uses, unless such uses represent
    -the only significant mode of use of the product.
    -
    -  "Installation Information" for a User Product means any methods,
    -procedures, authorization keys, or other information required to install
    -and execute modified versions of a covered work in that User Product from
    -a modified version of its Corresponding Source.  The information must
    -suffice to ensure that the continued functioning of the modified object
    -code is in no case prevented or interfered with solely because
    -modification has been made.
    -
    -  If you convey an object code work under this section in, or with, or
    -specifically for use in, a User Product, and the conveying occurs as
    -part of a transaction in which the right of possession and use of the
    -User Product is transferred to the recipient in perpetuity or for a
    -fixed term (regardless of how the transaction is characterized), the
    -Corresponding Source conveyed under this section must be accompanied
    -by the Installation Information.  But this requirement does not apply
    -if neither you nor any third party retains the ability to install
    -modified object code on the User Product (for example, the work has
    -been installed in ROM).
    -
    -  The requirement to provide Installation Information does not include a
    -requirement to continue to provide support service, warranty, or updates
    -for a work that has been modified or installed by the recipient, or for
    -the User Product in which it has been modified or installed.  Access to a
    -network may be denied when the modification itself materially and
    -adversely affects the operation of the network or violates the rules and
    -protocols for communication across the network.
    -
    -  Corresponding Source conveyed, and Installation Information provided,
    -in accord with this section must be in a format that is publicly
    -documented (and with an implementation available to the public in
    -source code form), and must require no special password or key for
    -unpacking, reading or copying.
    -
    -  7. Additional Terms.
    -
    -  "Additional permissions" are terms that supplement the terms of this
    -License by making exceptions from one or more of its conditions.
    -Additional permissions that are applicable to the entire Program shall
    -be treated as though they were included in this License, to the extent
    -that they are valid under applicable law.  If additional permissions
    -apply only to part of the Program, that part may be used separately
    -under those permissions, but the entire Program remains governed by
    -this License without regard to the additional permissions.
    -
    -  When you convey a copy of a covered work, you may at your option
    -remove any additional permissions from that copy, or from any part of
    -it.  (Additional permissions may be written to require their own
    -removal in certain cases when you modify the work.)  You may place
    -additional permissions on material, added by you to a covered work,
    -for which you have or can give appropriate copyright permission.
    -
    -  Notwithstanding any other provision of this License, for material you
    -add to a covered work, you may (if authorized by the copyright holders of
    -that material) supplement the terms of this License with terms:
    -
    -    a) Disclaiming warranty or limiting liability differently from the
    -    terms of sections 15 and 16 of this License; or
    -
    -    b) Requiring preservation of specified reasonable legal notices or
    -    author attributions in that material or in the Appropriate Legal
    -    Notices displayed by works containing it; or
    -
    -    c) Prohibiting misrepresentation of the origin of that material, or
    -    requiring that modified versions of such material be marked in
    -    reasonable ways as different from the original version; or
    -
    -    d) Limiting the use for publicity purposes of names of licensors or
    -    authors of the material; or
    -
    -    e) Declining to grant rights under trademark law for use of some
    -    trade names, trademarks, or service marks; or
    -
    -    f) Requiring indemnification of licensors and authors of that
    -    material by anyone who conveys the material (or modified versions of
    -    it) with contractual assumptions of liability to the recipient, for
    -    any liability that these contractual assumptions directly impose on
    -    those licensors and authors.
    -
    -  All other non-permissive additional terms are considered "further
    -restrictions" within the meaning of section 10.  If the Program as you
    -received it, or any part of it, contains a notice stating that it is
    -governed by this License along with a term that is a further
    -restriction, you may remove that term.  If a license document contains
    -a further restriction but permits relicensing or conveying under this
    -License, you may add to a covered work material governed by the terms
    -of that license document, provided that the further restriction does
    -not survive such relicensing or conveying.
    -
    -  If you add terms to a covered work in accord with this section, you
    -must place, in the relevant source files, a statement of the
    -additional terms that apply to those files, or a notice indicating
    -where to find the applicable terms.
    -
    -  Additional terms, permissive or non-permissive, may be stated in the
    -form of a separately written license, or stated as exceptions;
    -the above requirements apply either way.
    -
    -  8. Termination.
    -
    -  You may not propagate or modify a covered work except as expressly
    -provided under this License.  Any attempt otherwise to propagate or
    -modify it is void, and will automatically terminate your rights under
    -this License (including any patent licenses granted under the third
    -paragraph of section 11).
    -
    -  However, if you cease all violation of this License, then your
    -license from a particular copyright holder is reinstated (a)
    -provisionally, unless and until the copyright holder explicitly and
    -finally terminates your license, and (b) permanently, if the copyright
    -holder fails to notify you of the violation by some reasonable means
    -prior to 60 days after the cessation.
    -
    -  Moreover, your license from a particular copyright holder is
    -reinstated permanently if the copyright holder notifies you of the
    -violation by some reasonable means, this is the first time you have
    -received notice of violation of this License (for any work) from that
    -copyright holder, and you cure the violation prior to 30 days after
    -your receipt of the notice.
    -
    -  Termination of your rights under this section does not terminate the
    -licenses of parties who have received copies or rights from you under
    -this License.  If your rights have been terminated and not permanently
    -reinstated, you do not qualify to receive new licenses for the same
    -material under section 10.
    -
    -  9. Acceptance Not Required for Having Copies.
    -
    -  You are not required to accept this License in order to receive or
    -run a copy of the Program.  Ancillary propagation of a covered work
    -occurring solely as a consequence of using peer-to-peer transmission
    -to receive a copy likewise does not require acceptance.  However,
    -nothing other than this License grants you permission to propagate or
    -modify any covered work.  These actions infringe copyright if you do
    -not accept this License.  Therefore, by modifying or propagating a
    -covered work, you indicate your acceptance of this License to do so.
    -
    -  10. Automatic Licensing of Downstream Recipients.
    -
    -  Each time you convey a covered work, the recipient automatically
    -receives a license from the original licensors, to run, modify and
    -propagate that work, subject to this License.  You are not responsible
    -for enforcing compliance by third parties with this License.
    -
    -  An "entity transaction" is a transaction transferring control of an
    -organization, or substantially all assets of one, or subdividing an
    -organization, or merging organizations.  If propagation of a covered
    -work results from an entity transaction, each party to that
    -transaction who receives a copy of the work also receives whatever
    -licenses to the work the party's predecessor in interest had or could
    -give under the previous paragraph, plus a right to possession of the
    -Corresponding Source of the work from the predecessor in interest, if
    -the predecessor has it or can get it with reasonable efforts.
    -
    -  You may not impose any further restrictions on the exercise of the
    -rights granted or affirmed under this License.  For example, you may
    -not impose a license fee, royalty, or other charge for exercise of
    -rights granted under this License, and you may not initiate litigation
    -(including a cross-claim or counterclaim in a lawsuit) alleging that
    -any patent claim is infringed by making, using, selling, offering for
    -sale, or importing the Program or any portion of it.
    -
    -  11. Patents.
    -
    -  A "contributor" is a copyright holder who authorizes use under this
    -License of the Program or a work on which the Program is based.  The
    -work thus licensed is called the contributor's "contributor version".
    -
    -  A contributor's "essential patent claims" are all patent claims
    -owned or controlled by the contributor, whether already acquired or
    -hereafter acquired, that would be infringed by some manner, permitted
    -by this License, of making, using, or selling its contributor version,
    -but do not include claims that would be infringed only as a
    -consequence of further modification of the contributor version.  For
    -purposes of this definition, "control" includes the right to grant
    -patent sublicenses in a manner consistent with the requirements of
    -this License.
    -
    -  Each contributor grants you a non-exclusive, worldwide, royalty-free
    -patent license under the contributor's essential patent claims, to
    -make, use, sell, offer for sale, import and otherwise run, modify and
    -propagate the contents of its contributor version.
    -
    -  In the following three paragraphs, a "patent license" is any express
    -agreement or commitment, however denominated, not to enforce a patent
    -(such as an express permission to practice a patent or covenant not to
    -sue for patent infringement).  To "grant" such a patent license to a
    -party means to make such an agreement or commitment not to enforce a
    -patent against the party.
    -
    -  If you convey a covered work, knowingly relying on a patent license,
    -and the Corresponding Source of the work is not available for anyone
    -to copy, free of charge and under the terms of this License, through a
    -publicly available network server or other readily accessible means,
    -then you must either (1) cause the Corresponding Source to be so
    -available, or (2) arrange to deprive yourself of the benefit of the
    -patent license for this particular work, or (3) arrange, in a manner
    -consistent with the requirements of this License, to extend the patent
    -license to downstream recipients.  "Knowingly relying" means you have
    -actual knowledge that, but for the patent license, your conveying the
    -covered work in a country, or your recipient's use of the covered work
    -in a country, would infringe one or more identifiable patents in that
    -country that you have reason to believe are valid.
    -
    -  If, pursuant to or in connection with a single transaction or
    -arrangement, you convey, or propagate by procuring conveyance of, a
    -covered work, and grant a patent license to some of the parties
    -receiving the covered work authorizing them to use, propagate, modify
    -or convey a specific copy of the covered work, then the patent license
    -you grant is automatically extended to all recipients of the covered
    -work and works based on it.
    -
    -  A patent license is "discriminatory" if it does not include within
    -the scope of its coverage, prohibits the exercise of, or is
    -conditioned on the non-exercise of one or more of the rights that are
    -specifically granted under this License.  You may not convey a covered
    -work if you are a party to an arrangement with a third party that is
    -in the business of distributing software, under which you make payment
    -to the third party based on the extent of your activity of conveying
    -the work, and under which the third party grants, to any of the
    -parties who would receive the covered work from you, a discriminatory
    -patent license (a) in connection with copies of the covered work
    -conveyed by you (or copies made from those copies), or (b) primarily
    -for and in connection with specific products or compilations that
    -contain the covered work, unless you entered into that arrangement,
    -or that patent license was granted, prior to 28 March 2007.
    -
    -  Nothing in this License shall be construed as excluding or limiting
    -any implied license or other defenses to infringement that may
    -otherwise be available to you under applicable patent law.
    -
    -  12. No Surrender of Others' Freedom.
    -
    -  If conditions are imposed on you (whether by court order, agreement or
    -otherwise) that contradict the conditions of this License, they do not
    -excuse you from the conditions of this License.  If you cannot convey a
    -covered work so as to satisfy simultaneously your obligations under this
    -License and any other pertinent obligations, then as a consequence you may
    -not convey it at all.  For example, if you agree to terms that obligate you
    -to collect a royalty for further conveying from those to whom you convey
    -the Program, the only way you could satisfy both those terms and this
    -License would be to refrain entirely from conveying the Program.
    -
    -  13. Remote Network Interaction; Use with the GNU General Public License.
    -
    -  Notwithstanding any other provision of this License, if you modify the
    -Program, your modified version must prominently offer all users
    -interacting with it remotely through a computer network (if your version
    -supports such interaction) an opportunity to receive the Corresponding
    -Source of your version by providing access to the Corresponding Source
    -from a network server at no charge, through some standard or customary
    -means of facilitating copying of software.  This Corresponding Source
    -shall include the Corresponding Source for any work covered by version 3
    -of the GNU General Public License that is incorporated pursuant to the
    -following paragraph.
    -
    -  Notwithstanding any other provision of this License, you have
    -permission to link or combine any covered work with a work licensed
    -under version 3 of the GNU General Public License into a single
    -combined work, and to convey the resulting work.  The terms of this
    -License will continue to apply to the part which is the covered work,
    -but the work with which it is combined will remain governed by version
    -3 of the GNU General Public License.
    -
    -  14. Revised Versions of this License.
    -
    -  The Free Software Foundation may publish revised and/or new versions of
    -the GNU Affero General Public License from time to time.  Such new versions
    -will be similar in spirit to the present version, but may differ in detail to
    -address new problems or concerns.
    -
    -  Each version is given a distinguishing version number.  If the
    -Program specifies that a certain numbered version of the GNU Affero General
    -Public License "or any later version" applies to it, you have the
    -option of following the terms and conditions either of that numbered
    -version or of any later version published by the Free Software
    -Foundation.  If the Program does not specify a version number of the
    -GNU Affero General Public License, you may choose any version ever published
    -by the Free Software Foundation.
    -
    -  If the Program specifies that a proxy can decide which future
    -versions of the GNU Affero General Public License can be used, that proxy's
    -public statement of acceptance of a version permanently authorizes you
    -to choose that version for the Program.
    -
    -  Later license versions may give you additional or different
    -permissions.  However, no additional obligations are imposed on any
    -author or copyright holder as a result of your choosing to follow a
    -later version.
    -
    -  15. Disclaimer of Warranty.
    -
    -  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
    -APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
    -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
    -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
    -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    -PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
    -IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
    -ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
    -
    -  16. Limitation of Liability.
    -
    -  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
    -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
    -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
    -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
    -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
    -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
    -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
    -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
    -SUCH DAMAGES.
    -
    -  17. Interpretation of Sections 15 and 16.
    -
    -  If the disclaimer of warranty and limitation of liability provided
    -above cannot be given local legal effect according to their terms,
    -reviewing courts shall apply local law that most closely approximates
    -an absolute waiver of all civil liability in connection with the
    -Program, unless a warranty or assumption of liability accompanies a
    -copy of the Program in return for a fee.
    -
    -                     END OF TERMS AND CONDITIONS
    -
    -            How to Apply These Terms to Your New Programs
    -
    -  If you develop a new program, and you want it to be of the greatest
    -possible use to the public, the best way to achieve this is to make it
    -free software which everyone can redistribute and change under these terms.
    -
    -  To do so, attach the following notices to the program.  It is safest
    -to attach them to the start of each source file to most effectively
    -state the exclusion of warranty; and each file should have at least
    -the "copyright" line and a pointer to where the full notice is found.
    -
    -    <one line to give the program's name and a brief idea of what it does.>
    -    Copyright (C) <year>  <name of author>
    -
    -    This program is free software: you can redistribute it and/or modify
    -    it under the terms of the GNU Affero General Public License as published by
    -    the Free Software Foundation, either version 3 of the License, or
    -    (at your option) any later version.
    -
    -    This program is distributed in the hope that it will be useful,
    -    but WITHOUT ANY WARRANTY; without even the implied warranty of
    -    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    -    GNU Affero General Public License for more details.
    -
    -    You should have received a copy of the GNU Affero General Public License
    -    along with this program.  If not, see http://www.gnu.org/licenses/.
    -
    -Also add information on how to contact you by electronic and paper mail.
    -
    -  If your software can interact with users remotely through a computer
    -network, you should also make sure that it provides a way for users to
    -get its source.  For example, if your program is a web application, its
    -interface could display a "Source" link that leads users to an archive
    -of the code.  There are many ways you could offer source, and different
    -solutions will be better for different programs; see section 13 for the
    -specific requirements.
    -
    -  You should also get your employer (if you work as a programmer) or school,
    -if any, to sign a "copyright disclaimer" for the program, if necessary.
    -For more information on this, and how to apply and follow the GNU AGPL, see
    -http://www.gnu.org/licenses/.
    -
    -===========================================
    -
    - -

    - -
    - -
    - - - - - - - - - -
    -
    - - - - -
    -
    -

    - -Burp is open and free software. I work on it in my spare time. -If you would like this work to continue, please consider making a small -donation. - -

    -
    -
    - -
    -
    -
    - -
    - -Burp, don't suck. - - - -Last updated: February 2012 - -
    - - - - - diff -Nru burp-1.3.0+20120214git/website/html/faq.html burp-1.3.1/website/html/faq.html --- burp-1.3.0+20120214git/website/html/faq.html 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/html/faq.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,428 +0,0 @@ - - - - - - -BURP - BackUp and Restore Program - - - - - - - - - - - -
    - - - - -

    - -BURP - BackUp and Restore Program - - -
    - - - - - - - - - -
    indexwhyfaqhowtodownloadcontact
    -
    - -

    - - - - - - - - - - - - - -
    -
    - - -
    - -

    - -Q. Why? - -

    -

    - -A. Please go to the WHY page. - -

    -
    - -

    - -Q. What operating systems do I need to be running? - -

    -

    - -The burp server (where the backups are stored) needs to run on a Linux-style -operating system. Personally, I use Debian. -The burp client (from which backups are taken) can run on Linux or Windows. - -

    - -

    - -Q. What are the main features? What works? - -

    -

    - -A. At the time of writing, the following features work: -

      -
    • Server mode runs on Unix-based systems. -
    • Client mode runs on Windows and Unix-based systems. -
    • Windows Volume Shadow Copy Service (VSS) support (Windows XP R2 and newer). -
    • Windows 32bit and 64bit support. -
    • Delta differencing with librsync. -
    • Network backups. -
    • Backs up and restores files, directories, symlinks, hardlinks, fifos and -nodes. -
    • Storage and network compression using zlib. -
    • Ability to continue interrupted backups. -
    • Client/server communications encryption with SSL. -
    • Client side file encryption - (note: this turns off delta differencing). -
    • Scheduling. -
    • Email backup success/failure notifications. -
    • A single daily backup summary email. -
    • A live ncurses monitor on the server. -
    • Fifo read/write support. -
    • Pre/post backup/restore client scripts. -
    • Backups of Solaris ZFS snapshot send/receives. -
    • Linux and FreeBSD acl/xattr support. -
    • Multiple retention periods (e.g, keep 1 backup per day for 7 days, 1 backup per week for 4 weeks, 1 backup per 4 weeks for a year). -
    • Network rate limiting. -
    • Storage data deduplication (in versions > 1.2.2) -
    • Automatic client upgrade (for server and client >= 1.3.0) -
    - -

    -
    - -

    - -Q. What is on the roadmap? What doesn't work? - -

    -

    - -A. The following items are on my TODO list (for the full list so the TODO file -in the top level directory of the source): -

      -
    • Add extra ways of deciding when to delete old backups - e.g, by time, or -by space. -
    • Add acl/xattr support for Solaris. -
    • Server-side file encryption option, so that network deltas can still be - done if you have file encryption turned on. -
    • Improve the status monitor. -
    • Add include/exclude wildcards. -
    • Start thinking about how to make a client-side gui for doing things like - restores. -
    • Get EFS backup/restore working on Windows. -
    • Add a mechanism that can make clients upgrade automatically. -
    - -

    -
    - -

    - -Q. What are the main dependencies? - -

    -

    - -A. They are: -

      -
    • librsync -
    • openssl -
    • zlib (>=1.2.5 is recommended) -
    - -

    - -
    - -

    - -Q. Do I need to install cygwin on Windows? - -

    -

    - -No. - -

    - -
    - -

    - -Q. How do I build the Windows client? - -

    -

    - -This is slightly complicated. You might want to go to the DOWNLOAD page and -get a prebuilt binary. If you really want to build it yourself, follow the -instructions in the README file in the src/win32 directory of the burp source. - -

    - -
    - -

    - -Q. How do I build a static Linux binary? - -

    -

    - -Use the --enable-static and --disable-libtool configure script options. - -

    - -
    -

    - -Q. What licence does Burp use? - -

    - -

    - -A. It is open source free software (where 'free' means both that you do not have -to pay for it, and that you have freedom to do what you want with it) released -under the AGPLv3 licence. Refer to the Burp -LICENCE file for more details. - -

    - -
    - -

    - -Q. How can I do a "bare metal" restore? - -

    - -

    - -A. There are instructions for Windows 7. -
    -If anybody wants to contribute instructions for any other operating system, -please feel free. -
    -

    - -
    -

    - -Q. I get errors like "/0000/0000/1ACA.gz: File too large" in my log. - -

    - -

    - -A. This is burp trying to open a backed up file on the burp server. -Older versions of zlib can have problems opening large files. Try upgrading -zlib to at least version 1.2.5. - -

    - -
    -

    - -Q. Are you going to do data deduplication on the server side? - -

    - -

    - -Yes, new in version 1.2.4. -Note, that there are file systems (like btrfs, zfs and btrfs) coming along that -will do data deduplication automatically, and probably better than burp. - -

    - -
    -

    - -Q. What is the best file system to use on the server? - -

    - -

    - -So far, I have done all my testing on ext3, and it works for me. The main -concern is not to run out of file system inodes. You can configure the number -of inodes when you create the ext3 file system, but you cannot change the -number later without reformatting. -
    -
    -One of my test clients has over a million files. Because I had used -the ext3 optimisation option for large files on the storage device (having -previously been using it for bacula), I initially ran out of inodes. -Reformatting the file system to have more inodes has solved the problem. -
    -
    -To see how many inodes I have, I use the command 'df -i' -
    -
    -Here is a helpful 10-year old mailing list post about ext3 inodes: -http://markmail.org/message/ergkrg6thswonkgo -
    -
    -(ignore the recommendation for reiserfs - I believe that ext3 has moved on more -than reiserfs over the last 10 years!) -
    -

    - -
    -

    - -Q. I specified LDFLAGS="-L /opt/somepath" to build burp, but when I run it, it uses the system libraries instead of the libraries I installed in /opt/somepath! - -

    - -

    - -Try this: LDFLAGS="-L /opt/somepath -R /opt/somepath" - -

    - -
    - -

    - -Q. On Windows, the client exits with a message like: -"Could not open 'C:/Documents and Settings/Administrator/NTUSER.DAT': The file is in use by another process." -Why? - -

    - -

    - -On newer versions of Windows, things called 'junction points' have been added. -In the example given, 'include = C:/Documents and Settings' was set in the -client burp.conf, but 'C:/Documents and Settings' is a junction point and the -real path is 'C:/Users'. -
    -Pointing burp at the junction point means that it goes outside of the VSS -snapshot, and hence cannot open files that other processes have open. -Use the real path instead. -
    -

    - -
    - -

    - -Q. My backup fails with the message 'error in async_rw'. Why? - -

    - -

    - -This normally means that the other side of the connection went away. -For example, it happens to me when I close my laptop lid, or when my laptop -goes into hibernate mode, or when I pull the network cable out. -
    -Otherwise, if you are seeing this message on the server, it is worth running -the backup by hand from a console on the client (if you are not already doing -so), as it may give you more information to work with. -
    -

    - -
    - -

    - -Q. How can I automatically upgrade burp clients? - -

    - -

    - -A. There are instructions here. - -

    - - -
    - - - - - - - - - -
    -
    - - - - -
    -
    -

    - -Burp is open and free software. I work on it in my spare time. -If you would like this work to continue, please consider making a small -donation. - -

    -
    -
    - -
    -
    -
    - -
    - -Burp, don't suck. - - - -Last updated: February 2012 - -
    - - - - - diff -Nru burp-1.3.0+20120214git/website/html/howto/wincompile.html burp-1.3.1/website/html/howto/wincompile.html --- burp-1.3.0+20120214git/website/html/howto/wincompile.html 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/html/howto/wincompile.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ - - - - - - -BURP - BackUp and Restore Program - - - - - - - - - - - -
    - - - - -

    - -BURP - BackUp and Restore Program - - -
    - - - - - - - - - -
    indexwhyfaqhowtodownloadcontact
    -
    - -

    - - -dsf - - - - - - - - - -
    -
    - - - - -
    -
    -

    - -Burp is open and free software. I work on it in my spare time. -If you would like this work to continue, please consider making a small -donation. - -

    -
    -
    - -
    -
    -
    - -Late updated: February 2011 - -
    - - - - - diff -Nru burp-1.3.0+20120214git/website/html/howto.html burp-1.3.1/website/html/howto.html --- burp-1.3.0+20120214git/website/html/howto.html 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/html/howto.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,836 +0,0 @@ - - - - - - -BURP - BackUp and Restore Program - - - - - - - - - - - -
    - - - - -

    - -BURP - BackUp and Restore Program - - -
    - - - - - - - - - -
    indexwhyfaqhowtodownloadcontact
    -
    - -

    - - - - - - - - - - - - -
    -
    -

    - -

    -QUICK START
    -
    -You need to compile burp on a unix-based operating system first.
    -Make sure that you have openssl, zlib and librsync libraries and development
    -libraries installed. With debian or ubuntu, this command should install them
    -for you:
    -apt-get install librsync-dev libz-dev libssl-dev
    -Change to the burp source directory and run "./configure",
    -then "make".
    -All being well, burp will compile successfully.
    -Then run "make install" as root to install.
    -
    -Start the burp server with this command:
    -burp -c /etc/burp/burp-server.conf
    -
    -By default, the server will fork into the background and run as a daemon. To
    -stay in the foreground, add the '-F' option.
    -
    -UNIX CLIENT
    -
    -The example client configuration file is /etc/burp/burp.conf.
    -It will backup /home by default.
    -
    -A cron job for the client is installed to /etc/cron.d/burp and will run every
    -20 minutes. Whether or not this results in an actual backup depends upon the
    -timer settings in the server config files.
    -
    -You can either force a backup by hand:
    -burp -a b
    - 
    -Or add a regular cron job like the following to /etc/cron.d/burp (or
    -equivalent). This makes the client ask the server every twenty minutes whether
    -it is yet time for a new backup. It is probably a good idea to change the
    -numbers for each client, in order to spread the load a bit:
    -MAILTO=
    -7,27,47 * * * * root    /sbin/burp -a t
    -
    -WINDOWS CLIENT
    -
    -Pick the 32-bit or 64-bit Burp installer as appropriate - visit
    -http://burp.grke.net/ to find one of them.
    -Compilation instructions can be found at src/win32/README in the source package.
    -The Windows installer will ask you for the address of your server, the client
    -name, and the client password. Burp will then install its files to:
    -C:/Program Files/Burp
    -If you need to change client configuration settings, the file can be found at:
    -C:/Program Files/Burp/burp.conf
    -It will be configured to backup "C:/Documents and Settings".
    -
    -A Windows Scheduler task will have been installed and will be configured to
    -run every 20 minutes from the time of the installation. Whether or not this
    -results in an actual backup depends upon the timer settings in the server
    -config files.
    -
    -To force a backup by hand, start the burp client from within its directory:
    -cd "C:\Program Files\Burp\bin"
    -burp.exe -a b
    -If you are running Windows 7, you might need to start the command prompt with
    -"Run as Administrator".
    -
    -
    -
    -For more help, see the man page - type 'man burp'.
    -
    -
    -For the benefit of the website, the man page now follows.
    -
    -
    -Burp(8) 							       Burp(8)
    -
    -
    -
    -NAME
    -       Burp - BackUp and Restore Program
    -
    -SYNOPSIS
    -       burp [OPTIONS]
    -
    -DESCRIPTION
    -       BackUp and Restore Program.
    -
    -
    -SERVER OPTIONS
    -       -c path
    -	      Short  for  'config  file'. The argument is a path to the config
    -	      file. The default is /etc/burp/burp.conf.
    -
    -       -n     No forking mode. The program will accept a  single  query,  deal
    -	      with  it,  and  then exit. This is useful for debugging. Implies
    -	      '-F'.
    -
    -       -F     Foreground mode. The server will fork into  the  background  and
    -	      run as a daemon if you do not give this option.
    -
    -       -a s   Run this to connect to a running server to get a live monitor of
    -	      the status of all your backup clients.  If  your	server	config
    -	      file is not in the default location, you will also need to spec‐
    -	      ify the path with the '-c' option.  The  live  monitor  requires
    -	      ncurses support at compile time.
    -
    -       -a S   Similar to '-a s', but it prints the main status monitor summary
    -	      screen to stdout. The intention is that a script	can  run  this
    -	      and  email  an  administrator  the  output  on  a cron job. This
    -	      doesn't require ncurses support.
    -
    -       -i     Print an index table of symbols that humans may  see  burp  pro‐
    -	      duce, and exit.
    -
    -       -l [path]
    -	      Path  to	log file. The default is stdout. This option overrides
    -	      the logfile option in the config file. Use /dev/null to  deacti‐
    -	      vate or '' to reactivate output.
    -
    -
    -CLIENT OPTIONS
    -       -a [b|t|r|l|L|v|e]
    -	      Short  for  'action'.  The  arguments mean backup, timed backup,
    -	      restore, list, long list, verify, or estimate, respectively.
    -
    -       -b [number|a]
    -	      Short for 'backup number'. The argument is a number, or  'a'  to
    -	      select all backups.
    -
    -       -c [path]
    -	      Short  for  'config  file'. The argument is a path to the config
    -	      file.  The  default  is	/etc/burp/burp.conf,   or   C:\Program
    -	      Files\Burp\burp.conf on Windows.
    -
    -       -d [path]
    -	      Short  for 'directory'. The argument is a path to an alternative
    -	      directory to restore to.
    -
    -       -f [path]
    -	      Short for 'force overwrite'. Without this option set, a  restore
    -	      will not overwrite existing files.
    -
    -       -i     Print  an  index	table of symbols that humans may see burp pro‐
    -	      duce, and exit.
    -
    -       -r [regex]
    -	      Short for  'regular  expression'.  The  argument	is  a  regular
    -	      expression  with	which  to match backup files. Use it for lists
    -	      and restores.
    -
    -       -l [path]
    -	      Short for 'log file'. The argument is a path to  the  log  file.
    -	      The  default is stdout. This option overrides the logfile option
    -	      in the config file. Use /dev/null to deactivate or '' to reacti‐
    -	      vate output.
    -
    -
    -EXAMPLES
    -       burp -a b
    -	      Runs a backup.
    -
    -       burp -a l
    -	      Lists the available backups and dates.
    -
    -       burp -a l -b 1
    -	      Lists all the files in backup number 1.
    -
    -       burp -a l -b 1 -l /dev/null
    -	      Lists all the files in backup number 1 without extra debug info.
    -
    -       burp -a l -b a
    -	      Lists all the files in all the backups.
    -
    -       burp -a l -b 1 -r myregex
    -	      Lists  all  the  files in backup number 1 that match the regular
    -	      expression 'myregex'.
    -
    -       burp -a L -b 1 -r myregex
    -	      Long lists all the files in backup number 1 that match the regu‐
    -	      lar expression 'myregex'. This is like doing an 'ls -l'.
    -
    -       burp -a r -b 1 -r myregex
    -	      Restores all the files in backup number 1 that match the regular
    -	      expression 'myregex' back to their original location. You  won't
    -	      be given a warning if the files already exist there, so use with
    -	      caution.
    -
    -       burp -a r -b 1 -r myregex -d /tmp/restoredir
    -	      Restores all the files in backup number 1 that match the regular
    -	      expression 'myregex' into the directory /tmp/restoredir.
    -
    -       burp -a r
    -	      Restores all the files in the most recent backup to their origi‐
    -	      nal location. You won't be given a warning if the files  already
    -	      exist there, so use with caution.
    -
    -       burp -a v
    -	      Verifies the most recent backup.
    -
    -       burp -a v -b 1 -r myregex
    -	      Verifies	everything in backup number 1 that matches the regular
    -	      expression 'myregex'.
    -
    -       burp -a t
    -	      Timed backup. The same as 'burp -a b', except that a  script  is
    -	      run  on the server before deciding to go ahead. The intention is
    -	      that this command will be run on a repeating  cron  job  with  a
    -	      short  interval, and that the server will decide when it is time
    -	      for a new backup.
    -
    -
    -SERVER CONFIGURATION FILE OPTIONS
    -       mode=server
    -	      Required to run in server mode.
    -
    -       port=[port number]
    -	      Defines the main TCP port that the server listens on.
    -
    -       status_port=[port number]
    -	      Defines the TCP port that  the  server  listens  on  for	status
    -	      requests.
    -
    -       directory=[path]
    -	      Path to the directory in which to store backups.
    -
    -       clientconfdir=[path]
    -	      Path to the directory that contains client configuration files.
    -
    -       lockfile=[path]
    -	      Path to the lockfile that ensures that two server processes can‐
    -	      not run simultaneously.
    -
    -       pidfile=[path]
    -	      Synonym for lockfile.
    -
    -       logfile=[path]
    -	      Path to the logfile.
    -
    -       keep=[number]
    -	      Number of backups to keep. This can be overriddden by the client
    -	      configuration files in clientconfdir on the server. Specify mul‐
    -	      tiple 'keep' entries on separate lines in order to keep multiple
    -	      periods  of  backups. For example, assuming that you are doing a
    -	      backup a day, keep=7 keep=4 keep=6 (on separate lines) will keep
    -	      7 daily backups, 4 weekly backups (7x4=28), and 6 multiples of 4
    -	      weeks (7x4x6=168) - roughly 6 monthly backups. Effectively,  you
    -	      will  be	guaranteed  to	be able to restore up to 168 days ago,
    -	      with the number of available backups exponentially decreasing as
    -	      you  go  back  in time to that point. In this example, every 7th
    -	      backup will be hardlinked to allow burp to safely delete	inter‐
    -	      mediate  backups	when  necessary.  You  can have as many 'keep'
    -	      lines as you like, as long as they don't	exceed	52560000  when
    -	      multiplied  together.  That  is,	a  backup every minute for 100
    -	      years.
    -
    -       hardlinked_archive=[0|1]
    -	      On the server, defines whether to keep hardlinked files  in  the
    -	      backups,	or  whether  to generate reverse deltas and delete the
    -	      original files. Can be set to either 0 (off) or 1  (on).	Disad‐
    -	      vantage:	More  disk space will be used Advantage: Restores will
    -	      be faster, and since no reverse deltas need to be generated, the
    -	      time  and  effort  the  server  needs  at the end of a backup is
    -	      reduced.
    -
    -       max_hardlinks=[number]
    -	      On the server, the number of times that a  single  file  can  be
    -	      hardlinked.  The	bedup  program	also  obeys  this setting. The
    -	      default is 10000.
    -
    -       librsync=[0|1]
    -	      When set to 0, delta differencing will not take place. That  is,
    -	      when a file changes, the server will request the whole new file.
    -	      The default is 1. This option can be overridden  by  the	client
    -	      configuration files in clientconfdif on the server.
    -
    -       compression=[gzip0-9]
    -	      Choose  the  level of gzip compression. Setting 0 or gzip0 turns
    -	      compression off. The default is gzip9. This option can be  over‐
    -	      ridden by the client configuration files in clientconfdif on the
    -	      server.
    -
    -       client_lockdir=[path]
    -	      Path to the directory in which to keep per-client lock files. By
    -	      default,	this  is  set  to  the	path  given by the 'directory'
    -	      option.
    -
    -       user=[username]
    -	      Run as a particular user. This can be overridden by  the	client
    -	      configuration files in clientconfdir on the server.
    -
    -       group=[groupname]
    -	      Run  as a particular group. This can be overridden by the client
    -	      configuration files in clientconfdir on the server.
    -
    -       umask=[umask]
    -	      Set the file creation umask. Default is 0022.
    -
    -       ratelimit=[Mb/s]
    -	      Set the network send rate limit, in Mb/s. If this option is  not
    -	      given, burp will send data as fast as it can.
    -
    -       network_timeout=[s]
    -	      Set  the	network  timeout  in  seconds.	If  no data is sent or
    -	      received over a period of this length, burp will	give  up.  The
    -	      default is 7200 seconds (2 hours).
    -
    -       working_dir_recovery_method=[resume|use|delete]
    -	      This  option tells the server what to do when it finds the work‐
    -	      ing directory of an interrupted backup (perhaps somebody	pulled
    -	      the plug on the server, or something). This can be overridden by
    -	      the client configurations files in clientconfdir on the  server.
    -	      Options are...
    -
    -       delete: Just delete the old working directory.
    -
    -       use: Convert the working directory into a complete backup.
    -
    -       resume:	Simply continue the previous backup from the point at which it
    -       left off.
    -
    -       ssl_cert_ca=[path]
    -	      The path to the SSL CA certificate. This file will  probably  be
    -	      the same on both the server and the client. The file should con‐
    -	      tain just the certificate in PEM format
    -
    -       ssl_cert=[path]
    -	      The path to the server SSL certificate. It works for me when the
    -	      file  contains  the concatenation of the certificate and private
    -	      key in PEM format.
    -
    -       ssl_key=[path]
    -	      The path to the server SSL private key in PEM format.
    -
    -       ssl_key_password=[password]
    -	      The SSL key password.
    -
    -       ssl_cert_password=[password]
    -	      Synonym for ssl_key_password.
    -
    -       ssl_dhfile=[path]
    -	      Path to Diffie-Hellman parameter	file.  To  generate  one  with
    -	      openssl,	 use   a  command  like  this:	openssl  dhparam  -out
    -	      dhfile.pem -5 1024
    -
    -       max_children=[number]
    -	      Defines the number of child processes to	fork  (the  number  of
    -	      clients that can simultaneously connect. The default is 5.
    -
    -       max_storage_subdirs=[number]
    -	      Defines  the number of subdirectories in the data storage areas.
    -	      The maximum number of subdirectories that ext3 allows is	32000.
    -	      If you do not set this option, it defaults to 30000.
    -
    -       timer_script=[path]
    -	      Path  to the script to run when a client connects with the timed
    -	      backup option. If the script exits with code 0,  a  backup  will
    -	      run. The first two arguments are the client name and the path to
    -	      the 'current' storage directory. The next  three	arguments  are
    -	      reserved, and user arguments are appended after that. An example
    -	      timer script is provided. The timer_script option can  be  over‐
    -	      riddden  by  the	client configuration files in clientconfdir on
    -	      the server.
    -
    -       timer_arg=[string]
    -	      A user-definable argument to the timer script. You can have many
    -	      of these. The timer_arg options can be overriddden by the client
    -	      configuration files in clientconfdir on the server.
    -
    -       notify_success_script=[path]
    -	      Path to the script to run when a backup succeeds. User arguments
    -	      are appended after the first five reserved arguments. An example
    -	      notify script is provided. The notify_success_script option  can
    -	      be  overriddden  by  the	client	configuration files in client‐
    -	      confdir on the server.
    -
    -       notify_success_arg=[string]
    -	      A user-definable argument to the notify success script. You  can
    -	      have  many of these. The notify_success_arg options can be over‐
    -	      riddden by the client configuration files  in  clientconfdir  on
    -	      the server.
    -
    -       notify_success_warnings_only=[0|1]
    -	      Set  to  1  to  send  success notifications only when there were
    -	      warnings. Leave unset or set to 0 to send success  notifications
    -	      for every backup.
    -
    -       notify_failure_script=[path]
    -	      The same as notify_success_script, but for backups that failed.
    -
    -       notify_failure_arg=[string]
    -	      The same as notify_failure_arg, but for backups that failed.
    -
    -       dedup_group=[string]
    -	      Enables  you  to	group  clients together for file deduplication
    -	      purposes. For example, you might want  to  set  'dedup_group=xp'
    -	      for  each Windows XP client, and then run the bedup program on a
    -	      cron job every other day with the option '-g xp'.
    -
    -       server_script_pre=[path]
    -	      Path to a script to run on the server  after  each  successfully
    -	      authenticated connection but before any work is carried out. The
    -	      arguments to it are 'pre', '(client  command)',  'reserved3'  to
    -	      'reserved5',	and	 then	  arguments	defined     by
    -	      server_script_pre_arg. If the script returns non-zero, the  task
    -	      asked  for  by  the  client  will  not  be run. This command and
    -	      related options can be overriddden by the  client  configuration
    -	      files in clientconfdir on the server.
    -
    -       server_script_pre_arg=[string]
    -	      A user-definable argument to the server pre script. You can have
    -	      many of these.
    -
    -       server_script_post=[path]
    -	      Path to a script to run on the server before the client  discon‐
    -	      nects.  The  arguments  to  it  are  'post', '(client command)',
    -	      'reserved3'  to  'reserved5',  and  then	arguments  defined  by
    -	      server_script_post_arg.  This command and related options can be
    -	      overriddden by the client configuration files  in  clientconfdir
    -	      on the server.
    -
    -       server_script_post_arg=[string]
    -	      A  user-definable  argument  to  the server post script. You can
    -	      have many of these.
    -
    -       server_script=[path]
    -	      You can use this to save space in your config file when you want
    -	      to   run	 the   same   server   script	twice.	 It  overrides
    -	      server_script_pre  and  server_script_post.  This  command   and
    -	      related  options	can be overriddden by the client configuration
    -	      files in clientconfdir on the server.
    -
    -       server_script_arg=[path]
    -	      Goes with server_script and overrides server_script_pre_arg  and
    -	      server_script_post_arg.
    -
    -       server_script_post_run_on_fail=[0|1]
    -	      If  this is set to 1, server_script_post will always be run. The
    -	      default is 0, which means that if the  task  asked  for  by  the
    -	      client fails, server_script_post will not be run.
    -
    -       autoupgrade_dir=[path]
    -	      Path  to	autoupgrade  directory	from  which upgrades are down‐
    -	      loaded. The option can be left unset in order not to autoupgrade
    -	      clients.	Please	see docs/autoupgrade.txt in the source package
    -	      for more help with this option.
    -
    -
    -CLIENT CONFIGURATION FILE OPTIONS
    -       mode=client
    -	      Required to run in client mode.
    -
    -       server=[IP address or hostname]
    -	      Defines the server to connect to.
    -
    -       port=[port number]
    -	      Defines the TCP port that the server is listening on.
    -
    -       cname=[password]
    -	      Defines the client name to identify as to the server.
    -
    -       password=[password]
    -	      Defines the password to send to the server.
    -
    -       lockfile=[path]
    -	      Path to the lockfile that ensures that two client processes can‐
    -	      not run simultaneously (this currently doesn't work on Windows).
    -
    -       pidfile=[path]
    -	      Synonym for lockfile.
    -
    -       logfile=[path]
    -	      Path to the logfile.
    -
    -       user=[username]
    -	      Run as a particular user (not supported on Windows).
    -
    -       group=[groupname]
    -	      Run as a particular group (not supported on Windows).
    -
    -       ratelimit=[Mb/s]
    -	      Set  the network send rate limit, in Mb/s. If this option is not
    -	      given, burp will send data as fast as it can.
    -
    -       network_timeout=[s]
    -	      Set the network timeout in  seconds.  If	no  data  is  sent  or
    -	      received	over  a  period of this length, burp will give up. The
    -	      default is 7200 seconds (2 hours).
    -
    -       include=[path]
    -	      Path to include in the backup. You  can  have  multiple  include
    -	      lines.  Use  forward  slashes  '/',  not backslashes '\' as path
    -	      delimiters.
    -
    -       exclude=[path]
    -	      Path to exclude from the backup. You can have  multiple  exclude
    -	      lines.  Use  forward  slashes  '/',  not backslashes '\' as path
    -	      delimiters.
    -
    -       exclude_ext=[extension]
    -	      Extensions to exclude from the backup. Case insensitive. You can
    -	      have multiple exclude extension lines. For example, set 'vdi' to
    -	      exclude VirtualBox disk images.
    -
    -       min_file_size=[b/Kb/Mb/Gb]
    -	      Do not back up files that are  less  than  the  specified  size.
    -	      Example:	'min_file_size = 10Mb'. Set to 0 (the default) to have
    -	      no limit.
    -
    -       max_file_size=[b/Kb/Mb/Gb]
    -	      Do not back up files that are greater than the  specified  size.
    -	      Example:	'max_file_size = 10Mb'. Set to 0 (the default) to have
    -	      no limit.
    -
    -       cross_filesystem=[path]
    -	      Allow backups to cross a particular filesystem mountpoint.
    -
    -       cross_all_filesystems=[0|1]
    -	      Allow backups to cross all filesystem mountpoints.
    -
    -       nobackup=[file name]
    -	      If this file system entry exists, the  directory	containing  it
    -	      will not be backed up.
    -
    -       read_fifo=[path]
    -	      Do  not  back  up the given fifo itself, but open it for reading
    -	      and back up the contents as if it were a regular file.
    -
    -       read_all_fifos=[0|1]
    -	      Open all fifos for reading and back up the contents as  if  they
    -	      were regular files.
    -
    -       ssl_cert_ca=[path]
    -	      The  path  to the SSL CA certificate. This file will probably be
    -	      the same on both the server and the client. The file should con‐
    -	      tain just the certificate in PEM format
    -
    -       ssl_cert=[path]
    -	      The path to the client SSL certificate. It works for me when the
    -	      file contains the concatenation of the certificate  and  private
    -	      key in PEM format.
    -
    -       ssl_key=[path]
    -	      The path to the client SSL private key in PEM format.
    -
    -       ssl_key_password=[password]
    -	      The SSL key password.
    -
    -       ssl_cert_password=[password]
    -	      Synonym for ssl_key_password.
    -
    -       encryption_password=[password]
    -	      Set  this to enable client side file Blowfish encryption. If you
    -	      do not want encryption, leave this  field  out  of  your	config
    -	      file.  IMPORTANT:  Configuring  this  renders delta differencing
    -	      pointless, since the smallest real change to a  file  will  make
    -	      the whole file look different. Therefore, activating this option
    -	      turns off delta differencing so  that  whenever  a  client  file
    -	      changes, the whole new file will be uploaded on the next backup.
    -	      ALSO IMPORTANT: If you manage to lose your encryption  password,
    -	      you  will not be able to unencrypt your files. You should there‐
    -	      fore think about having a copy of the encryption password  some‐
    -	      where  off-box,  in  case  of  your  client  hard  disk failing.
    -	      FINALLY: If you change your encryption password, you will end up
    -	      with  a mixture of files on the server with different encryption
    -	      and it may become tricky to restore more	than  one  file  at  a
    -	      time.  For  this reason, if you change your encryption password,
    -	      you may want to start a fresh chain of backups  (by  moving  the
    -	      original set aside, for example). Burp will cope fine with turn‐
    -	      ing the same encryption password on and off between backups, and
    -	      will  restore  a backup of mixed encrypted and unencrypted files
    -	      without a problem.
    -
    -       backup_script_pre=[path]
    -	      Path to a script to run before a backup. The arguments to it are
    -	      'pre', 'reserved2' to 'reserved5', and then arguments defined by
    -	      backup_script_pre_arg.
    -
    -       backup_script_pre_arg=[string]
    -	      A user-definable argument to the backup pre script. You can have
    -	      many of these.
    -
    -       backup_script_post=[path]
    -	      Path  to a script to run after a backup. The arguments to it are
    -	      'post', [0|1] if the backup failed or succeeded, 'reserved3'  to
    -	      'reserved5',	and	 then	  arguments	defined     by
    -	      backup_script_post_arg.
    -
    -       backup_script_post_arg=[string]
    -	      A user-definable argument to the backup  post  script.  You  can
    -	      have many of these.
    -
    -       backup_script_post_run_on_fail=[0|1]
    -	      If  this is set to 1, backup_script_post will be run whether the
    -	      backup succeeds or not. The  default  is	0,  which  means  that
    -	      backup_script_post will only be run if the backup succeeds.
    -
    -       restore_script_pre=[path]
    -	      Path  to	a  script to run before a restore. The arguments to it
    -	      are  'pre',  'reserved2'	to  'reserved5',  and  then  arguments
    -	      defined by restore_script_pre_arg.
    -
    -       restore_script_pre_arg=[string]
    -	      A  user-definable  argument  to  the restore pre script. You can
    -	      have many of these.
    -
    -       restore_script_post=[path]
    -	      Path to a script to run after a restore. The arguments to it are
    -	      'post', [0|1] if the restore failed or succeeded, 'reserved3' to
    -	      'reserved5',     and     then	arguments      defined	    by
    -	      restore_script_post_arg.
    -
    -       restore_script_post_arg=[string]
    -	      A  user-definable  argument  to the restore post script. You can
    -	      have many of these.
    -
    -       restore_script_post_run_on_fail=[0|1]
    -	      If this is set to 1, restore_script_post will be run whether the
    -	      restore  succeeds  or  not.  The	default is 0, which means that
    -	      restore_script_post will only be run if the restore succeeds.
    -
    -       backup_script=[path]
    -	      You can use this to save space in your config file when you want
    -	      to  run  the same script before and after a backup. It overrides
    -	      backup_script_pre and backup_script_post.
    -
    -       backup_script_arg=[path]
    -	      Goes with backup_script and overrides backup_script_pre_arg  and
    -	      backup_script_post_arg.
    -
    -       restore_script=[path]
    -	      You can use this to save space in your config file when you want
    -	      to run the same script before and after a restore. It  overrides
    -	      restore_script_pre and restore_script_post.
    -
    -       restore_script_arg=[path]
    -	      Goes  with  restore_script  and overrides restore_script_pre_arg
    -	      and restore_script_post_arg.
    -
    -       autoupgrade_dir=[path]
    -	      Path to autoupgrade directory  into  which  upgrades  are  down‐
    -	      loaded.  Please  see  docs/autoupgrade.txt in the source package
    -	      for more help with this option. If you do not want  your	client
    -	      to autoupgrade, do not set this option.
    -
    -       autoupgrade_os=[string]
    -	      Name  of	the  client operating system. Should match a directory
    -	      name in the server's autoupgrade_dir. If you do  not  want  your
    -	      client to autoupgrade, do not set this option.
    -
    -
    -
    -SERVER CLIENTCONFDIR FILE
    -       For  the  server to know about clients that can contact it, you need to
    -       place a file named after the client in clientconfdir.
    -
    -       The file name must match the name in the 'cname' field on the client.
    -
    -       ssl_peer_cn=[string] must also be set and match the common name in  the
    -       SSL certificate that the client gives when it connects.
    -
    -       The  file needs to contain a line like password=[password] that matches
    -       the same field on the client, or passwd=[encrypted  password]  -  where
    -       the  plain  text  password  on  the  client  will  be tested against an
    -       encrypted password of the kind you might find in /etc/passwd.
    -
    -       Additionally, the following options can be  overridden  here  for  each
    -       client:
    -	      directory  keep working_dir_recovery_method librsync compression
    -	      timer_script timer_arg notify_success_script  notify_success_arg
    -	      notify_success_warnings_only  notify_failure_script notify_fail‐
    -	      ure_arg  dedup_group   server_script_pre	 server_script_pre_arg
    -	      server_script_post      server_script_post_arg	 server_script
    -	      server_script_arg server_script_post_run_on_fail
    -
    -
    -Some notes on SSL certificates
    -       The burp example configs come with example SSL certificates  and  keys.
    -       You can use these and burp will work. But if you are worried about net‐
    -       work security, you should generate your own certificates and  keys  and
    -       point  your config files to them. To create the example files, I used a
    -       handy  interface  to  openssl,	called	 'tinyca'   (http://tinyca.sm-
    -       zone.net/).  If	you  are  using  Debian,  you can run 'apt-get install
    -       tinyca' to get it. There is also the option of using burp_ca, which you
    -       can find in the source distribution, courtesy of Patrick Koppen.
    -
    -
    -Examining backups
    -       As  well  as  using the client list options described above, you can go
    -       directly to the storage directory on the  server.  The  backups	for  a
    -       client  are in the directory named after the client. Inside each backup
    -       directory is a file called manifest.gz.
    -
    -       This contains a list of all the files in the  backup,  and  where  they
    -       originally came from on the client.
    -
    -       There  is  also a 'log.gz' file in the backup directory, which contains
    -       the output generated by the server during the backup.
    -
    -       The 'data' directory contains complete backup files.
    -
    -       The 'deltas.reverse' directory contains	reverse  deltas  that  can  be
    -       applied	to the data from the next backup in the sequence (indicated by
    -       the contents of the 'forward' file).
    -
    -       Anything with a .gz suffix is compressed in gzip format.  You  can  use
    -       standard  tools,  such  as zcat, zless or cp, to view them or copy them
    -       elsewhere.
    -
    -
    -
    -BUGS
    -       If you find bugs, please report them to the email list. See the website
    -        for details.
    -
    -
    -AUTHOR
    -       The main author of Burp is Graham Keeling.
    -
    -
    -COPYRIGHT
    -       See the LICENCE file included with the source distribution.
    -
    -
    -
    -				     Burp			       Burp(8)
    -
    - -

    - -
    - - - - - - - - - -
    -
    - - - - -
    -
    -

    - -Burp is open and free software. I work on it in my spare time. -If you would like this work to continue, please consider making a small -donation. - -

    -
    -
    - -
    -
    -
    - -
    - -Burp, don't suck. - - - -Last updated: February 2012 - -
    - - - - - diff -Nru burp-1.3.0+20120214git/website/html/images/index.html burp-1.3.1/website/html/images/index.html --- burp-1.3.0+20120214git/website/html/images/index.html 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/html/images/index.html 2012-02-27 14:06:10.000000000 +0000 @@ -88,7 +88,7 @@ -Last updated: February 2012 +Last updated: March 2012 diff -Nru burp-1.3.0+20120214git/website/html/index.html burp-1.3.1/website/html/index.html --- burp-1.3.0+20120214git/website/html/index.html 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/html/index.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,509 +0,0 @@ - - - - - - -BURP - BackUp and Restore Program - - - - - - - - - - - -
    - - - - -

    - -BURP - BackUp and Restore Program - - -
    - - - - - - - - - -
    indexwhyfaqhowtodownloadcontact
    -
    - -

    - - - - - - - - - - - - - - - - -
    -
    -

    - -Burp is a network backup and restore program. It uses librsync in order to -save network traffic and to save on the amount of space that is used by each -backup. -It also uses VSS (Volume Shadow Copy Service) to make snapshots when backing -up Windows computers. - -

    - -

    - -It is open source free software (where 'free' means both that you do not have -to pay for it, and that you have freedom to do what you want with it) released -under the AGPLv3 licence. See the FAQ for more information. - -

    - -

    - -Finally, as with the vast majority of open software, Burp comes with -absolutely no warranty. You are responsible for testing it and ensuring that -it works for you. -Please see the FAQ page for more information on this. - -

    - -

    - -The main author of Burp is Graham Keeling. - -

    - -
    -

    Current stable version: 1.2.2

    -
    - -

    NEWS

    - -
    - -

    -2012-01-27: burp-1.30 is released. -

    -Changes in burp-1.3.0:
    -  * Add a mechanism for automatically upgrading clients.
    -  * Fix bug where attributes on Windows directories were not getting read
    -    properly.
    -  * Fix rounding problem in remaining time estimation in the status monitor.
    -  * Don't backup the whole file if only ctime changed.
    -  * Include the client name in arguments to server scripts.
    -  * Do not log a message in the server SIGCHLD handler, as this appeared to
    -    be causing an occasional lock up on a Ubuntu server.
    -  * Upgrade Windows depkgs to latest versions of openssl.
    -  * Make Windows uninstall work.
    -  * Add 'allow autoupgrade' option to a second screen on the Windows installer.
    -  * Add 'max_storage_subdirs' option, and default it to 30000.
    -
    - -

    - -

    -2011-12-30: burp-1.2.7 is released. -

    -Changes in burp-1.2.7:
    -  * Add an automated test script.
    -  * Fix bugs with uncompressed encrypted backup/restore.
    -  * Get verify all backups for a client (-a v -b a) to work.
    -  * Return non-zero if there were warnings on verify or restore.
    -  * Add 'min_file_size' option, fix 'max_file_size' option.
    -  * Add generic server-side pre/post scripts that can run on every connection
    -    after authentication and before disconnecting.
    -  * Set environment variables from SSL cert details so that the server-side
    -    scripts can see them.
    -  * Add Jason Haar's server script for doing extra SSL certificate checks.
    -  * Add 'max_hardlinks' option, which limits the number of times a single file
    -    is hardlinked in storage. Default is 10000.
    -  * Add '-i' option: print an index table of symbols that humans may see burp
    -    produce, and exit.
    -  * Let backups carry on when files cannot be opened.
    -  * Spot Windows EFS directories and files and warn about them.
    -  * Add an 'estimate' option (-a e), which does a scan of the file system to
    -    be backed up, and prints counters, without contacting the server.
    -  * Strip out 744 lines of unused Windows code.
    -  * Fix possible segfault when backup directory forward paths don't match.
    -  * Removed working_dir_recovery_method=merge. Use 'resume' instead.
    -  * Add a flexible way of passing new fields from the client to the server so
    -    that clients are less likely to have to upgrade.
    -
    - -

    - -

    -2011-11-26: burp-1.2.5 is released. -

    -Changes in burp-1.2.5:
    -  * IMPORTANT: Fixed critical path comparison typo bug. If you have been using
    -	1.2.4 either as a server or as a client, you need to upgrade
    -	immediately! Backups made with 1.2.4 should be treated as suspicious.
    -  * Add a 'max_file_size' option.
    -  * Store windows file attributes in a separate field to the standard unix ones.
    -
    - -

    - -

    -2011-11-22: burp-1.2.4 is released. -

    -Changes in burp-1.2.4:
    -  * Add a file deduplication program, "bedup".
    -  * Add a network_timeout parameter. Default is 7200 seconds (2 hours).
    -  * Add option to send success notifications only if there were warnings.
    -  * Try to create the pidfile directory if it doesn't exist.
    -  * Restore times on Windows files.
    -  * Restore readonly/hidden attributes on Windows.
    -  * Fix bug in 'keep' mechanism where setting 'keep=2' would delete both
    -        backups.
    -  * Only install clientconfdir/testclient with 'make install' if clientconfdir
    -    didn't previously exist.
    -  * Fix possible segfault when resume mode triggers with nothing to resume.
    -
    - -

    - -

    -2011-09-29: burp-1.2.2 is released. -

    -Changes in burp-1.2.2:
    -  * Multiple retention periods (e.g, keep 1 backup per day for 7 days, 1
    -    backup per week for 4 weeks, 1 backup per 4 weeks for a year). See the
    -    'keep' option in the man page.
    -  * Make sure the client version warning message appears in the backup log.
    -  * Network send rate-limiting feature (both client and server).
    -  * Change pidfile paths to /var/run/burp instead of /var/lock/burp.
    -  * Get pre backup scripts running reliably again. Also, send script messages
    -    on stderr to the server backup log.
    -  * Fix 'Warnings' line on the status monitor.
    -  * Fix resume mode bug to do with potentially partially written entries at
    -    the end of the phase2 file.
    -
    - -

    - -

    -2011-09-09: burp-1.2.0 is released. -

    -Changes in burp-1.2.0:
    -  * Improvements to the counters and status monitor - remember the phase1
    -    scan counters for later phases to use for things like estimated times.
    -  * Add 'working_dir_recovery_method = resume' option, which continues a
    -    backup from the point it was interrupted.
    -  * Add a useful message about options when run with '-h' or '-?'.
    -  * Get the client to pass its version to the server. The minimum version the
    -    client needs to be is now this release.
    -  * Get the server to warn when the client is on a different version.
    -  * Put the number of warnings in the subject of the notification emails.
    -  * Allow config file location to be changed via configure (Michael Roland's
    -    suggestions).
    -  * Implement main server process config reload functionality on SIGHUP.
    -  * Uncomment the reload lines in the Debian init script.
    -  * Add logrotate file for Debian.
    -  * Add ability to send a regular snapshot of the status summary screen in an
    -        email ("daily backup summary" feature).
    -  * Add simple 'exclude_ext =' feature.
    -  * Add Windows 7 bare metal restore instructions.
    -
    - -

    - -

    -2011-09-01: In the UK, a nice half-page review of burp has appeared in the October edition of 'Linux Format' magazine, in their 'Hot Picks' section. - -

    - -

    -2011-07-26: burp-1.1.70 is released. -

    -Changes in burp-1.1.70:
    -  * FreeBSD xattr support.
    -  * FreeBSD ACL support.
    -  * Handle Windows junction points.
    -  * Add 'nobackup = [file name]' option. If this file system entry exists, the
    -    directory containing it will not be backed up.
    -  * Set librsync signature block size based on the old file size.
    -  * Small bug fixes to the status monitor.
    -  * Fixed working directory recovery bug where it couldn't find the manifest.gz
    -    file due to it being called manifest.gz.tmp.
    -  * Get rid of the stupidly complicated 'find_files' callback mechanism
    -    inherited from bacula. Just call all the functions directly.
    -  * Fix compiler warnings and '-ldl' linker error on FreeBSD 8.2.
    -  * When down to 'C:' in mkpath() on Windows restore, strip the ':'.
    -  * Run ERR_clear_error() before SSL_read/write.
    -
    - -

    - - -

    -2011-06-27: burp-1.1.65 is released. -

    -Changes in burp-1.1.65:
    -  * Add mechanism for backing up and restoring extra meta data.
    -  * Linux acl support.
    -  * Linux xattr support.
    -  * Add option to set the umask on the server.
    -  * Added option to specify the clientconfdir password in passwd format.
    -  * Allow user and group options to be placed in the server clientconfdir files,
    -    so that different client backups can be owned by different users.
    -  * Add Patrick's burp_ca patches and README.CA.
    -  * Sanitised magic characters by defining them in a new cmd.h file.
    -  * Fixed 'ret OK, but zstream not finished: 0' when refusing to restore over
    -    existing files.
    -  * Fixed bug that made clients disappear from the status monitor.
    -  * Bug fix the client_lockdir option.
    -  * On the server, be more cautious about creating directories that don't exist.
    -  * Remove link kludge in async_read_stat().
    -
    - -

    - -

    -2011-06-14: burp-1.1.57 is released. -

    -Changes in burp-1.1.57:
    -  * Add options to run as a different user and group.
    -  * Add Patrick Koppen's burp_ca script.
    -  * Get the client restore to use the sbuf functions, remove related kludges.
    -  * Fix possible client segfault when refusing to restore over existing files.
    -  * Make a failure to restore over a busy file not cause the whole restore to
    -    fail.
    -  * Print byte count as well as human readable byte count in the status summary
    -    screen.
    -  * Include backup numbers with the backup list in the status summary.
    -  * Don't close the server read fd when running in non-forking mode.
    -  * Add ssl_key options so that the cert and key can be in separate files.
    -  * Add ssl_key_password, a synonym for ssl_cert_password.
    -
    - -

    - -

    -2011-05-13: burp-1.1.55 is released. -

    -Changes in burp-1.1.55:
    -  * Make the status monitor use ncurses.
    -  * Fixed two bugs that could drastically slow down the server if a file
    -    disappeared on a client after the initial scan (to get these two bug fixes,
    -    you need to upgrade your clients).
    -  * IPv6 patches.
    -  * Ability to specify the location of the client lockfiles on the server.
    -  * Make the server fork into the background by default. Use '-F' to stay in
    -    the foreground.
    -  * Add option to specify a log file.
    -
    - -

    - -

    -2011-04-14: burp-1.1.51 is released. -

    -Changes in burp-1.1.51:
    -  * Added a script for backing up zfs snapshots with 'zfs send'.
    -  * Added the ability to set the level of compression.
    -  * Added the ability to turn off compression.
    -  * Added an option to define the poll interval in the Windows installer.
    -  * Added the ability to turn off librsync delta differencing.
    -  * Added the ability to give arguments to backup/restore/pre/post scripts.
    -  * Make configure/make work better on Solaris.
    -
    - -

    - -

    -2011-04-02: burp-1.1.40 is released. -

    -Changes in burp-1.1.40:
    -  * Ability to run client pre/post backup/restore scripts.
    -  * Ability to read data from fifos (and restore to them).
    -  * Fixed a bug when restoring the first link in a directory.
    -  * Fixed a bug that prevented giving a backup number when using the verify option.
    -
    - -

    - -

    -2011-03-28: git repository added. - -

    - -

    -2011-03-27: burp-1.1.30 is released. -

    -Changes in burp-1.1.30:
    -  * First pass at having a live status monitor.
    -  * Fixed a bug that meant you couldn't restore links.
    -  * Fixed a bug when freeing structs at the end of a restore.
    -
    - -

    - -

    -2011-03-18: burp-1.1.22 is released. -

    -Changes in burp-1.1.22:
    -  * Added scheduling.
    -  * Added email notifications.
    -  * Fixed autoconf. Programs like ccache should now work.
    -  * Strip whitespace from end of conf lines, ignore quotes around conf lines.
    -  * Updated the Windows build tools.
    -
    - -

    - -

    -2011-03-10: burp-1.1.14 is released. -

    -Changes in burp-1.1.14:
    -  * Added client-side blowfish file encryption. See the man page for details.
    -  * Byte counters also give counts in KB/MB/GB/etc as appropriate.
    -  * Restore directories after their contents so that the access times are
    -    correct.
    -  * Updated the win32 build tools.
    -
    - -

    - -

    -2011-03-02: burp-1.1.5 is released. -

    -Changes in burp-1.1.5:
    -  * Added a 'verify' command. See the man page for details.
    -  * Improved the include/exclude path functionality.
    -  * Added the ability to define mount points to cross.
    -  * Fixed a crash on 64bit Windows when exiting.
    -
    - -

    - -

    -2011-02-27: burp-1.1.0 is released. -

    -Changes in burp-1.1.0:
    -  * Added openssl.
    -  * Added byte counters and checksums to the backup manifest files, in
    -    anticipation of a 'verify' command.
    -
    -    IMPORTANT IF YOU ARE UPGRADING FROM AN OLDER VERSION OF BURP:
    -    a) Your previous backups will no longer work, due to changes in the
    -    manifest files. You will also need to move old backups aside in order to
    -    continue to make new backups.
    -    b) Your old config files will need some fields to do with SSL added to them.
    -    See the man page and the examples in the 'configs' directory for help.
    -
    -    IMPORTANT FOR MY ENCOURAGEMENT AND THE FUTURE OF BURP:
    -    If you have tried burp, I really want to hear from you to find out what 
    -    you like about it, what you don't like, what new features you would like,
    -    how you have been using it, whether it has helped you, or anything that
    -    you would like to tell me. I am currently working in the dark!
    -
    - -

    - -

    -2011-02-16: burp-1.0.31 is released. -

    - -

    -2011-02-02: burp-1.0.11 is released. -

    - -

    -2011-02-02: burp-1.0.10 is released. -

    - -

    -2011-01-30: burp-1.0.9 is released. -

    - -

    -2011-01-25: burp-1.0.5 is released. -

    -

    -2011-01-25: mailling list created. -

    -

    -2011-01-23: burp-1.0.3 is released. -

    -

    -2011-01-22: burp-1.0.0 is released. -

    -

    -2011-01-22: Web site created. - -

    - -
    - - - - - - - - - -
    -
    - - - - -
    -
    -

    - -Burp is open and free software. I work on it in my spare time. -If you would like this work to continue, please consider making a small -donation. - -

    -
    -
    - -
    -
    -
    - -
    - -Burp, don't suck. - - - -Last updated: February 2012 - -
    - - - - - diff -Nru burp-1.3.0+20120214git/website/html/txt/autoupgrade.txt burp-1.3.1/website/html/txt/autoupgrade.txt --- burp-1.3.0+20120214git/website/html/txt/autoupgrade.txt 2012-02-13 13:13:39.000000000 +0000 +++ burp-1.3.1/website/html/txt/autoupgrade.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -How to set up autoupgrades --------------------------- - -Clients need to be on version 1.3.0 or newer to have the ability to -autoupgrade. Also, the server needs to be newer than 1.3.0. - -On the client machines, you need to have fields in burp.conf that look like -this: - -autoupgrade_os = win32 -autoupgrade_dir = C:/Program Files/Burp/autoupgrade -or -autoupgrade_os = some_os -autoupgrade_dir = /etc/burp/autoupgrade/client - -The 'os' values match a directory component on the server. -The directories given need to exist. - - -On the server, you need to have a field in the burp.conf that looks like this: -autoupgrade_dir = /etc/burp/autoupgrade/server - -The directory needs to exist on the server. -Subdirectories need to exist for the 'autoupgrade_os' values on the client, -with further subdirectories named after the current server version. -For example: -/etc/burp/autoupgrade/server/win32/1.3.1 -/etc/burp/autoupgrade/server/some_os/1.3.1 - -The version directory needs to contain two files called "script" and "package". -If all your packages are going to be installed the same way for a particular -OS, you may also place "script" at the top level for that OS. Like this, for -example: -/etc/burp/autoupgrade/server/win32/script - - -Given all the above, then when the client version is 1.3.0 or newer, and the -server version is greater than the client version, the next time the client -connects, it will download the two files, execute the "script" file, and then -exit. - -Examples of "script" files are given in the source package, in -configs/server/autoupgrade. - -The "package" file is the new package to be installed. - - - -I shall explain once more, by example. - -Scenario: -You have a 32 bit Windows client called 'win2k8' that is currently on 1.3.0. -You have a Debian server that is currently on 1.3.1. -You want to automatically upgrade the Windows client to 1.3.1. -You have a Windows burp installer called burp-win32-installer-1.3.1.exe. - -Make sure this is in the client burp.conf file: -autoupgrade_os = win32 -autoupgrade_dir = C:/Program Files/Burp/autoupgrade - -Make sure this is in the server burp.conf file: -autoupgrade_dir = /etc/burp/autoupgrade/server - -Make sure this directory exists on the server: -/etc/burp/autoupgrade/server/win32/1.3.1 - -Copy an appropriate script file to the OS directory (and rename it "script"): -cp burp/configs/autoupgrade/windows.script \ - /etc/burp/autoupgrade/server/win32/script -Copy the installer to the version directory (and rename it "package"): -cp burp-win32-installer-1.3.1.exe \ - /etc/burp/autoupgrade/server/win32/1.3.1/package - -The client should now automatically upgrade to 1.3.1 when it next connects. diff -Nru burp-1.3.0+20120214git/website/html/txt/baremetal-windows2008.txt burp-1.3.1/website/html/txt/baremetal-windows2008.txt --- burp-1.3.0+20120214git/website/html/txt/baremetal-windows2008.txt 2012-02-13 13:13:40.000000000 +0000 +++ burp-1.3.1/website/html/txt/baremetal-windows2008.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -Windows 2008 bare metal restore steps -------------------------------------- - -Unfortunately, I have not yet completed a Windows 2008 bare metal restore. -The process should be nearly identical to the Windows 7 steps, but I get stuck -at the point of making the new disk bootable. - -TODO: Have another go at this. Perhaps I need to create a different version -of the WinPE disk. diff -Nru burp-1.3.0+20120214git/website/html/txt/baremetal-windows7.txt burp-1.3.1/website/html/txt/baremetal-windows7.txt --- burp-1.3.0+20120214git/website/html/txt/baremetal-windows7.txt 2012-02-13 13:13:40.000000000 +0000 +++ burp-1.3.1/website/html/txt/baremetal-windows7.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,103 +0,0 @@ -Windows 7 bare metal restore steps ----------------------------------- - -Thanks to: -Wai Keong Phan, who first completed a bare metal restore, wrote up the - first draft and provided help when I was stuck. -Michael Da Cova, who also provided help when I was stuck. - - -a) Install the burp client on Windows 7. - -b) Make a burp backup of your C: drive (plus any others you want to keep). -That means that 'include = C:/' should be in the client burp.conf. -You may also 'exclude = C:/pagefile.sys', because it is known to be pointless -to backup that file. - -c) Download MS Win AIK via this link (at the time of writing): - http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5753 - -d) Install MS Win AIK - -e) Run a command prompt with administrator privileges, and execute these - commands: - > copype.cmd amd64 c:\winpe_amd64 - > cd c:\winpe_amd64 - > copy winpe.wim iso\sources\boot.wim - > dism /mount-wim /wimfile:iso\sources\boot.wim /index:1 /mountdir:mount - - (at this point, I found it easiest to copy the whole 'C:\Program Files\Burp' - directory to mount\windows, although you may just install it on the target - machine via a file server later) - - > dism /unmount-wim /mountdir:mount /commit - > oscdimg -n -betfsboot.com iso winpe_amd64.iso - -f) Make a bootable CD with the iso image. - -g) With a new or reprovisioned machine, boot the machine up with WinPE. It - will go to a command prompt that looks like 'X:\windows\system32>' - -h) Create a new 'C:' partition by executing these commands: - > select disk 0 - > create partition primary - > active - > assign letter=C - - You can change 'ntfs' to something else in the following command: - - > format fs=ntfs quick - - To verify disk status: - - > detail disk - -i) At this point, you can grab the burp client installer from your file server, - if you did not but it on the WinPE disk in step (e). Make sure the - appropriate burp server name, burp client name and password are entered - during the installer. - -j) Start the restore by executing the following command: - - > "cd C:\Program Files\Burp\bin" - > burp.exe -a r -f - -k) Shutdown the machine. - -l) Reboot from a Windows 7 installation disk. - -m) Select a language, a time and currency, and a keyboard or input method, and - click next. It doesn't matter what you choose here, as long as you can - continue to provide input. - -n) Select 'Repair your computer'. - -o) Follow the menus to a command prompt. You need to run diskpart again to - make the 'C:' partition active, and then rebuild the boot sector. - - > select disk 0 - > select partition primary - > active - > bootrec /rebuildbcd - -p) Reboot into the Windows 7 installation disk twice more, selecting 'Repair - your computer' both times. - -q) Windows 7 should now boot from the disk by itself. - -Unresolved issues: - -There is something a bit weird about the entries in the top level of the -file system, though. I have these odd directories: - -C:\$Recycle.Bin -C:\Documents and Settings -C:\System Volume Information -C:\Temp -C:\C: <- Very odd because ':' is not a valid character in Windows names. - -I think most of these exist on the original system, but are somehow hidden. - - -It has also given me a new small E:\ partition. Perhaps that was something -to do with the recovery via the installation disk. diff -Nru burp-1.3.0+20120214git/website/html/txt/burp_ca.txt burp-1.3.1/website/html/txt/burp_ca.txt --- burp-1.3.0+20120214git/website/html/txt/burp_ca.txt 2012-02-13 13:13:40.000000000 +0000 +++ burp-1.3.1/website/html/txt/burp_ca.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ -CA and cert HOWTO: - -Setup the server: - -1) generate Diffie-Hellman Parameters - - openssl dhparam -out /etc/burp/dhfile.pem 1024 - chmod 600 /etc/burp/dhfile.pem - -2) Initialise CA - - burp_ca --init --ca myCA - - This creates /etc/burp/CA, generate private key for CA and self signed - certificates. - -3) Generate server key and cert signing request - - burp_ca --key --request --name myServer - -4) Sign request - - burp_ca --sign --ca myCA --name myServer --batch - -5) Link or copy cert and key to /etc/burp - - ln -s CA/CA_myCA.crt /etc/burp/ssl_cert_ca.pem - ln -s CA/myServer.crt /etc/burp/ssl_cert-server.pem - ln -s CA/myServer,key /etc/burp/ssl_cert-server.key - - (use the ssl_cert and ssl_key options in burp-server.conf !) - - -Setup the client (the easy way - unsecure): - -1) Generate client key and cert __on the server__ - - burp_ca --name myClient --ca myCA --key --request --sign --batch - -2) on the client you dont need a CA, so just - - mkdir /etc/burp/CA - chmod 700 /etc/burp/CA - -3) copy key and certs from server to client - - server:/etc/burp/ssl_cert_ca.pem -> client:/etc/burp/ssl_cert_ca.pem - server:/etc/burp/CA/myClient.crt -> client:/etc/burp/ssl_cert-client.crt - server:/etc/burp/CA/myClient.key -> client:/etc/burp/ssl_cert-client.key - chmod 600 /etc/burp/ssl_cert-client.key - - (use the ssl_cert and ssl_key options in burp.conf !) - - -Setup the client (the usual way) - -1) on the client you dont need a CA, so just - - mkdir /etc/burp/CA - chmod 700 /etc/burp/CA - -2) Generate client key and cert signing request - - burp_ca --key --request --name myClient - -3) copy the request from client to the server - - client:/etc/burp/CA/myClient.csr -> server:/etc/burp/ssl/myClient.csr - -4) sign the request __on the server__ - - burp_ca --name myClient --ca myCA --key --request --sign --batch - -5) copy the certs back to the client - - server:/etc/burp/CA/CA_myCA.crt -> client:/etc/burp/CA/CA_myCA.crt - server:/etc/burp/CA/myClient.crt -> client:/etc/burp/CA/myClient.crt - -6) link or copy the files - - ln -s CA/CA_myCA.crt /etc/burp/ssl_cert_ca.pem - ln -s CA/myClient.crt /etc/burp/ssl_cert-client.pem - ln -s CA/myClient,key /etc/burp/ssl_cert-client.key - - (use the ssl_cert and ssl_key options in burp.conf !) diff -Nru burp-1.3.0+20120214git/website/html/why.html burp-1.3.1/website/html/why.html --- burp-1.3.0+20120214git/website/html/why.html 2012-02-13 13:13:40.000000000 +0000 +++ burp-1.3.1/website/html/why.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,157 +0,0 @@ - - - - - - -BURP - BackUp and Restore Program - - - - - - - - - - - -
    - - - - -

    - -BURP - BackUp and Restore Program - - -
    - - - - - - - - - -
    indexwhyfaqhowtodownloadcontact
    -
    - -

    - - - - - - - - - - - - - -
    -
    -

    - -I started writing Burp when I had become frustrated with the complexity and -drawbacks of Bacula. I am in no way trying to -denigrate the work of its authors - after all, it is also free software that -the authors have very kindly provided. It also saved a lot of my wife's -data when her laptop harddrive crashed one day (thank you, Bacula!). -But here is a list of Bacula disadvantages I perceive that I hope to avoid with -Burp. - -

      -
    • Complexity to configure - Bacula is just too complicated. It has four -separate main components, each with their own configuration files. -
    • Complexity to code/debug - Kern Sibbald, the main author of Bacula admits -that there is a distinct lack of community contribution to the code. I believe -that this is partly due to the difficulty in understanding its complexity. -They also have the need to continue to support, or provide continuity with -the way things have gone before, which makes for slow development. -
    • Works badly with disk storage - Bacula's mentality is very highly geared -towards tape usage and therefore it works poorly with disks. -
    • Stores the catalog separately to the backups - This causes a massive -maintenance headache. For example, you now have to think about backups of your -catalog. Additionally, changes to your configuration files might not take -effect because some of the previous configuration gets written to the catalog, -and then it is not easy to make the changes take effect. Furthermore, you -end up needing to be a mysql or postgres database expert. -
    • Does not do delta differencing - Bacula backs up the whole file even if -only a few bytes in it have changed. -
    • Relies far too heavily on clock accuracy - Bacula goes very badly wrong -if your computer's clock somehow gets skewed. In fact, it relies so heavily -on the clock and timestamps that it does not actually track which backup -another was based on. -
    • Laptop backups are difficult to schedule. -
    • Cannot resume an interrupted backup. -
    • Retention configuration - it is just impossible to configure a sensible -retention policy. -Here is my explanation why, sent to the bacula-users mailing list. -
    - -The main advantage that Bacula has over other open source offerings is that -it supports Windows Volume Shadow Copy Service (VSS). This means that it is -hard to use programs like rsync or rdiff-backup on Windows computers. - - -

    - -
    - - - - - - - - - -
    -
    - - - - -
    -
    -

    - -Burp is open and free software. I work on it in my spare time. -If you would like this work to continue, please consider making a small -donation. - -

    -
    -
    - -
    -
    -
    - -
    - -Burp, don't suck. - - - -Last updated: February 2012 - -
    - - - - -