Re: [BackupPC-users] BackupPC 4.0.0 released

2017-03-22 Thread Craig Barratt
Steve,

I'm not sure what caused that error.  It sounds like you had an old or
broken version of Socket, and re-installing it with cpan appears to have
fixed it.

Craig

On Wed, Mar 22, 2017 at 3:26 PM, Steve Palm  wrote:

> I had installed BackupPC-XS and rsync-bpc, but I re-installed BackupPC-XS
> after the other module changes I made below, and now it is working.
>
> Very strange.  Don't know what I could have done wrong, but oh well
> Wouldn't be the first time. LOL
>
> BTW: I really like the more modern look from GitHub.
>
>
> > On Mar 22, 2017, at 4:43 PM, Steve Palm  wrote:
> >
> > Okay, I installed from Github to take advantage of recent fixes, and the
> upgrade worked fine. The web interface came up straight away, no problems.
> >
> > If these problems are BECAUSE I used the GitHub version, please advise
> and I will back it out or wait for resolution.  Actually, I did install the
> released 4.0.0 version after this and it seems to make no difference.
> >
> > I am documenting some things I already fixed here in case others find it
> useful, but in the end I still do not have it working.
> >
> > However, trying to backup the localhost (previous v3 backup), I received
> this error:
> >
> > backuppc: getaddrinfo is not a valid Socket macro at
> /usr/local/BackupPC/lib/BackupPC/Lib.pm line 1413
> >
> > It did a delete pass, but when I tell it to do a full backup I get the
> above error in the log.
> >
> > The strangest thing is, looking in the config, the host is defined as
> 127.0.0.1, so how can that not be a valid address for
> Socket::getaddrinfo($host); ?
> >
> > I thought perhaps it was trying to use Socket::GetAddrInfo, which I was
> able to install after having to install these:
> >
> > File::Path File::Spec Test::More ExtUtils::CBuilder ExtUtils::CChecker
> >
> > But still the same error.
> >
> > For context, it is here in BackupPC:Lib, failing on the
> Socket::getaddrinfo line.
> >
> > sub getHostAddrInfo
> > {
> >my($bpc, $host) = @_;
> >my($err, @addrs) = Socket::getaddrinfo($host);
> >return undef if ( $err );
> >return (($addrs[0])->{'family'} == Socket::AF_INET6) ? 6 : 4;
> > }
> >
> > Installed `cpan install Socket` and the line went away from the logs,
> but it still is not making any backups. I don't know how to be sure all the
> modules are up-to-date without causing problems. :(
> >
> > Where to look, every log I look at doesn't show anything, it just logs
> that the backup was requested but it never does anything. :(
> >
> > Steve
> >
> >
> > 
> --
> > Check out the vibrant tech community on one of the world's most
> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > ___
> > BackupPC-users mailing list
> > BackupPC-users@lists.sourceforge.net
> > List:https://lists.sourceforge.net/lists/listinfo/backuppc-users
> > Wiki:http://backuppc.wiki.sourceforge.net
> > Project: http://backuppc.sourceforge.net/
>
>
> 
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> ___
> BackupPC-users mailing list
> BackupPC-users@lists.sourceforge.net
> List:https://lists.sourceforge.net/lists/listinfo/backuppc-users
> Wiki:http://backuppc.wiki.sourceforge.net
> Project: http://backuppc.sourceforge.net/
>
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
List:https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki:http://backuppc.wiki.sourceforge.net
Project: http://backuppc.sourceforge.net/


Re: [BackupPC-users] BackupPC 4.0.0 released

2017-03-22 Thread Steve Palm
I had installed BackupPC-XS and rsync-bpc, but I re-installed BackupPC-XS after 
the other module changes I made below, and now it is working.

Very strange.  Don't know what I could have done wrong, but oh well 
Wouldn't be the first time. LOL

BTW: I really like the more modern look from GitHub.


> On Mar 22, 2017, at 4:43 PM, Steve Palm  wrote:
> 
> Okay, I installed from Github to take advantage of recent fixes, and the 
> upgrade worked fine. The web interface came up straight away, no problems.
> 
> If these problems are BECAUSE I used the GitHub version, please advise and I 
> will back it out or wait for resolution.  Actually, I did install the 
> released 4.0.0 version after this and it seems to make no difference.
> 
> I am documenting some things I already fixed here in case others find it 
> useful, but in the end I still do not have it working.
> 
> However, trying to backup the localhost (previous v3 backup), I received this 
> error:
> 
> backuppc: getaddrinfo is not a valid Socket macro at 
> /usr/local/BackupPC/lib/BackupPC/Lib.pm line 1413
> 
> It did a delete pass, but when I tell it to do a full backup I get the above 
> error in the log.
> 
> The strangest thing is, looking in the config, the host is defined as 
> 127.0.0.1, so how can that not be a valid address for 
> Socket::getaddrinfo($host); ?
> 
> I thought perhaps it was trying to use Socket::GetAddrInfo, which I was able 
> to install after having to install these:
> 
> File::Path File::Spec Test::More ExtUtils::CBuilder ExtUtils::CChecker
> 
> But still the same error.
> 
> For context, it is here in BackupPC:Lib, failing on the Socket::getaddrinfo 
> line.
> 
> sub getHostAddrInfo
> {
>my($bpc, $host) = @_;
>my($err, @addrs) = Socket::getaddrinfo($host);
>return undef if ( $err );
>return (($addrs[0])->{'family'} == Socket::AF_INET6) ? 6 : 4;
> }
> 
> Installed `cpan install Socket` and the line went away from the logs, but it 
> still is not making any backups. I don't know how to be sure all the modules 
> are up-to-date without causing problems. :(
> 
> Where to look, every log I look at doesn't show anything, it just logs that 
> the backup was requested but it never does anything. :(
> 
> Steve
> 
> 
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> ___
> BackupPC-users mailing list
> BackupPC-users@lists.sourceforge.net
> List:https://lists.sourceforge.net/lists/listinfo/backuppc-users
> Wiki:http://backuppc.wiki.sourceforge.net
> Project: http://backuppc.sourceforge.net/


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
List:https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki:http://backuppc.wiki.sourceforge.net
Project: http://backuppc.sourceforge.net/


Re: [BackupPC-users] BackupPC 4.0.0 released

2017-03-22 Thread Steve Palm
Okay, I installed from Github to take advantage of recent fixes, and the 
upgrade worked fine. The web interface came up straight away, no problems.

If these problems are BECAUSE I used the GitHub version, please advise and I 
will back it out or wait for resolution.  Actually, I did install the released 
4.0.0 version after this and it seems to make no difference.

I am documenting some things I already fixed here in case others find it 
useful, but in the end I still do not have it working.

However, trying to backup the localhost (previous v3 backup), I received this 
error:

backuppc: getaddrinfo is not a valid Socket macro at 
/usr/local/BackupPC/lib/BackupPC/Lib.pm line 1413

It did a delete pass, but when I tell it to do a full backup I get the above 
error in the log.

The strangest thing is, looking in the config, the host is defined as 
127.0.0.1, so how can that not be a valid address for 
Socket::getaddrinfo($host); ?

I thought perhaps it was trying to use Socket::GetAddrInfo, which I was able to 
install after having to install these:

File::Path File::Spec Test::More ExtUtils::CBuilder ExtUtils::CChecker

But still the same error.

For context, it is here in BackupPC:Lib, failing on the Socket::getaddrinfo 
line.

sub getHostAddrInfo
{
my($bpc, $host) = @_;
my($err, @addrs) = Socket::getaddrinfo($host);
return undef if ( $err );
return (($addrs[0])->{'family'} == Socket::AF_INET6) ? 6 : 4;
}

Installed `cpan install Socket` and the line went away from the logs, but it 
still is not making any backups. I don't know how to be sure all the modules 
are up-to-date without causing problems. :(

Where to look, every log I look at doesn't show anything, it just logs that the 
backup was requested but it never does anything. :(

Steve


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
List:https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki:http://backuppc.wiki.sourceforge.net
Project: http://backuppc.sourceforge.net/


Re: [BackupPC-users] BackupPC 4.0.0 released

2017-03-22 Thread Steve Palm
Thanks so much, Craig!  I really appreciate it. Looking forward to trying it 
out, although reading the list it might be better to wait for your 4.1.0 
release or grab the current from GitHub, as it seemed there are a few issues 
that are resolved which would affect us upgrading from v3.


> On Mar 22, 2017, at 11:17 AM, Craig Barratt  > wrote:
> 
> Steve,
> 
> The error is that you don't have the required module "version" installed (ie, 
> running "perl -e 'use version;'" would fail).  Yes, the error is confusing 
> since "version" is such a generic name.
> 
> You can use CPAN (or your linux installer if that's what you normally use) to 
> install it:
> 
> sudo cpan
> install version
> 
> Craig
> 
> On Wed, Mar 22, 2017 at 7:40 AM, Steve Palm  > wrote:
> Sorry, I sent this to the developer list, should probably have gone to the 
> users list... :(
> 
> On Mar 4, 2017, at 1:12 PM, Craig Barratt  > wrote:
>> I'm happy to announce that BackupPC 4.0.0 has been released on Github 
>>  and SourceForge 
>> .  
> 
>  I was excited to read this, congratulations on a huge milestone!
> 
>> BackupPC 4.0.0 requires the perl module BackupPC::XS 
>>  (>= 0.50) and rsync-bpc 
>>  (>= 3.0.9.5). 
> 
>  I installed these.
> 
>> After installing those two packages, BackupPC 4.0.0 can be installed from 
>> the tar ball with:
>> 
>> tar zxf BackupPC-4.0.0.tar.gz
>> cd BackupPC-4.0.0
>> perl configure.pl 
>  And I was greeted with a very unhelpful
> 
> BackupPC needs the package version.  Please install version
> before installing BackupPC.
> 
> Even running with a trace is not helping me much, not sure what I'm looking 
> at here:
> 
> perl -d:Trace configure.pl 
> >> configure.pl:54 : my @ConfigureBinList = qw(
> >> configure.pl:79 : my @ConfigureLibList = qw(
> >> configure.pl:137 : if ( $ConfigureBinList[0] eq 
> >> "__" . "CONFIGURE_BIN_LIST__" ) {
> >> configure.pl:145 : my @Packages = qw(version 
> >> Encode File::Path File::Spec File::Copy DirHandle
> >> configure.pl:149 : my $PackageVersion = {
> >> configure.pl:154 : foreach my $pkg ( @Packages ) 
> >> {
> >> configure.pl:155 : eval "use $pkg";
> >> (eval 1)[configure.pl:155]:2: ;>> configure.pl:156 
> >> : if ( !$@ ) {
> >> configure.pl:169 : if ( $pkg =~ 
> >> /BackupPC::Lib/ ) {
> >> configure.pl:184 : die < 
> BackupPC needs the package version.  Please install version
> before installing BackupPC.
> 
> Any ideas?
> 
>  Steve
> 
> 
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org ! 
> http://sdm.link/slashdot 
> ___
> BackupPC-users mailing list
> BackupPC-users@lists.sourceforge.net 
> 
> List:https://lists.sourceforge.net/lists/listinfo/backuppc-users 
> 
> Wiki:http://backuppc.wiki.sourceforge.net 
> 
> Project: http://backuppc.sourceforge.net/ 
> 
> 
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org ! 
> http://sdm.link/slashdot___ 
> 
> BackupPC-users mailing list
> BackupPC-users@lists.sourceforge.net 
> 
> List:https://lists.sourceforge.net/lists/listinfo/backuppc-users
> Wiki:http://backuppc.wiki.sourceforge.net
> Project: http://backuppc.sourceforge.net/

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
List:https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki:http://backuppc.wiki.sourceforge.net
Project: 

Re: [BackupPC-users] BackupPC 4.0.0 released

2017-03-22 Thread Craig Barratt
Steve,

The error is that you don't have the required module "version" installed
(ie, running "perl -e 'use version;'" would fail).  Yes, the error is
confusing since "version" is such a generic name.

You can use CPAN (or your linux installer if that's what you normally use)
to install it:

sudo cpan
install version


Craig

On Wed, Mar 22, 2017 at 7:40 AM, Steve Palm  wrote:

> Sorry, I sent this to the developer list, should probably have gone to the
> users list... :(
>
> On Mar 4, 2017, at 1:12 PM, Craig Barratt 
> wrote:
>
> I'm happy to announce that BackupPC 4.0.0 has been released on Github
>  and SourceForge
> .
>
>
>  I was excited to read this, congratulations on a huge milestone!
>
> BackupPC 4.0.0 requires the perl module BackupPC::XS
>  (>= 0.50) and rsync-bpc
>  (>= 3.0.9.5).
>
>
>  I installed these.
>
> After installing those two packages, BackupPC 4.0.0 can be installed from
> the tar ball with:
>
> tar zxf BackupPC-4.0.0.tar.gz
> cd BackupPC-4.0.0
> perl configure.pl
>
>
>  And I was greeted with a very unhelpful
>
> BackupPC needs the package version.  Please install version
> before installing BackupPC.
>
> Even running with a trace is not helping me much, not sure what I'm
> looking at here:
>
> perl -d:Trace configure.pl
> >> configure.pl:54: my @ConfigureBinList = qw(
> >> configure.pl:79: my @ConfigureLibList = qw(
> >> configure.pl:137: if ( $ConfigureBinList[0] eq "__" .
> "CONFIGURE_BIN_LIST__" ) {
> >> configure.pl:145: my @Packages = qw(version Encode File::Path
> File::Spec File::Copy DirHandle
> >> configure.pl:149: my $PackageVersion = {
> >> configure.pl:154: foreach my $pkg ( @Packages ) {
> >> configure.pl:155: eval "use $pkg";
> >> (eval 1)[configure.pl:155]:2: ;>> configure.pl:156: if ( !$@ ) {
> >> configure.pl:169: if ( $pkg =~ /BackupPC::Lib/ ) {
> >> configure.pl:184: die <
> BackupPC needs the package version.  Please install version
> before installing BackupPC.
>
> Any ideas?
>
>  Steve
>
>
> 
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> ___
> BackupPC-users mailing list
> BackupPC-users@lists.sourceforge.net
> List:https://lists.sourceforge.net/lists/listinfo/backuppc-users
> Wiki:http://backuppc.wiki.sourceforge.net
> Project: http://backuppc.sourceforge.net/
>
>
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
List:https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki:http://backuppc.wiki.sourceforge.net
Project: http://backuppc.sourceforge.net/


Re: [BackupPC-users] BackupPC 4.0.0 released

2017-03-04 Thread Gerald Brandt



On 2017-03-04 01:12 PM, Craig Barratt wrote:

BackupPC community,

I'm happy to announce that BackupPC 4.0.0 has been released on Github 
 and SourceForge 
.


BackupPC 4.0.0 is a significant improvement over 3.x in terms of 
performance and storage efficiency. It is backward compatible with 3.x 
storage, so it can be used to upgrade an existing V3 installation as 
well as for brand new installs.


BackupPC 4.0.0 requires the perl module BackupPC::XS 
 (>= 0.50) and 
rsync-bpc  (>= 3.0.9.5).


After installing those two packages, BackupPC 4.0.0 can be installed 
from the tar ball with:


tar zxf BackupPC-4.0.0.tar.gz
cd BackupPC-4.0.0
perl configure.pl 

See the README.md, ChangeLog and doc/BackupPC.html 
 files for more 
information.  An overview of the major changes is below.


Thanks for to everyone who provided fixes and reported issues with the 
alpha and github versions.


Enjoy!!

Craig

Here's a summary of the most significant changes in V4:

  * No use of hardlinks (except temporarily to do atomic renames).
Reference counting is handled at the application level in a batch
manner (hardlinks will still remain for any legacy V3 backups).
  * Backups are stored as "reverse deltas" - the most recent backup is
always filled and older backups are reconstituted by merging all
the deltas starting with the nearest future filled backup and
working backwards.
  * This is the opposite of V3 where incrementals are stored as
"forward deltas" to a prior backup (typically the last full backup
or prior lower-level incremental backup, or the last full in the
case of rsync).
  * Since the most recent backup is filled, viewing/restoring that
backup (which is the most common backup used) doesn't require
merging any deltas from other backups.
  * The concepts of incr/full backups and unfilled/filled storage are
decoupled. The most recent backup is always filled. By default,
for the remaining backups, full backups are filled and incremental
backups are unfilled, but that is configurable.
  * Uses full-file MD5 digests, which are stored in the directory
attrib files.  Each backup directory only contains an empty attrib
file whose name includes its own MD5 digest, which is used to look
up the attrib file's contents in the pool.  In turn, that file
contains the metadata for every file in that directory, including
each files's MD5 digest.
  * The Pool layout still supports chains to handle md5 collisions.
While collisions can be constructed and are now well-known, they
are highly unlikely in the wild. Pool files are never renamed or
moved, unlike V3.
  * Any backup can be deleted (deltas are merged into next older
backup if it is not filled).
  * The reverse deltas allow "infinite incrementals" - no need for a
full backup if you are willing to trade speed for the risk that a
file change will not be detected if the metadata (eg, mtime or
size) doesn't change.
  * An rsync "full" backup now uses --checksum (instead of
--ignore-times), which is much more efficient on the server side -
the server just needs to check the full-file checksum computed by
the client, together with the mtime, nlinks, size attributes, to
see if the file has changed. If you want a more conservative
approach, you can change it back to --ignore-times, which requires
the server to send block checksums to the client.
  * The use of rsync --checksum allows BackupPC to guess a potential
match anywhere in the pool, even on a first-time backup. In that
case, the usual rsync block checksums are still exchanged to make
sure the complete file is identical.
  * Uses a modified rsync called rsync_bpc (currently based on
rsync-3.0.9) on the server side (in place of File::RsyncP), with a
C code interface to the BackupPC storage. So the whole data path
for rsync is now in compiled C code, which is much faster than perl.
  * Due to the use of rsync-3.X, acls and xattrs are supported, and
many other useful options (but not all) are supported. Rsync
protocol 30 supports the efficient incremental file list, which
significantly improves memory usage and startup time. It also
supports MD5 full-file checksums, which match BackupPC's new
digest. That allows a full-file digest to be checked as easily as
an mtime on the server side.
  * Significant portions of the BackupPC code are now compiled C code
in a new module called BackupPC::XS that is dynamically linked to
perl.
  * V3 migration: nothing specific is needed. V4 can
browse/view/restore V3 backups. When you install V4, no changes
are made to 

Re: [BackupPC-users] BackupPC 4.0.0 released

2017-03-04 Thread Bob of Donelson Trophy
On 2017-03-04 13:12, Craig Barratt wrote:

> BackupPC community, 
> 
> I'm happy to announce that BackupPC 4.0.0 has been released on Github [1] and 
> SourceForge [2].   
> 
> BackupPC 4.0.0 is a significant improvement over 3.x in terms of performance 
> and storage efficiency. It is backward compatible with 3.x storage, so it can 
> be used to upgrade an existing V3 installation as well as for brand new 
> installs. 
> 
> BackupPC 4.0.0 requires the perl module BackupPC::XS [3] (>= 0.50) and 
> rsync-bpc [4] (>= 3.0.9.5).  
> 
> After installing those two packages, BackupPC 4.0.0 can be installed from the 
> tar ball with: 
> 
> tar zxf BackupPC-4.0.0.tar.gz 
> cd BackupPC-4.0.0 
> perl configure.pl [5] 
> 
> See the README.md, ChangeLog and doc/BackupPC.html [6] files for more 
> information.  An overview of the major changes is below. 
> 
> Thanks for to everyone who provided fixes and reported issues with the alpha 
> and github versions. 
> 
> Enjoy!!
> 
> Craig 
> 
> Here's a summary of the most significant changes in V4: 
> 
> * No use of hardlinks (except temporarily to do atomic renames). Reference 
> counting is handled at the application level in a batch manner (hardlinks 
> will still remain for any legacy V3 backups).
> * Backups are stored as "reverse deltas" - the most recent backup is always 
> filled and older backups are reconstituted by merging all the deltas starting 
> with the nearest future filled backup and working backwards.
> * This is the opposite of V3 where incrementals are stored as "forward 
> deltas" to a prior backup (typically the last full backup or prior 
> lower-level incremental backup, or the last full in the case of rsync).
> * Since the most recent backup is filled, viewing/restoring that backup 
> (which is the most common backup used) doesn't require merging any deltas 
> from other backups.
> * The concepts of incr/full backups and unfilled/filled storage are 
> decoupled. The most recent backup is always filled. By default, for the 
> remaining backups, full backups are filled and incremental backups are 
> unfilled, but that is configurable.
> * Uses full-file MD5 digests, which are stored in the directory attrib files. 
>  Each backup directory only contains an empty attrib file whose name includes 
> its own MD5 digest, which is used to look up the attrib file's contents in 
> the pool.  In turn, that file contains the metadata for every file in that 
> directory, including each files's MD5 digest.
> * The Pool layout still supports chains to handle md5 collisions. While 
> collisions can be constructed and are now well-known, they are highly 
> unlikely in the wild. Pool files are never renamed or moved, unlike V3.
> * Any backup can be deleted (deltas are merged into next older backup if it 
> is not filled).
> * The reverse deltas allow "infinite incrementals" - no need for a full 
> backup if you are willing to trade speed for the risk that a file change will 
> not be detected if the metadata (eg, mtime or size) doesn't change.
> * An rsync "full" backup now uses --checksum (instead of --ignore-times), 
> which is much more efficient on the server side - the server just needs to 
> check the full-file checksum computed by the client, together with the mtime, 
> nlinks, size attributes, to see if the file has changed. If you want a more 
> conservative approach, you can change it back to --ignore-times, which 
> requires the server to send block checksums to the client.
> * The use of rsync --checksum allows BackupPC to guess a potential match 
> anywhere in the pool, even on a first-time backup. In that case, the usual 
> rsync block checksums are still exchanged to make sure the complete file is 
> identical.
> * Uses a modified rsync called rsync_bpc (currently based on rsync-3.0.9) on 
> the server side (in place of File::RsyncP), with a C code interface to the 
> BackupPC storage. So the whole data path for rsync is now in compiled C code, 
> which is much faster than perl.
> * Due to the use of rsync-3.X, acls and xattrs are supported, and many other 
> useful options (but not all) are supported. Rsync protocol 30 supports the 
> efficient incremental file list, which significantly improves memory usage 
> and startup time. It also supports MD5 full-file checksums, which match 
> BackupPC's new digest. That allows a full-file digest to be checked as easily 
> as an mtime on the server side.
> * Significant portions of the BackupPC code are now compiled C code in a new 
> module called BackupPC::XS that is dynamically linked to perl.
> 
> * V3 migration: nothing specific is needed. V4 can browse/view/restore V3 
> backups. When you install V4, no changes are made to any V3 backups. If you 
> are upgrading from V3, be sure to set $Conf{PoolV3Enabled} to 1 so the old V3 
> pool is searched for matching files. 
> 
> * When you install V4, it will notice that the V3 pool exists. Running 
> configure.pl [5] should set $Conf{PoolV3Enabled} to 1 in that 

[BackupPC-users] BackupPC 4.0.0 released

2017-03-04 Thread Craig Barratt
BackupPC community,

I'm happy to announce that BackupPC 4.0.0 has been released on Github
 and SourceForge
.

BackupPC 4.0.0 is a significant improvement over 3.x in terms of
performance and storage efficiency. It is backward compatible with 3.x
storage, so it can be used to upgrade an existing V3 installation as well
as for brand new installs.

BackupPC 4.0.0 requires the perl module BackupPC::XS
 (>= 0.50) and rsync-bpc
 (>= 3.0.9.5).

After installing those two packages, BackupPC 4.0.0 can be installed from
the tar ball with:

tar zxf BackupPC-4.0.0.tar.gz
cd BackupPC-4.0.0
perl configure.pl

See the README.md, ChangeLog and doc/BackupPC.html
 files for more
information.  An overview of the major changes is below.

Thanks for to everyone who provided fixes and reported issues with the
alpha and github versions.

Enjoy!!

Craig

Here's a summary of the most significant changes in V4:

   - No use of hardlinks (except temporarily to do atomic renames).
   Reference counting is handled at the application level in a batch manner
   (hardlinks will still remain for any legacy V3 backups).
   - Backups are stored as "reverse deltas" - the most recent backup is
   always filled and older backups are reconstituted by merging all the deltas
   starting with the nearest future filled backup and working backwards.
   - This is the opposite of V3 where incrementals are stored as "forward
   deltas" to a prior backup (typically the last full backup or prior
   lower-level incremental backup, or the last full in the case of rsync).
   - Since the most recent backup is filled, viewing/restoring that backup
   (which is the most common backup used) doesn't require merging any deltas
   from other backups.
   - The concepts of incr/full backups and unfilled/filled storage are
   decoupled. The most recent backup is always filled. By default, for the
   remaining backups, full backups are filled and incremental backups are
   unfilled, but that is configurable.
   - Uses full-file MD5 digests, which are stored in the directory attrib
   files.  Each backup directory only contains an empty attrib file whose name
   includes its own MD5 digest, which is used to look up the attrib file's
   contents in the pool.  In turn, that file contains the metadata for every
   file in that directory, including each files's MD5 digest.
   - The Pool layout still supports chains to handle md5 collisions. While
   collisions can be constructed and are now well-known, they are highly
   unlikely in the wild. Pool files are never renamed or moved, unlike V3.
   - Any backup can be deleted (deltas are merged into next older backup if
   it is not filled).
   - The reverse deltas allow "infinite incrementals" - no need for a full
   backup if you are willing to trade speed for the risk that a file change
   will not be detected if the metadata (eg, mtime or size) doesn't change.
   - An rsync "full" backup now uses --checksum (instead of
   --ignore-times), which is much more efficient on the server side - the
   server just needs to check the full-file checksum computed by the client,
   together with the mtime, nlinks, size attributes, to see if the file has
   changed. If you want a more conservative approach, you can change it back
   to --ignore-times, which requires the server to send block checksums to the
   client.
   - The use of rsync --checksum allows BackupPC to guess a potential match
   anywhere in the pool, even on a first-time backup. In that case, the usual
   rsync block checksums are still exchanged to make sure the complete file is
   identical.
   - Uses a modified rsync called rsync_bpc (currently based on
   rsync-3.0.9) on the server side (in place of File::RsyncP), with a C code
   interface to the BackupPC storage. So the whole data path for rsync is now
   in compiled C code, which is much faster than perl.
   - Due to the use of rsync-3.X, acls and xattrs are supported, and many
   other useful options (but not all) are supported. Rsync protocol 30
   supports the efficient incremental file list, which significantly improves
   memory usage and startup time. It also supports MD5 full-file checksums,
   which match BackupPC's new digest. That allows a full-file digest to be
   checked as easily as an mtime on the server side.
   - Significant portions of the BackupPC code are now compiled C code in a
   new module called BackupPC::XS that is dynamically linked to perl.
   - V3 migration: nothing specific is needed. V4 can browse/view/restore
   V3 backups. When you install V4, no changes are made to any V3 backups. If
   you are upgrading from V3, be sure to set $Conf{PoolV3Enabled} to 1 so the
   old V3 pool is searched for matching files.