A tool that could do parallel downloads of small files would be a winner. We have a lot of small files and use s3cmd. It downloads one at a time. You can finagle it with some xargs magic, but it would be nice to have it built in.
https://github.com/newspaperclub/hank
I found the existing s3 syncing tools used lots of memory when dealing with many small files, so I wrote this in Go, trying to carefully manage memory usage by concurrently listing and downloading the files.
We use it for backing up 500GB across 800k files, from an S3 bucket to a ZFS filesystem for snapshotting. It does the job well, usually taking just a few minutes when there are minimal changes.
Wish I had the time, I just realized it would be a fun project to learn Go with.