Задать вопрос

Как синхронизировать локальную папку на Amazon S3?

На CentOS сервере крутится Wordpress, и принимает аплоады медиа файлов в некую папку. Надо синхронизировать её в букет на S3, т.к. именно оттуда файлы раздаются посетителям сайта. Появление загруженного файла на S3 ожидается почти-сразу же, т.к. по ссылке именно оттуда он подгружается в черновик поста. Поэтому cron раз-в-5-минут не вариант, например.
  1. Первая попытка, по-простому: с помощью FUSE и S3FS букет монировался как устройство, и на файлы загружались прямо в него. Оказалось, плохо: медленно, и часто случались ошибки обработки загружаемых файлов.
  2. Второй шаг: стали держать локальную папку, в которую происходит загрузка; её с помощью lsyncd синхронизировали в смонтированный S3 букет. Лучше, но иногда происходят случайные, неуловимые ошибки, и некоторые файлы не проходят, оказываясь в букете с нулевым размером. И позже, эти нулевые файлы так и не обновляются до полноразмерной версии.


Поэтому сейчас в поисках «третьего» варианта. Как синхронизировать аплоады, с минимальным лэгом, и с бетонной надёжностью, с локальной папки в букет на Амазоне?


Подвохи:
  • удалённая FS смонтированного S3 букета работает далеко не мгновенно, копирование одного mp3 может занять неск. секунд;
  • в момент синхронизации некоторые файлы могут быть открыты — скажем, их сейчас прямо кто-то догружает на сервер, или картинки уменьшаются и записываются их уменьшенные копии.
  • Вопрос задан
  • 4745 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
shadowalone
@shadowalone
s3cmd попробуйте

s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
PaulIonkin
@PaulIonkin

Можешь попробовать мой проект: RioFS - позволяет монтировать S3 букет как локальную папку.
Но есть несколько ограничений, одно из них - не поддерживается "дозапись" данных в файлы. Тоесть если ты записал данные в файл и закрыл его - то в дальнейшем нельзя его открыть и дописать что-то в конец.
Но обычно это не требуется. Например у нас работает proftpd сервер, который записывает файлы в RioFS папку (где-то 10Gb в день средних по размеру файлов).

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы