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