Синхронизировать локальную папку с удаленной FTP-папкой

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

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

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

Думаю, я спрашиваю, есть ли лучшие способы синхронизации локальной и удаленной папки с Nodejs?


person Titan    schedule 29.04.2015    source источник
comment
Я предполагаю, что node является абсолютным требованием, а lftp с его командой зеркалирования не является вариантом.   -  person Mark Setchell    schedule 30.04.2015
comment
Да, я пытаюсь использовать nwjs.io для создания настольного приложения, поскольку мои навыки связаны с веб-технологиями.   -  person Titan    schedule 30.04.2015


Ответы (1)


Я решил эту проблему, создав "индексный" json-файл на сервере, в котором указан путь к каждому файлу, его размер и хеш-код md5. Затем я загружаю этот файл и проверяю все в списке, все, чего не хватает, я загружаю. Затем я сохраняю локальную копию этого индексного файла, а затем в следующий раз, когда проверяю наличие обновлений, все, что существует в моем локальном индексном файле, но не удаленное, указывает на необходимость удаления. Хеширование большого количества файлов (10 ГБ ~) на стороне клиента было довольно медленным, поэтому после первой синхронизации я сохраняю хеш-значения папок в индексных файлах, тогда я могу просто сравнить хеш-значения папок в локальном / удаленном индексе, и если есть различия, я могу затем выполните дорогостоящее хеширование отдельных файлов в этих папках.

person Titan    schedule 20.05.2015