В своих исследованиях по управлению версиями файлов на уровне файловой системы, моментальным снимкам и связанным с ними идеям я изучил жесткие ссылки, а также то, что они собой представляют и как они себя ведут. Используя rsync, вы можете настроить систему создания снимков для бедняков, которая будет работать в файловых системах, которые изначально не поддерживают ее.
Но можно ли получить неизменяемые жесткие ссылки на ext3 / 4 или любых других файловых системах, если на то пошло?
Мое определение неизменной жесткой ссылки: жесткая ссылка, которая при изменении в одном месте становится обычной копией, а не жесткой ссылкой.
Я бы хотел этого, потому что это позволило бы использовать в моментальных снимках исходные данные для связывания вместо копии данных (в случае техники моментальных снимков rsync).
У меня есть гигабайты данных, которые нельзя дублировать из-за ограничений по объему, но у меня достаточно места, если я могу разумно делать снимки отдельных измененных файлов, а остальные связаны с источником, а не копией.
Учитывая все это, есть ли какие-то другие методы, функции или технологии, которые я действительно ищу?
Было предложение добавить новый системный вызов, reflink()
, который сделает именно то, что вы хотите. Пока это не принято; тем не мение, ocfs2
(начиная с 2.6.32) он уже есть как ioctl ([1][2]).
Пара статей за май 2009 года на эту тему:
Более старый вариант идеи назывался COW Ссылки.
http://blog.interlinked.org/tutorials/rsync_time_machine.html http://rsnapshot.org/
оба будут работать с ext3 / ext4.
Это не совсем снимки, но они создадут новый каталог с жесткими ссылками на предыдущее поколение. Удаление предыдущего поколения оставит новый каталог с правильными файлами.
Мне кажется что ты ищешь WAFLснимок в стиле. Он не совсем использует семантику «неизменяемой жесткой ссылки», но очень близок к ней.