Нечто подобное уже существует в Windows 7. «Предыдущие версии» называется. Правда пока предыдущую версию файла можно получить только из точки восстановления или бекапа системы, да и файл хранится целиком… Но, думаю, что в Microsoft скоро это исправят…
Это была та же самая «предыдущая версия», что и в нынешних Vista/7 ставилась, правда, отдельным патчем, требовала XP SP1, был это все же 2002 год, как вспомнил я, покопавшись в памяти получше.
Если я только что написал огромный кусок кода, только только нажал в редакторе кнопку сохранить, а потом случайно затер файл старой версией с ftp, то встроенная в Windows система мне никак не поможет восстановить утерянное.
Я, например, месяца три назад поставил и рад. Использую и в индивидуальной разработке и в работе над документами.
Создал несколько разных репозиториев, настроил синхронизацию через флешку.
Теперь и дома, и на работе есть полная история изменений.
Конечно, только тех, когда я не забыл нажать «Commit», но это уже что-то и я не забываю.
В фотошопе настраивается сколько действий запоминать. По умолчанию там 20, вроде.
Я всегда сразу 200 ставлю. Должно хватить. Только это временно место на винте ест.
между прочим в time machine бакапы файлов тоже храняться целиком, они использую symlink для неизмененных файлов. А в Windows «Previous Versions» реализованы через Volume Shadow Copy который работает на уровне блоков NTFS (см. en.wikipedia.org/wiki/Shadow_Copy).
Ну почему же нет. Вполне себе есть. Мало ли какой вирь проберётся в систему. Побъёт чего-нить, что обычными средствами не восстановить, а тут можно сделать точечный откат — и вуалая!
Да, это нужно. В первую очередь поддержку семерки хочется, чтобы потестить и сказать, чего хочется еще.
Кстати, если планируете бесплатно распространять, может, сделать проект опенсорсным?
дропбокс уже два года как хранит любую копию файла и это доступно с любого места сети (через веб или клиент). монетизация тоже уже реализована — бесплатные аккаунты ограничены на 2 гигабайта, платные — 9.99$ за 50гб.
Проект пока никакой. Последняя строчка кода была написано за день до защиты (было это давно). Сейчас появилось свободное время и решил довести какой-нибудь из старых проектов до ума. И хочется узнать, нужно ли кому-нибудь подобное и существуют ли близкие аналоги.
Если это была дипломная работа, то, вроде бы, имущественными правами на неё обладает вуз, а значит и опенсорса не будет. Поправьте, кто разбирается в законах.
Обалденная штука. Удивляет лишь одно — вы действительно сомневаетесь в её необходимости? ;) Однозначно нужна и я искренне удивлён почему до сих пор этого нет в самой операционной системе, исключая «Восстановить предыдущую версию» в Windows 7. Если есть аналоги, то прошу отписаться тех, кто знаком с ними.
Мне кажется можно было бы просто реализовать автобота для SVN, который бы ловил все изменения с файлом. Вам, наверное даже легче было-бы. Тут вам и шифрование, и удобный клиент, и хранилище на удаленном ресурсе… Все сразу :)
автобота стоит писать скорее не для svn, а для git. работает он быстрее, не требует постоянно висящего сервера, да и размер хранилища(а тут это существенно, т. к. вся файловая система сохраняется) получается существенно меньше.
Использую SVN, но не разбирался в ее работе, возникает два вопроса:
1) Как SVN работает с бинарными файлами
2) Не будет ли разбухание базы в этом случае.
А по поводу программы не хватает функционала, если шифрование может подождать, то хранение на удаленных серверах очень хотелось бы.
Было бы замечательно, если бы к этой программе была документация для разработчиков, и она была OpenSource, идея интересная, и есть есть немалая вероятность того, что другие разработчики могут помочь. К тому же бесплатные и свободные проекты легче раскрутить.
«Subversion is equally efficient on binary as on text files, because it uses a binary diffing algorithm to transmit and store successive revisions. „
Эффективность SVN при работе с бинарными файлами такая же, как и при работе с текстовыми, так как используется алгоритм бинарных отличий для успешной передачи и хранений ревизий.
Как я понял это не совсем то же самое что svn. svn — средство для разработки программ, и она сохраняет определенную версию программы по запросу. Тут же вы сохраняяете все версии файла независимо от того написали вы svn commit или нет. Вещь бесспорно полезная, я сам думал написать некую подобную вещь для linux.
По статье: изменения программа пытается сохранить как diff файл, или как бинарную дельту? Есть ли механизмы удаления каких-то версий файла по запросу?
SVN — система контроля версий.
Версий чего угодно. Она часто используется для контроля версий исходников программ.
Вот потому я и написал, что в итоге все тоже самое плюс автобот для автокоммита :)
Автокоммиты несложно реализвать в linux при помощи механизма inotify — когда можно автоматически выполнять какие-то действия при изменении файловой системы. Про Windows не знаю. Там есть такая штука?
гммм. Мне кажется имеет смысл отказаться от инкрементальных изменений файла, или сделать их опциональными. Рекомендую посмотреть в сторону линуксового rsnapshot/rsync — идеологически это именно то что вы делаете, и там бэкапы хранятся просто в папках в полном виде (с использованием линков, конечно), что дает возможность восстановить бэкап простым копированием, без использования софта. В случае полного краша системы это дает возможность ее поправить без предварительного реанимирования.
В хранилище так же хранятся полные версии файлов, если изменений слишком много (к примеру, если они составляют больше 30% от размера файла), или, если цепочка версий слишком длинная. Формат хранилища простой и, в крайнем случае, пользователь может найти и скопировать оттуда файл вручную (полные версий файлов отличаются специальным расширением).
Ну, часто, проектируя системы бэкапа, разработчики забывают что в какой-то момент этот бэкап нужно восстанавливать =). И имхо именно этот процесс должен быть максимально простым и быстрым в любых условиях =)
да, у маковской ТаймМашин самая крутая фишка — это очень (ОЧЕНЬ!!!) красивая и наглядная интерфейсная интегрированность в софт — в Финдер, ай-Фото, айТюнз и т.п.
Нужно всегда искать золотую середину в каждом конкретном случае.
Практически всегда на одной чаше весов простота и быстрота, а на другой — ресурсы.
Сейчас компы быстрые и с большими винтами, поэтому зачастую можно не особо париться по поводу оптимизаций.
Пользуется ли спросом?
Вбиваем «backup software» на download.com и офигеваем от результатов.
Что дальше?
Допиливать до минимально-продукта, вываливать в продажу и (или) в бетатестинг, чтобы собрать отзывы, да побольше и поправить детские болезни.
Удаленные бэкапы — очень перспективная ниша, да с вашей фишкой, просто чума.
Надо просто мгновенно делать из этого бизнес. Применений — море. Начиная с продуктов для домашних/корпоративных пользователей и заканчивая редакциями для сервисных компаний и специализированных приложений.
Продавать и продвигать на рынок будет интересно и, самое главное, есть куда.
Например, можно подумать над непрерывным бэкапом базы 1С в виде отдельного продукта :)
а вот это упущение :-) самая то соль была бы в бекапирование на удаленный ресурс, тем более для винды с ее UNC особо нет разницы куда пишешь — локально или удаленно — все делается системой.
примонтировать то можно, только сервис работает из под системной или админской учетки, в которой этот диск не примонтирован :) (smb — обычное в смысле сетевое окружение)
баян ;) восстановить прежнюю версию будет работать если, либо есть точка восстановления системы с этим файлов, либо бекап встроенной виндовой тулзы. сама она ничего автоматически не сохраняет ;)
Но я пока больше склоняюсь к Norton GoBack т.к. она работает на более низком уровне.
Т.е. вот если у вас виндовс полностью слетит ты вы ведь не сможете откатить файловую систему до состояния скажем вчерашнего дня? А Norton GoBack сможет.
GoBack предназначена для другого. Вряд ли она вам подошла бы.
Коммерческий потенциал у программы очень большой, хотя два года и потеряно. Но все еще возможно. :) Когда MS сподобится сделать аналог — совсем не известно, и к тому же, вы при определенной сноровке можете идти на шаг впереди. Пока вас не купят. :)
Как раз вся перспективность бэкапов как бизнеса лежит в том, что их можно делать на разных логических уровнях: раздел/файловая система, файлы, группы файлов/ состояния приложений и проектов.
Нет и не будет одного мегакрутого приложения, которое делает «правильные бекапы».
На каждом уровне есть интересные продукты вместе с интересными [узкими] проблемами. Зачем мне делать архив раздела, если важны только 10 текстовых файлов с книгами? И наоборот, зачем делать копии отдельных файлов, если важна целостность системы/проекта?
Мне гораздо интереснее, как это сделано изнутри :)
Как отслеживаете изменения файловой системы?
Как там с юникодом в именах файлов? Кириллицу нормально обрабатывает в нерусской винде?
При запуске служба инициализирует сервер TCP/IP и создает по одному монитору на логический диск. Мониторы работают в отдельных потоках, используют WinAPI функцию ReadDirectoryChangesW. Мониторы передают события основному управляющему объекту, который оставляет только нужные (согласно фильтрам Include и Exclude), классифицирует события, преобразовывает во внутренний формат и передает другому объекту, менеджеру хранилища.
Менеджер хранилища работает так же в отдельном потоке. Часть входящих событий сразу же пересылает на уровень ниже: объекту, управляющему хранилищем на низком уровне. Часть перемещается в «отстойник» (в основном, события изменения содержимого). Отстойник нужен для того, чтобы в хранилище добавлялись только более менее «стабильные» версии (к примеру, если за 10 секунд в файл будет сделано 3 записи, то сохранено будет только последнее состояние).
Сервер работает по протоколу TCP/IP (каждый клиент обслуживается отдельным потоком). Формат сообщений довольно простой (4 байта на размер, байт на тип, остальное уже зависит от типа сообщения). Команды от клиентов передаются менеджеру хранилища, тот опять же передает их на уровень ниже, получает результат и передает серверу. Текущая версия понимает только 2 команды: Timeline (передается имя файла или же путь, возвращается полная история версий для всех найденных файлов) и Restore (передается имя файла, timestamp, возвращается результат и timestamp ближайшей версии).
Текущая версия программы полностью ansi (использовался Delphi 7). В Delphi 2009 уже есть полная поддержка Unicode, перевести проект будет не очень сложно.
Загруженности процессора в какой момент? В момент простоя? 0%. Никогда не понимал подобных характеристик.
Не перезагружал Windows около 10 сейчас, памяти выделено 3 мегабайта с копейками. Заметной нагрузки сервис не создает. Что с ним, что без него, разница «на глаз» не ощутима (при довольно слабом железе).
вопрос был к кому, чтобы узнать сколько процессорного времени кушает ваш сервис. Делал когда-то давно программу похожую на вашу. В то время ReadDirectoryChangesW почему-то показалась довольно ресурсоемкой функцией, поэтому пошел глубже, в драйвера и нулевое колько windows: отлавливал изменения файлов на низком уровне.
как быстро коммитятся изменения? не бывает ли блокировок и накладок на больших файлах, когда ваша программа их ещё читает, а файл снова перезаписывается?
Работа непосредственно с хранилищем (добавление, извлечение, чтение истории) происходит в один поток. Запросы ставятся в очередь и постепенно выполняются. Внешние же запросы от клиента выполняются в потоке, обслуживающем конкретного клиента (соединившегося по TCP/IP), но работа с хранилищем все равно происходит с использованием критических секций (фактически, опять же создается глобальная очередь запросов).
Непосредственно файловые операции за пределами хранилища контролируются ОС (в случае, если служба копирует файл, а сторонняя программа пытается произвести запись).
Отличная разработка. Хотелось бы иметь возможность самому указывать папки, в которых нужно следить за изменениями и бекапить. У меня все данные хранятся на отдельном диске, так что бекап нужен только для него.
Кстати, у idrive тоже есть нечто похожее. Называется Continuous Backup. Следит за изменениями и раз в 10 минут бэкапит (на свои сервера). Они 2 гб дают бесплатно. Пользуюсь уже довольно давно, доволен.
Вообще-то должны (у меня 100% добавляются). Попробуйте еще раз =) Обработка изменений идет не сразу, а где-то спустя 10-15 секунд.
В любом случае, строго не судите. Массового бета-теста не было (сам использую и несколько моих друзей).
В уже далёком 2005 году была выпущена Executive Undelete 5.0 build 114. Кроме расширенного функционала Корзины она также могла вот что:
«Одной из главных особенностей новой версии являются средства автоматического отслеживания версий документов Microsoft Office. Теперь при редактировании и сохранении файлов Word, Excel и PowerPoint программа автоматически „захватывает“ их предыдущие версии т.е., помимо возможности восстановления при непреднамеренном удалении, она также обеспечивает защиту информации при случайной перезаписи.»
Потом она очень долго не обновлялась, и вот, вдохновлённый этим топиком, я узнал, что теперь это Diskeeper Undelete 2009.
Это я к тому, что подобные решения были и раньше. Но их существование не лишает права на существование Вашего варианта :)
— Первая программа не делает снимок всего диска, выполняет продолжительное резервирование с возможностью восстановления файлов по временной шкале.
— Rebit — аналог TimeMachine, единственный пока для винды. На её основе создан Seagate Replica.
Сравнения: docs.google.com/viewer?url=http://www.genie-soft.com/Products/genie_timeline/TimelinevsSeagateReplica.pdf
— ShadowProtect — некое подобие Ghost, Acronis, причём лучшая прога в своём классе. Позволяет отслеживать последние изменения на диске и бэкапить в определённые промежутки времени, своего рода «continuous protection backup». дорогая, быстрая и безотказная.
Использую для этой цели Dropbox — dropbox.com. Для бесплатных аккаунтов хранит историю 30 дней, для платных — вечно. Автоматические бакапы на сервер и на другие компы. И кроссплатформенный (только под Маемо нет пока)
У меня дома стоит Windows Home Server (Acer) — делает бакап всех 4 компьютеров дома и заодно является файловой помойкой (там около 5 терабайт). Бакап файлов инкрементрый, одинакоые блоки (со всех компьютеров) бакапяться с подсчетом ссылок. Time Machine до этого пока далеко.
С огромным удовольствием поставил бы эту программу отдельным личностям на работе. Очень, очень полезная вещь. Жаль под Висту и Семёрку не работает.
Прошу вас, не бросайте проект.
Acronis уже сделал такое под винды, в общем описании на сайте называется Continuous Data Protection,
а вообще NonStop Backup: www.acronis.com/homecomputing/products/trueimage/
с красивым интерфейсом, автоматической консолидацией бекапов и таким прочим.
Аналог Time Machine для Windows