Управление версиями файловой системы с Amazon S3 в качестве бэкэнда - PullRequest
4 голосов
/ 30 июня 2011

Я пытаюсь заставить следующую работу работать на моих компьютерах Debian и одном ноутбуке с OS X.

Я хотел бы иметь какую-то файловую систему управления версиями, которая использует Amazon S3 в качестве бэкэнда.

Я подумал о том, чтобы использовать s3fs (используя FUSE) для монтирования корзины, а затем создать файловую систему, использующую GIT, которая будет делать новый коммит каждый раз, когда я пишу файл (мне нужна полная история версий до x дней) , После этого смонтированная папка должна показывать последнюю версию файлов. Одна из проблем, которую я не знаю, как решить (я полагаю, из-за недостатка опыта), заключается в том, что я хотел бы синхронизировать файлы с локальной папкой. Конечно, я мог бы просто загрузить все файлы, но это не является благоприятным для пропускной способности.

Другая проблема заключается в том, что текущая версия s3fs не работает с MacFUSE.

Кроме того, что-то, что, вероятно, не произойдет, но я бы хотел предотвратить повреждение файлов, если два компьютера будут записывать в файл одновременно. Если я правильно понял, git сам выполняет некоторую блокировку файлов и не зависит от блокировки файлов операционной системы.

Какой может быть схема, чтобы сделать эту работу? Файлы, которые я хотел бы сохранить таким образом, - это просто .tex-файлы и векторные изображения.

Я знаю, что существуют решения (например, dropbox), но мне не очень нравится, что это закрытый источник.

1 Ответ

5 голосов
/ 01 июля 2011

Во-первых, позвольте мне сказать, что я бы не рекомендовал слепо запускать git на s3. git создает много маленьких файлов во время работы; S3 стоит дорого (и медленно), когда имеешь дело с большим количеством очень маленьких объектов. Как вы предполагаете, S3 также не имеет блокировки механизма; возможная последовательность делает это невозможным. И, наконец, git зависит от быстрого произвольного доступа к базе данных своих объектов; S3 не может этого предоставить, поэтому вам в любом случае понадобится локальное зеркало всего хранилища.

Вместо этого я бы порекомендовал вам расширить существующий бэкэнд git http, чтобы перейти на S3. Вместо того, чтобы выдвигать свободные файлы, это подтолкнуло бы один файл пакета. Это позволило бы использовать то, что хорошо в S3 - большая масса больших объектов. У вас все равно не будет блокировки, но поскольку вы решаете, когда нажимать вручную, вы можете найти другой способ достаточно легко координировать действия.

...