2009-03-16 2 views
1

У меня есть необходимость написать простой компонент резервного копирования, чтобы синхронизировать папку и ее подпапки с сервером. Для инкрементного резервного копирования я хочу только загрузить измененные файлы. Каким будет лучший способ отслеживать изменения в файловой системе? Некоторые существующие программы, такие как черепаховый и офисный паз, имеют такую ​​возможность для обнаружения изменений файлов. Интересно, какой лучший способ реализовать подобную вещь.Синхронизация файловой системы, как определить, изменился ли файл?

Спасибо!

+0

Условия использования программного обеспечения? –

+1

Когда вы говорите «обнаружить изменения», вы имеете в виду определить, отличается ли файл от резервной копии, или вы хотите реагировать на момент изменения файла? –

ответ

2

Ваш вопрос несколько неоднозначны:

Если вы пытаетесь пройти через все ваши файлы и определить, какие должны быть отправлены на сервер резервного копирования из них:

Самый простой метод является сравнение время модификации; если файл вашей локальной системы был изменен после одной из резервных систем, то он изменился и резервная копия нуждается в обновлении. (Можно изменить измененные времена файла, используя что-то вроде touch, но для простого случая вам, вероятно, не нужно беспокоиться об этом)

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

Если вы пытаетесь обнаружить тот момент, когда файл изменяется:

Вы можете использовать FileSystemWatcher (в C#/Windows) или эквивалент для вашего языка/OS.

1

Если у Mac OS X есть вещь под названием FSEvents. Для этого также должна быть какая-то услуга в Windows.

Смежные вопросы