I am using rdiff-backup to backup files from my server to a backup server. I run the backup using a command similar to:
rdiff-backup user@example.com::/home/user/data/complete complete
This backup is working well. However, from the features page of Rdiff-backup it says:
Bandwidth efficient: rdiff-backup depends on librsync, and thus uses the same diffing algorithm as rsync (rsync and rdiff-backup strictly speaking do not share any code however). [...] For instance, suppose you slightly alter large file A to make large file A', and A is still on the remote system. When rdiff-backup is run, it will only send over the diff A->A' [...]
The files on the remote are database dumps, generated using mysqldump
, that are created hourly. The data does not change much from hour to hour. Each filename has the format YYYYMMDDHHMM.sql
.
Based on my interpretation of the above 'feature', rdiff-backup should be sending a small diff to create the file based on the other files in the directory -- in other words, if A prime
is the latest backup and A
is the T-1 backup, it should send a small diff to get from A
to A prime
.
However, it quite clearly is not working in this way. It is sending the entire new file, even though the new file is only slightly different. I would expect data transfer to be a few megabytes, but it is transferring hundreds of megabytes.
Also from the man page:
rdiff-backup can also operate in a bandwidth efficient manner over a pipe, like rsync(1). Thus you can use ssh and rdiff-backup to securely back a hard drive up to a remote location, and only the differences will be transmitted. Using the default settings, rdiff-backup requires that the remote system accept ssh connections, and that rdiff-backup is installed in the user's PATH on the remote system. For information on other options, see the section on REMOTE OPERATION.
So my question is:
- Am I interpreting this feature correctly?
- If I am, how do I use rdiff-backup to function in this way?