Pull to refresh

Аналог Time Machine для Windows

Reading time 3 min
Views 23K
Time Machine Каждый из нас иногда теряет информацию. По своей ошибке (дрогнувшая рука, не вовремя нажатые клавиши CTRL+S), либо по неудачному стечению обстоятельств (выбило пробки, завис компьютер). Иногда речь идет о пустяках. Бывает, что приходится заново выполнять работу. В худшем же случае, ценная информация оказывается безвозвратно утеряна.

Все мы знаем, что необходимо периодически делать бэкапы. Знаем, но не делаем. А если и делаем, то, по закону подлости, когда надо, копия месячной давности — это лучшее, что удается найти. А ведь случается и так, что утерянный файл было создан всего лишь пару часов назад.
Когда я не мог определиться с темой диплома, один знакомый рассказал мне про TimeMachine от Apple и предложил сделать аналог для Windows. Непрерывная защита данных – это то, о чем я всегда подсознательно мечтал.


Основные требования к программе:
  • Возможность восстановления состояния файла на любой момент времени.
  • Отсутствие заметной дополнительной нагрузки на систему.

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

Что получилось


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

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

tm_service.png - upload images with Picamatic
скриншоты кликабельные

Клиентская часть предоставляет интерфейс пользователю и передает запросы службе по протоколу TCP/IP (служба выполняет эти запросы и сообщает результат). Фактически, клиентское приложение может быть любым и все, что требуется от разработчика — сохранить протокол взаимодействия. К примеру, можно реализовать управление через контекстное меню (то, которое появляется при щелчке правой кнопкой мыши по файлу или папке).

tm_main.png - Picamatic - upload your images

Как можно заметить по скриншоту, программа не копирует каждую версию файла в хранилище. Вместо этого, при добавлении очередной версии, происходит поиск ближайшей к ней (из уже сохраненных). Если это возможно, в хранилище заносится только список изменений (при этом, за основу может быть взята такая же частично сохраненная версия). В итоге, «объекты» в хранилище разделяются на 3 типа: полная версия (файл целиком), список изменений, ссылка (в случае, если версия является полный копией другой).

tm_options.png - Picamatic - upload your images

Настройки только ключевые:
  • Маски игнорируемых файлов (не будут обрабатываться в любом случае)
  • Маски файлов для резервирования (могут быть указаны конкретные папки)
  • Путь к хранилищу
  • Максимальный размер хранилища
  • Максимальный размер файла

Клиентское приложение было разработано буквально за день, так как поджимали сроки (отсутствуют такие важные функции, как полное удаление файла из хранилища, удаление определенных версий конкретного файла и др.).
Программа написана больше двух лет назад, и с тех пор служба постоянно запущена на моем ноутбуке. Свои функции выполняет на 100%, проблем с быстродействием нет (дополнительная нагрузка на систему не ощущается).

Что дальше?


Этот вопрос я хочу задать хабрасообществу. Есть ли реальный спрос на подобные системы резервирования? Интересно ли это кому-нибудь? Есть ли смысл продолжать разработку?
А работы то, на самом деле, много. Хранилище на удаленном ресурсе, шифрование данных, интеграция с ОС, удобный пользовательский интерфейс. Начать можно с того, что текущая версия службы не работает на Windows Vista (не регистрируется и не запускается).

narod.ru/disk/15172062000/TimeMachine.zip.html
Tags:
Hubs:
+123
Comments 110
Comments Comments 110

Articles