How can I be sure that newer versions of btrfs can understand previous dumps of btrfs-send ?
If compatibility is silently broken then the full chain of differential snapshots cannot be restored by a single btrfs version :/
You may be able to still recover the data but it will be tedious. This is why metadata contains the btrfs version for each snapshot.
Solution
Implement a "canary" backup/restore that runs before the real backup.
Use a dummy encryption key.
For each backup create a separate metadata and storage infrastructure to contain the canary.
For AWS S3 data should live in standard storage so that restore is fast.
Data is completely synthetic but it should contain enough info to self verify itself.
Each file name should be the hash of its contents.
Each new snapshot should create a new directory. Its name is the concatenation of the snapshot uuid with the hash of the hash of the file contents inside.
A file at the root of the snapshot should be the concatenation of the uuids of the previous snapshots.
If there is an error when restoring ALL snapshots from the canary, then there is a compatibility issue. Probably the best is to stop and start a new snapshot chain from scratch.
Problem
btrfs-send
?Solution
Implement a "canary" backup/restore that runs before the real backup.
If there is an error when restoring ALL snapshots from the canary, then there is a compatibility issue. Probably the best is to stop and start a new snapshot chain from scratch.