Алгоритм резервного копирования - PullRequest
0 голосов
/ 04 мая 2009

Я смотрю на написание программы (.Net) для резервного копирования файлов на компьютер. Как мне узнать, какие файлы были изменены в резервную копию (я не хочу каждый раз проверять даты последнего изменения.

Были ли изменены какие-либо алгоритмы резервного копирования для резервного копирования только битов файла. Какие обозначения O для алгоритма?

Ответы [ 4 ]

2 голосов
/ 04 мая 2009

Проверьте архивный бит . Это может быть то, что вы хотите.

В .NET это System.IO.FileAttributes.Archive, который можно использовать с SetAttr в VB, или System.IO.FileInfo.Attributes или System.IO.File.SetAttributes().

Любой алгоритм, который проверяет время последнего изменения или бит архива, будет зависеть от количества каталогов на диске. Поскольку оба атрибута хранятся в каталоге, время будет зависеть от файловой системы и уровня ее кэширования. Более эффективным способом анализа эффективности резервного копирования может быть просмотр количества блоков, которые изменились.

1 голос
/ 04 мая 2009

Вы не избежите сканирования всех файлов, но это ограничено чтением секторов каталогов. Все еще занимает некоторое время для среднего привода. Помимо даты файла есть бит архива на каждой записи файла. Не забудьте очистить это после резервного копирования файла.

Таким образом, сложность будет O (n), где n - количество файлов.

1 голос
/ 04 мая 2009

Могу ли я предложить поиск 'rsync для окон' в вашей любимой поисковой системе?

0 голосов
/ 04 мая 2009

Вот очень хороший простой материал, который я использую для резервного копирования в своих скриптах: http://www.mikerubel.org/computers/rsync_snapshots/.

Исходя из этого, первым подходом будет создание базы данных о времени модификации файла и сравнение / обновление их каждый раз, когда вы создаете резервную копию. Помимо даты и времени, я бы также сохранил размер файла и добавил его к сравнению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...