Введение
Версионная файловая система – это любая компьютерная файловая система, позволяющая файлу существовать в нескольких версиях одновременно. Таким образом, это разновидность системы контроля версий. Большинство распространенных версионных файловых систем хранят несколько старых копий файла. Некоторые ограничивают количество изменений в минуту или в час, чтобы избежать хранения большого количества тривиальных изменений. Другие вместо этого создают периодические снимки, к содержимому которых можно получить доступ способами, аналогичными доступу к обычным файлам.
Поддержка
Файловая система управления версиями похожа на периодическое резервное копирование, но имеет несколько ключевых отличий. Резервное копирование обычно запускается по расписанию, а версионность – при изменении файла. Резервные копии обычно охватывают всю систему или раздел, в то время как версионность происходит независимо для каждого файла. Резервные копии обычно записываются на отдельные носители, а файловые системы управления версиями записывают данные на тот же жесткий диск (и обычно в ту же папку, каталог или локальный раздел).
По сравнению с системами контроля за пересмотром
Файловые системы версионирования предоставляют некоторые функции систем контроля версий. Однако, в отличие от большинства систем контроля версий, они прозрачны для пользователей и не требуют отдельного шага "фиксации" для сохранения новой версии.
Файловая система журналов
Файловые системы с версионированием не следует путать с файловыми системами журналирования. В то время как файловые системы журналирования работают, записывая журнал изменений, вносимых в файл, перед применением этих изменений к файловой системе (и перезаписью предыдущей версии), файловая система версионного хранения сохраняет предыдущие копии файла при каждом сохранении новых изменений. Обе эти функции служат разным целям и не являются взаимоисключающими.
Хранение объектов
Некоторые реализации объектного хранилища поддерживают версионирование объектов, например, Amazon S3.
ИТС
Ранняя реализация версионности, возможно, первая, была в системе ITS в MIT. В ITS имя файла состояло из двух шестисимвольных частей; если вторая часть была числовой (состояла только из цифр), она интерпретировалась как номер версии. При указании файла для чтения или записи можно было указать вторую часть как ">"; при чтении это означало открыть версию файла с самым высоким номером; при записи – увеличить номер самой высокой существующей версии и создать новую версию для записи. Другой ранней реализацией версионности была система TENEX, которая впоследствии стала TOPS 20.
Файлы-11 (RSX-11 и OpenVMS)
Мощный пример системы версионного управления файлами встроен в операционные системы RSX 11 и OpenVMS от Digital Equipment Corporation. По сути, каждый раз, когда приложение открывает файл для записи, файловая система автоматически создает новый экземпляр файла, добавляя номер версии к имени. Номера версий начинаются с 1 и увеличиваются с каждым новым созданным экземпляром файла. При открытии файла для чтения приложение может указать точное имя файла, включая номер версии, или просто имя файла без номера версии, в этом случае будет открыт самый последний экземпляр файла. Команда "purge" DCL/CCL может использоваться в любое время для управления количеством версий в определенном каталоге. По умолчанию удаляются все версии файлов в текущем каталоге, кроме версии с наибольшим номером; это поведение можно изменить с помощью ключа /keep=n и/или указанием пути к каталогу (ов) и/или шаблонов имен файлов. Системы VMS часто используют скрипты для периодической очистки пользовательских каталогов; конечные пользователи иногда ошибочно принимают это за особенность системы управления версиями.
Линукс
8 февраля 2004 года Киран Кумар Мунисвами Редди, Чарльз П. Райт, Эндрю Химмер и Эрез Задок (все из Университета Стоуни Брук) предложили приложение, которое оказалось удобным для многих пользователей, протестировавших его. Система была разработана на базе программного обеспечения Linux и впервые запущена именно на этой платформе. NILFS – файловая система с лог-структурированием, поддерживающая версионирование всей файловой системы и создание непрерывных снимков. В этом списке она является единственной стабильной и включенной в основное ядро. Tux3 – последнее изменение внесено в 2014 году. Next3 – последнее обновление было в 2012 году. ext3cow – последний релиз датирован 2005 годом.
ext3cow Most recent release was in 2005.
LMFS
Файловая система Lisp Machine поддерживала версионность. Это было реализовано в системах, разработанных в MIT, LMI, Symbolics и Texas Instruments. Операционной системой, поддерживающей эту функцию, была Symbolics Genera.
macOS
Начиная с Lion (10.7), в macOS появилась функция под названием Versions, позволяющая сохранять и просматривать предыдущие версии документов, подобно Time Machine, для приложений, разработанных с поддержкой Versions. Однако эта функциональность реализована на уровне приложений, а не файловой системы; Lion и последующие версии не содержат полноценной файловой системы версионного контроля.
SCO OpenServer (англ.) (англ.) (англ.)
HTFS, принятая в качестве основной файловой системы для SCO OpenServer в 1995 году, поддерживает версионирование файлов. Версионирование включается для каждого каталога путем установки бита setuid этого каталога, который наследуется при создании подкаталогов. Если версионирование включено, новая версия файла создается при удалении файла или каталога, либо при открытии существующего файла с обнулением его длины. Устаревшие версии остаются в пространстве имен файловой системы под именем исходного файла, но с добавленным суффиксом, состоящим из точки с запятой и номера последовательности версии. Все версии, кроме текущей, скрыты при чтении каталогов (если не установлена переменная окружения SHOWVERSIONS), но в остальном доступны для всех стандартных операций. Переменная окружения и общая доступность позволяют управлять версиями с помощью обычных утилит файловой системы, хотя также существует команда "undelete", которая может использоваться для удаления и восстановления файлов, включения и отключения версионирования в каталогах и т.д.
Другие
Subversion имеет функцию под названием "автоматическое создание версий", при которой источник WebDAV с бэкендом Subversion можно смонтировать как файловую систему на системах, поддерживающих этот тип монтирования (Linux, Windows и другие). Сохранение файлов в этой файловой системе автоматически создаёт новые ревизии в системе контроля версий. Коммерческое программное обеспечение для управления конфигурациями и контроля версий Clearcase также поддерживает "MVFS" (многоверсионная файловая система) на HP UX, AIX и Windows с начала 1990-х годов.