A local file will require uploading if the size of the local file is different than the size of the s3 object, the last modified time of the local file is newer than the last modified time of the s3 object, or the local file does not exist under the specified bucket and prefix.

from the official docs

I cannot believe that aws s3 sync is based on file size and last modified dates and not something like an md5 hash.