Реализация резервного копирования на хардлинках под Windows
Идеей написания этой статьи и создания программы в частности послужил рассказ Oleg_Sh о том, как он из подручных инструментов создал средство для резервного копирования, которое использует хардлинки как замену дублирующихся файлов. Эта идея оказалась настолько простой и гениальной, и всегда лежала на поверхности, что было решено — нужно и себе прикрутить такую штуку. Тем более мне нужна была очень похожая функциональность и я время от времени искал что-то очень простое на замену платным или громоздким комбайнам, которые к тому же не делали именно то, что требовалось для моих задач. А требовалось не так уж много — во-первых в любой момент времени копировать любые файлы, в том числе работающие базы данных, чтобы не заставлять людей выходить из программ даже на ночь, и копировать быстро; во-вторых иметь возможность очень быстро восстановить данные из резервной копии (хранение данных «как есть» идеально), в третьих хранить как можно больше резервных копий, и не лишь бы как, а с полной структурой данных. Все эти задачи как нельзя лучше реализуются с помощью теневого копирования и использования хардлинков. Но вот та реализация — на куче батников и с использованием портированной версии rsync (которая к тому же требовала кучу библиотек cygwin и имела проблемы с нестандартными символами), мне совсем не понравилась. Стал искать альтернативы, но найти именно то, что подходило бы мне идеально, не удалось. Поэтому было решено — нужно сделать проще и лучше, и не только себе, но и коллегам.Читать дальше →