Thanks for confirming, Craig. There are lots of approaches that I could
use to reduce the duplication, but they would all add complexity
needlessly if BackupPC was already storing just deltas at a high
granularity (and I completely understand the decision not to do so).
I'm currently looking at MySQL Incremental Backup (which in turn uses
AutoMysqlBackup) - I haven't quite got it working yet but it should be
better than rolling my own.
SteveR.
On 20/11/2018 17:39, Craig Barratt via BackupPC-users wrote:
Steve,
You are exactly right - BackupPC's storage granularity is whole
files. So, in the worst case, a single byte change to a file that is
a unique will result in a new file in the pool. Rsync will only
transfer the deltas, but the full file gets rebuilt on the server.
Before I did the 4.x rewrite, I did some benchmarking on block-level
or more granular deltas, but the typical performance improvement was
modest and the effort to implement it was large. However, there are
two cases where block-level or byte-level deltas would be very helpful
- database files (as you mentioned) and VM images.
Perhaps you could use $Conf{DumpPreUserCmd} to run a script that
generates byte-level deltas, and exclude the original database files?
You could have a weekly schedule where you copy the full database file
on, eg, Sunday, and generate deltas every other day of the week. Then
BackupPC will backup the full file once, and also grab each of the
deltas. That way you'll have a complete database file once per week,
and all the daily (cumulative) deltas.
Craig
On Tue, Nov 20, 2018 at 9:28 AM Steve Richards <b...@boxersoft.com
<mailto:b...@boxersoft.com>> wrote:
Thanks. Yes, I had seen that in the docs but I got the impression
that the deltas referred to there were at the granularity of whole
files. For example, let's say backup 1 contains files A, B and C.
If B is then modified then, during the next backup rsync might
only /transfer/ the deltas needed to change B to B1 e.g. "replace
line 5 with [new content]". I got the impression that those deltas
would be used to create B1 though, and that both complete files (B
and B1) would be stored in the pool as whole files. The deltas
referred to in the docs would then be how to get from one /backup/
to another e.g. "Delete file B, insert file B1" (or vice versa,
depending on whether it's BackupPC V3 or V4).
So that's the way I interpreted it, but I'm very new to this so I
may have got the wrong end of the stick completely. If anyone
could confirm or correct my understanding, I'd appreciate it
either way.
Thanks for the comments on mysqldump, I'll take a look at those
options.
SteveR.
On 20/11/2018 14:05, Mike Hughes wrote:
Hi Steve,
It looks like they are stored using reverse deltas. Maybe you’ve
already seen this from the V4.0 documentation:
* 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.
Additionally these tips might help apply deltas to the files and
reduce transfer bandwidth:
MySQL dump has an option ‘--order-by-primary’ which sorts
before/while dumping the database. Useful if you’re trying to
limit the amount to be rsync’ed. You’ll need to evaluate the
usefulness of this based on db design.
If you’re compressing your database look into the “--rsyncable”
option available in the package pigz.
*From:* Steve Richards <b...@boxersoft.com>
<mailto:b...@boxersoft.com>
*Sent:* Tuesday, November 20, 2018 04:34
*To:* backuppc-users@lists.sourceforge.net
<mailto:backuppc-users@lists.sourceforge.net>
*Subject:* [BackupPC-users] Large files with small changes
I think some backup programs are able to store just the changes
("deltas") in a file when making incrementals. Am I right in
thinking that BackupPC doesn't do this, and would instead store
the whole of each changed file as separate entries in the pool?
Reason for asking is that I want to implement a backup strategy
for databases, which is likely to involve multi-megabyte SQL
files that differ only slightly from day to day. I'm trying to
decide how best to handle them.
_______________________________________________
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
<mailto: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/
_______________________________________________
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
<mailto: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/
_______________________________________________
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/
_______________________________________________
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/