Take a look a rclone (https://en.wikipedia.org/wiki/Rclone). It supports numerous cloud providers. You'll have to build up the rest of your requirements yourself.
If just peer-to-peer syncing between a group of devices is ok, syncthing is great. You could use it as cloud backup if one of the devices is running on a server.