I use btrfs send -p with btrfs receive to do incremental backups. Something like this:

btrfs subvolume snapshot -r /data /data/.snapshots/newSnapshot
btrfs send -p /data/.snapshots/lastSnapshot /data/.snapshots/newSnapshot | btrfs receive /backup/.snapshots
btrfs subvolume delete /data/.snapshots/lastSnapshot
btrfs subvolume delete /backup/.snapshots/lastSnapshot
mv /data/.snapshots/newSnapshot /data/.snapshots/lastSnapshot
mv /backup/.snapshots/newSnapshot /backup/.snapshots/lastSnapshot

It works fine but doesn't provide much feedback.

Is there a way to get a summary of how much data is to be transferred? Can I get any statistics at all about the differences between two snapshots? I'm mainly interested in the total amount of changed data.

1 Answer 1


I'd simply pipe the send stream through pv like this:

btrfs send ... | pv | btrfs receive ...

It'll show you the transfer speed as well as the already transferred size and of course that size will be visible in the end too.

  • 1
    Using btrfs send ... | pv -fbn 2>> logFile.txt | btrfs receive ... does provide a summary with the number of bytes sent, but it isn't exactly the number of bytes changed. There is some overhead for send to indicate where the data is to be written. Still, this is close and the solution functional.
    – A. Que
    Jan 16, 2023 at 19:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .