I've been playing around with the computer... only when you know the limits of your machine do you know not to cross those limits... or something.
So first I booted the Zorin OS USB stick and restored the .img file backup I'd done yesterday, just to be sure it works. It did.
Now I'm fiddling with compressing the .img file... all you have to do is start up Nautilus, right-click the file, select "Compress", then set up the compression options. You'll see a little icon with a circular progress indication pop up in the header. You can then close Nautilus, the file compression will continue in the background. I'll report back on how much space is saved by compressing backup files.
Alternatively, you can back up right to a compressed file, and restore directly from that compressed file...
To back up to compressed file:
sudo dd if=/dev/sda conv=sync,noerror bs=4096 status=progress | gzip -c> save path/printf "%(%F_%H-%M-%S)T.tar.gz"
The bolded bits you'd have to change to fit your scenario, specifically the device node of the drive you're backing up (ie: sda, sdb, sdc, etc.); and the path of the backup file you'll be creating. The file name will automatically be formatted as YYYY-MM-DD_HH-MM-SS.tar.gz (for example: 2022-12-09_14-22-54.tar.gz). That makes it easy to sort your backup files by date.
To restore from compressed file:
sudo dd if=path/backup.tar.gz status=progress | gunzip -c > /dev/sda
Again, the bolded bits you'd have to change to reflect: 1) the path to and name of your saved backup file, and: 2) the device node of the drive you're restoring to (ie: sda, sdb, sdc, etc.).
I have another idea... zero'ing the free space of the drive before doing the backup. I figure that the compression algorithm chunks all the zeros down to practically nothing, so in effect, you're creating something akin to a sparse file. That would mean that the size of the compressed file won't include all the sectors that have abandoned bits on them other than 0, so the compressed file should be really small.
I just have to find a program that'll zero the free space of all partitions, one after another, and can work with ZFS.
After I'd ascertained that the backups were actually protective, I booted the Zorin USB stick, then used:
sudo dd if=/dev/zero of=/dev/sdb1 bs=4096 status=progress
sudo dd if=/dev/zero of=/dev/sdb3 bs=4096 status=progress
sudo dd if=/dev/zero of=/dev/sdd1 bs=4096 status=progress
sudo dd if=/dev/zero of=/dev/sdf1 bs=4096 status=progress
... to zero (ie: completely wipe) the mirror drive, the second swap drive and the rpool and bpool L2ARC cache drives. Then I rebooted. It started up, sudo zpool status prompted me to replace the mirror drive and add the L2ARC cache drives back again, the mirror drive resilvered, I added the second swap drive again, issued a sudo zpool scrub rpool command, and all was well.
ZFS is almost literally unbreakable.
[EDIT]
The compression of the .img file backup of the main hard drive is complete. The .img file is 1,000,204,886,016 bytes, the compressed file is 28,541,191,012 bytes. That's a compression ratio of 35.04425816 : 1.
[/EDIT]