For this, we will use Rclone.
The device you want to back up should not have any writes for the duration of the backup, otherwise, you can end up with a broken file system or corrupt files.
The easiest to ensure this is to boot into live Linux and perform a backup on the devices you want.
In my case, I will be using Ceph as my backing store, so my rclone configuration reflects this.
Rclone documentation: https://rclone.org/s3/
My configuration file:
type = s3
provider = Ceph
access_key_id = xxxxxxxxxxxxxxxxxxxxxx
secret_access_key = xxxxxxxxxxxxxxxxxxxx
endpoint = https://my.s3.host.com/
chunk_size = 1G
Perform the block device backup:
sudo dd if=/dev/nvme0n1 status=progress | \
rclone rcat mystorage:/backup/2023-04-02/nvme0n1-windows.img
If you have a decently fast network, it will take some time, but not forever.
> rclone ls mystorage:/backup