Автоматическое управление версиями файловой системы на сервере (Linux)
Итак, в основном, я ищу программное обеспечение linux для мониторинга папки (и ее подпапок) на предмет любых изменений и применения какой-либо формы управления версиями (то есть сохранения "базы данных" или чего-то еще, откуда я могу восстановить файлы).
Причина, по которой это невозможно сделать с помощью традиционных SCM (GIT, SVN, HG и т. Д.), Двояка:
- мониторинг и управление версиями должны быть автоматическими (единственными критериями заказа являются время)
- программное обеспечение, в котором я нуждаюсь, должно делать определенную вещь, в отличие от SCM, где они делают намного больше (и, конечно, разумно более подвержены ошибкам)
Сервер, на котором он будет работать, - это неуправляемый VPS, следовательно, обладающий значительным контролем - но я боюсь, что этого недостаточно для установки раздела с файловой системой управления версиями.
Находясь в этом, знайте, что я уже проверял обратную дорогу, но я не впечатлен и колеблюсь, чтобы использовать программное обеспечение, последнее обновление 7 лет назад (2004).
Извините, что передал головную боль другим коллегам-нарушителям, но я ничего не могу поделать;)
Изменить: Кстати, хотя я бы предпочел, чтобы это было на основе CLI, любые альтернативы также приветствуются!
Редактировать 2: Не для того, чтобы разбивать linux или что-то еще, но с концепцией сигналов linux(unix), это не должно быть слишком сложно для написания (конечно, специальной командой).
На самом деле, я использую систему, которая уже делает это ( Dropbox), но у нее другое назначение, и поэтому управление версиями ограничено 30 днями (а управление версиями хранится в онлайн-хранилище). Но это показывает, что концепция вполне возможна.
3 ответа
Если вы не хотите использовать rsync, как предложил Zoredache, мое следующее предложение - написать скрипт, который использует inotify для отслеживания изменений. Это не будет очень сложно.
Затем, будет ли ваш сценарий автоматически фиксировать измененный файл в традиционной системе управления версиями (например, svn, git и т. Д.) Или просто сохраняет последние версии X файла, где вам решать.
Действительно ли у него есть версия при изменении на уровне файла, или вы принимаете периодические снимки?
Если вы готовы принимать периодические снимки, вы можете просто использовать что-то вроде dirvish или rsync напрямую. По сути, вы создаете полную копию своей файловой системы, а затем любые последующие копии будут жестко связывать идентичные файлы, а новые / измененные файлы будут отдельными.
Dirvish в основном является интерфейсом для rsync и использует опцию --link-dest.
Как пользователи получают доступ к файловой системе? Доступ через webdav является опцией? Вы можете настроить SVN с помощью Apache и использовать автоверсию.
Я знаю один способ сделать это. Это проприетарная файловая система и поставляется с кучей других вещей, что, в свою очередь, делает ее очень дорогой, но она делает большую часть того, что вы ищете. Он называется NSS и поставляется с Novell Open Enterprise Server 2. В отличие от Wayback, он все еще поддерживается. Он сохраняет то, что он называет "спасительным" деревом, которое будет хранить столько же "удаленных" данных, сколько свободного места на томе минус 20% (это можно настроить).
Единственное предостережение в том, что он не отслеживает изменения конкретных файлов, а только файлы, которые удалены и воссозданы с новой информацией. Итак, файлы Excel будут отслеживаться, а базы данных Access - нет.
NSS Salvage будет отслеживать только определенный период времени, который зависит от того, сколько свободного места осталось на томе. Соедините это с автоматизированной системой извлечения файлов из Salvage в более традиционную систему контроля версий, и вы получите довольно мощное решение. Это значит иметь дело с Novell.