Я знаю о полных резервных копиях, инкрементных и декрементных. Однако мне было интересно, почему никто (Windows Backup, TrueImage, Paragon), по-видимому, не реализовал следующий алгоритм резервного копирования.
Для этого требуется резервный носитель с поддержкой ссылок, например NTFS. В идеале носитель резервного копирования должен быть одного формата, чтобы поддерживать все функции, такие как альтернативные потоки данных (ADS).
- Первая резервная копия - полная резервная копия. Это скопирует все файлы на резервный носитель в подпапку \. Давайте назовем эту папку L (для "последней"). Там нет специального формата файлов, просто скопируйте файлы.
- При следующей резервной копии будет создана новая подпапка \, назовем ее C (для "текущей"). Файлы, которые изменились из полной резервной копии, будут снова скопированы с исходного диска. Файлы, которые не изменились, перемещаются из L в C, и создается жесткая ссылка, указывающая из L в C.
- При повторном резервном копировании та же процедура будет применяться с C и другой новой папкой.
Есть ли что-то, что я пропускаю в этом алгоритме, который не будет работать?
Хотя я все же заметил какие-либо проблемы, я вижу следующие преимущества:
- последняя резервная копия (С) всегда является полной резервной копией. Для восстановления резервной копии вам нужна только эта резервная копия. Пользователь может удалить любую старую резервную копию, не разрушая возможности восстановления (что не относится к полному, инкрементному и декрементному резервному копированию).
- Старые резервные копии будут работать как полные резервные копии благодаря ссылкам, но занимают гораздо меньше места на диске.
- есть полная история изменений файла, если пользователь не удалил файл. Но в отличие от SVN, можно удалить старые ревизии.
- Перемещение файлов и создание ссылок - очень быстрые операции. Создание резервной копии должно быть соответственно производительным.
- Можно выборочно удалять измененные файлы в старых резервных копиях (например, только большие), не удаляя полную резервную копию