Службы синхронизации, такие как Dropbox, теория индексации файлов?

Я понял, что, используя сервис Amazon S3 напрямую, я могу сэкономить много денег. Вместо покупки клиента, такого как GoodSync или Jungle Disk, я подумал, что было бы интересно создать собственное приложение для синхронизации Windows, которое синхронизировало бы мои файлы с S3.

Я обнаружил, что могу использовать FileSystemWatcher для отслеживания изменений в файлах и каталогах, но я ищу теорию, лежащую в основе того, как другие службы, такие как Dropbox, индексируют свои файлы. Такие вещи, как сравнение размера файла файла с размером, записанным в индексе где-то на клиентском ПК, а затем использование этой информации, чтобы определить, следует ли синхронизироваться или нет.

Я использую C#, и ссылки на различные библиотеки или образцы кода, которые я мог бы использовать, были бы полезны, но я в основном ищу лучший способ индексации файлов и кого-то, кто укажет мне правильное направление.

Спасибо


person Joel Kennedy    schedule 10.02.2011    source источник
comment
Не программный ответ, но Windows Live Mesh бесплатно предоставляет 25 ГБ и разумное приложение для синхронизации.   -  person Dan Puzey    schedule 05.04.2011


Ответы (1)


Я сам прошел этот путь. На самом деле, теперь, когда Mozy отказался от безлимитного плана, а Carbonite предпочитает НЕ создавать резервные копии определенных файлов... таких как файлы 3GP и файлы *.dat, если вы обычно не заходите и не добавляете их вручную, я очень недоволен онлайн-резервными копиями.

Но ваш вопрос был о синхронизации. Dropbox делает это лучше всего. Но это дорого. Но я не уверен, что S3 будет дешевле.

В любом случае, у вас будет много препятствий. По моему опыту, проблемы, с которыми я столкнулся, следующие:

1) Распространение удалений

2) FileSystemWatcher просто пропускает такие события, как быстрое добавление файлов в папку, а затем их удаление

3) и т.д..

Теперь несколько идей о том, как я справился бы с этим снова:

1) Держите небольшую базу данных SQLite для имен файлов/путей локально. 2) Скопируйте файлы в каталог tmp перед отправкой на S3. 3) При изменении/обновлении/удалении файла и т. д. эта метаинформация сохраняется в SQLite.

Во всяком случае только некоторые идеи.

person cbmeeks    schedule 02.03.2011