Hmmm...
Seems like Hetzner StorageBox's custom shell has some issues with file names.
I have a file named like: "(something) [something.pdf", generated by calibre.
The shell though the file name is an incomplete wildcard expression. If I use the escaped format, like "\\(something\\)\\ \\[something.pdf", the shell is fine, but the command will give an internal error and trigger an OOM kill.
The rclone failed to calculate md5 on those files. Thus failed to backup to S3.
I contacted hetzner's support, but no reply yet. I did some google, seems like hetzner's support got a very bad reputation. Hopefully they won't close my account just because I noticed a weird issue, LOL.