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