How to backup to smaller disks connected one-by-one?

I have on online pool and several offline spare disks. None of spare disks has enough capacity to fit a complete backup, but sum of their capacities is more than enough. So I could connect several of them, make a pool combined of them, and send backups there; but I don’t have enough slots to do that, short of buying more external USB enclosures, which is clumsy. Is there a good solution that allows me to connect only one disk when doing a backup, and be notified when I need to change a disk to continue?

I thought about parsing zfs-diff output and transferring changed files, but some of them may be large VM disk images, so a naive copy may be inefficient. Also I’d need some program to assemble a whole tree when I need to restore from this thing…

I strongly recommend against using USB enclosures for a long-term connected pool. USB connectivity isn’t even reliable enough to recommend leaving a single disk pool connected for long periods, let alone several of them in an enclosure.

You’d be (much) better off finding some dusty old desktop machine, stuffing your spares into it, then replicating across the network. Given the severe limitations of USB, you’d likely get higher throughput on your backup that way as well.

So if you really want to to backup to spare disks one by one, I would recommend using the tar command with the --multi-volume (or -M for short) option. Tar will fill your spare drive, then stop when it is out of space and ask for another device to write to. When you want to restore, you use the same option to read from each spare drive. You will need to mark the order of spare drives it goes in when reading from them however.