JS FTP Synchronizer - генератор статического сайта JavaScript
Работает под Node.js, запускает локальное изображение веб-сайта.
Доступна и PHP-версия той же программы: PHP FTP Synchronizer.
Программа сравнивает локальный файл с дубликатом, также локальным, в папке резервного копирования. Если размер отличается или сравнение содержимого показывает разницу, файл обновляется на сайте.
Файл отправляется на удаленный сайт в папке дубликатов или если он отличается, то этот каталог резервного копирования становится точным изображением удаленного каталога.
Решение, позволяющее использовать клонированный каталог, является быстрым и безопасным, позволяет также иметь копию, и эту папку резервного копирования желательно поместить на съемный модуль.
Эта программа JavaScript использует асинхронный фреймворк JSFtp для отправки страниц на удаленный сайт. Выполнение последовательности таких операций в асинхронном режиме - это настоящий вызов. Особенно сложно создавать папки, когда их нет, а затем размещать в них файлы, все это в разрозненном порядке, поскольку сервер выполняет операции, когда это уместно, а не по запросу.
Было найдено простейшее решение со следующим алгоритмом:
function ftpSend(src, rmt, rdir) {
var connection = new JSFtp(OPTIONS)
connection.put(src, rmt, function(err) {
if (err) {
connection.raw.mkd(rdir, function(err, data) {
connection.put(src, rmt, function(err) {
if(err) {
return console.log("Error, file not uploaded.")
}
connection.raw.quit(function() {})
return
});
});
return
}
connection.raw.quit(function() {})
});
}
Мы отправляем файл в любом случае, если происходит ошибка, предполагаем, что папки не существует, поэтому мы ее создаем. Затем снова отправим файл. Если ошибка сохранится, только тогда будет указано, что файл не может быть загружен.
Кроме того, используется async/awais для получения последовательности, когда это возможно .
Руководство по эксплуатации
Обновление сайта происходит следующей командой, которую удобнее поместить в пакетный файл:
node sync.js [options/paramètres] répsource
Источник - это локальная папка, в которой находятся файлы для размещения в оперативном режиме. Другие обязательные параметры:
- -furl: URL-адрес в формате ftp.
- -ddirectory: Каталог на удаленном сайте, где будут храниться файлы .
- -backup: путь к локальному каталогу резервного копирования, который будет образом удаленного каталога.
- -login: имя пользователя ftp .
- -passe: пароль пользователя ftp .
Можно добавить следующие варианты.
- -q: (quiet) безмолвный режим, отображаются только сообщения об ошибках.
- -v: (verbose) отображает все детали операций . -t: (тест)
- показывает операции, которые будут выполняться, поэтому отправленные файлы не выполняют их .
Пример:
node sync.js -lmonlogin -pmonmotdepasse ftp.example.com -drepdistant -bbackuplocal replocal
Загрузка и установка
Для установки программы:
- Извлечь содержимое из архива.
- Загрузите и при необходимости установите Node.js.
- Можно установить jsftp: npm install jsftp (он уже есть в архиве на самом деле).