* S3 is super expensive, unless you use Glacier, but that has a high overhead per file, so you should bundle them before uploading.
* If your value your privacy, you need to encrypt the files on the client before uploading.
* You need to keep multiple revisions of each file, and manage their lifecycle. Unless you're fine with losing any data that was overwritten at the time of the most recent backup.
* You need to de-duplicate files, unless you want bloat whenever you rename a file or folder.
* Plus you need to pay for Amazon's extortionate egress prices if you actually need to restore your data.
I certainly wouldn't want to handle all that on my own in a script. What can make sense is using open source backup software with S3/R2/B2 as backing storage.
Even with Glacier, S3 is ridiculously expensive compared to almost anything else.
As with anything, there are tradeoffs. There are situations where S3 is cheaper. For my use case (long term storage, rarely downloaded), Glacier Deep Archive is about $1/TB/mo which is cheaper than anything else out there (rsync.net, Backblaze R2, Cloudflare R3, Wasabi). Where you get bitten by Glacier is if you need frequent access since you pay a fee for AWS to retrieve the file in addition to the bandwidth used to download it.
which service you recommend?
In terms of software I've been impressed by restic, and as a developer who wants to be able to not back-up gitignored files the rustic clone of restic.
In terms of cloud storage... well I was using backblaze's b2 but the issues here are definitely making me reconsidering doing business with the company even if my use of it is definitely not impacted by any of them.