Сжать файл на S3
У меня есть файл с 17.7 ГБ на S3. Он был сгенерирован как результат запроса Hive, и он не сжат.
Я знаю, что, сжимая его, это будет около 2,2 ГБ (gzip). Как я могу загрузить этот файл локально как можно быстрее, когда передача является узким местом (250 кБ/с).
Я не нашел простого способа сжать файл на S3 или включить сжатие при передаче в s3cmd, boto или связанных с ним инструментах.
Ответы
Ответ 1
S3 не поддерживает потоковое сжатие, и при этом невозможно сжать загруженный файл удаленно.
Если это однократный процесс, я предлагаю загрузить его на компьютер EC2 в том же регионе, сжать его там и загрузить в пункт назначения.
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html
Если вам это нужно чаще
Обслуживание сжатых CSS и JavaScript из Amazon CloudFront через S3
Ответ 2
Поздний ответ, но я нашел, что это работает отлично.
aws s3 sync s3://your-pics .
for i in `find | grep -E "\.jpg$|\.jpg$"`; do gzip "$i" ; echo $i; done
aws s3 sync . s3://your-pics --content-encoding gzip --dryrun
Это загрузит все файлы в ведро s3 на машине (или экземпляр ec2), сжимает файлы изображений и загружает их обратно в s3-ведро.
Проверьте данные перед удалением флага dryrun.