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: ~/.config/rclone/rclone.conf

[mystorage]
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

2048408248320 2023-04-02/nvme0n1-windows.img