I am not sure how specific I should be in my question, so I'll ask a general question according to the title first that aims at where I think the issue is, and then describe the overall situation, in case anybody has other ideas:
I am syncing two sets of btrfs ro snapshots with buttersink over an ssh connection. The 2 snapshots contain slightly different versions of a single very large file (1.5TB) The transfer went very fast, differential was only 5MB, but since the data was transferred hours ago, buttersink is doing SOMETHING, but not finishing the process. What is that? Is this behavior expected? On the remote side, neither processing power (vserver), nor disk IO (btrfs-formated container file on CIFS mount) may be awesome.
I want to do an encrypted, differential backup over a comparably slow connection (25MBit up, but compared to a volume of 1.5TB, that is quite slow). The backup goes to a remote vserver which in turn mounts backupspace in the data center via CIFS. The vserver is not a trusted site, encryptionwise, all encryption has to be done locally.
So I came up with the following plan:
1. Local productive: BTRFS filesystem
2. Local Backup: Encrypted, BTRFS-formated container file on BTRFS filesystem
3. Remote: Encrypted, BTRFS-formated container file in unencrypted, BTRFS-formated filesystem on CIFS mount
a. The inner BTRFS filesystem is for efficient local backup from 1. to 2: 1. already knows what is changed, and can directly transfer only the changes to 2., without traversing huge Maildirs and that sort of stuff.
b. The outer BTRFS filesystem is for efficient backup of the container file to the remote storage: 2. already knows which parts of the container are changed, and can directly transfer only the changes to 3., without calculating a bunch of rsync checksums from a 1.5TB file.
Right now, I have a snapshot of a random data file locally and remotely, and a snapshot of the same file with encryption and btrfs locally. The approx. 5MB delta where transferred almost immediately (so that expected advantage works), but since then, everything is stalled. Any idea why?
A few anticipating Q&As:
- "Why are you not just using rsync?" - If I rsync my files to the remote location, they will not be encrypted remotely. If I resync the encrypted container, it will calculate checksums to find whats different. That takes quite some time and processing power for 1.5TB. This will especially be difficult on the remote side with the CIFS mount and the small vserver. BTRFS already knows whats different.
- "Why are you not using duplicity?" - Duplicity leaves me with a full backup + deltas. I do not want to keep a lot of deltas. I learnt that duplicity needs a regular full update. I don't want to upload 1.5TB on a regular basis. BTRFS will always keep a clean state where my current snapshot is as good as my first one, and I can always delete any snapshot in between or from the beginning.
- "Why are you not using encfs?" - Does not seem to be completely safe: https://en.wikipedia.org/wiki/EncFS#General_security_concerns Also, a bunch of the same reasons as given for rsync.