As disk sizes explode, I’ve found myself having to mirror disks which I don’t have enough storage for. My tool of choice is ddrescue.
However, it doesn’t support compression because it needs to be able to
seek through the output as it rescues data. A solution I’ve found is to
create a sparse file, format it btrfs, and mount it with the compression=lzo
option. This allows ddrescue to operate normally, while giving me fast + decent compression.