Я хотел бы запустить долго работающий скрипт на Ruby или Python и заставить скрипт наблюдать за локальным каталогом на предмет изменений файлов и новых файлов. Периодически скрипт запускает одностороннюю rsync для удаленного сетевого расположения.

Это должно работать как в среде Linux (Ubuntu 13.10+), так и Windows (Windows 7+). Важно отметить, что я хотел бы свести к минимуму количество необходимых зависимостей, и я хотел бы установить одно и то же в каждой системе, просто отбрасывая некоторые файлы в каталог - без установщика.

Можно ли получить желаемую систему без установщика? Если так, то как?

3 ответа3

1

В прошлом, когда я делал это с платформы Windows на любую другую систему, которая поддерживает sshd или sftp, я использовал WinSCP, который имеет очень хорошо написанные функции синхронизации. WinSCP также может быть запущен из командной строки для просмотра локального каталога и автоматического отправки и / или извлечения файлов в удаленную файловую систему по протоколам SCP или SFTP.

Решение WinSCP очень надежно и легко настраивается, но написано для Windows.

Я получил WinSCP для установки на мою Linux-машину, используя 32-битную версию Wine, и она работает достаточно хорошо, хотя я еще не пробовал запускать функцию синхронизации из CLI на linux. Я уверен, что в ближайшее время CLI будет работать над Linux, когда у меня будет время сосредоточиться на этом.

0

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

Я не знаком с программированием (python или иным способом) на машинах Windows, но для Windows существует порт inotifywait в форме inotify-win, который после создания исполняемого файла можно запускать из скрипта через подпроцесс. с минимальными изменениями платформы для версии Linux.

Что касается второй части вашего вопроса, вы можете перейти на SFTP с использованием paramiko, однако, похоже, что зависимость от PyCrypto может сделать эту опцию немного сложной с точки зрения Windows.

Я понимаю, что это не полный ответ на все части вашего вопроса, но, надеюсь, здесь есть кое-что, что вы найдете полезным.

0

Я слышал хорошие новости о https://pypi.python.org/pypi/watchdog - библиотеке Python для мониторинга событий файловой системы, которая работает в Linux, OSX, FreeBSD и Windows.

Я бы использовал что-то вроде bbfreeze или pyinstaller, чтобы упаковать весь ваш инструмент в бинарные файлы для различных платформ. У rsync уже есть установщики для большинства систем.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .