Windows/Лазурь
Я ищу приложение (или другое решение), которое динамически выполняло бы двунаправленную синхронизацию между внешним сайтом SFTP и локальным хранилищем.
В частности (если рассуждать с точки зрения сервера), есть папка импорта и папка экспорта.
Таким образом, если на стороне сервера произошло изменение файла в папке экспорта (включая создание/удаление), это отразится на стороне клиента (в течение некоторого интервала).
Аналогичным образом, если на стороне клиента произойдет изменение файла в папке импорта, это отразится на стороне сервера.
Я полагаю, что это приложение должно существовать как на клиенте, так и на сервере. Возможно, это особый тип SFTP-сервера.
Конкретный вариант использования — файлы с временными метками, которые архивируются ежедневно (копируются в подпапку архива с временными метками, а затем удаляются из основной папки).
Особенно интересны облачные решения, такие как Azure.
Я обнаружил, что многие традиционные DC SFTP-серверы все еще существуют, а поставщики не предлагают особой гибкости (например, они используют определенный продукт SFTP и не собираются его менять). Поэтому наиболее оптимальным было бы приложение/решение, которое сосуществовало бы с существующим устаревшим SFTP-сервером.
решение1
Ftp Voyager сделает это. (Предполагая, что Windows, вы не сказали) https://thwack.solarwinds.com/resources/b/geek-speak/posts/ftp-voyager-debuts-as-solarwinds-free-tool
Он устанавливается как служба и имеет планировщик для создания профилей подключения к сайтам, а затем планирования загрузки данных в определенное время/с определенными интервалами.
Несложно написать скрипт для собственного клиента SFTP или даже PSFTP (часть проекта putty), синтаксис очень похож, если вы знакомы с командами ftp.https://www.puttygen.com/psftp
В частности, ключ -B, с помощью которого вы можете по сути обработать скрипт команд, чтобы сделать то же самое, что вы делаете в терминале, а затем сделать это задачей в планировщике задач.
-B – It specifies a file with batch commands. The ‘-b’ command helps user automate tasks by allowing them to set commands in advance.
Синхронизация SFTP таким способом в любом случае не требует от сервера даже знать, что вы ее автоматизируете, не говоря уже о том, чтобы что-либо устанавливать. Она просто делает то же самое, что сделал бы пользователь с помощью кода. https://the.earth.li/~sgtatham/putty/0.52/htmldoc/Chapter6.html
Пример использования psftp: создайте простой текстовый файл с именем dllall.txt
предположим, что в очереди есть папка с именем iQ, а на другой стороне есть каталог с именем out, следующий скрипт...
lcd - Изменить локальный каталог на iQ
cd out - переходит в каталог out на удаленной стороне
mget * - получение нескольких файлов, скачивает то, что есть.
выйти - выходы
lcd .\iQ
cd out
mget *
quit
и затем передать его в PSFTP следующим образом
psftp user@host -P [port number] -b dlall.txt
Теперь это предполагает, что вы знаете, как сделать аутентификацию, оба будут принимать учетные данные в командной строке или вы можете настроить аутентификацию по открытому ключу. Я не предлагаю пароль, потому что для автоматизации вам придется хранить пароль где-то в открытом тексте. FtpVoyager будет хранить пароли, но, по крайней мере, шифровать их. Хотя оба будут работать с открытым ключом гораздо безопаснее.
Обратите внимание, что вы использовали слово «синхронизация», если вы хотите убедиться, что обе стороны действительно равны, это сложнее и, скорее всего, вернет вас к FTPVoyager.
ИЛИ, возможно, рассмотрите rsync через ssh, если сервер это поддерживает.