Как лучше всего синхронизировать файлы между экземпляром EC2 и локальной Win-машиной?

Предпосылка: Я полный новичок. Поэтому приветствуются любые мягкие подсказки :)

Итак, я создал экземпляр EC2 и сбросил свой скребок, который я построил на Python. Я настроил cronjobs для запуска парсера через определенные промежутки времени. При каждом запуске мой скребок сохраняет набор результатов в относительную локальную папку, например ( db // db1.csv , db // db2.csv и т. Д.). Скажем, состояние этих файлов БД очень важно, поскольку они затем используются в качестве источника для компиляции вызовов API и поддержки веб-сайта.

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

Я экспериментировал с параметрами scp -i в моей консоли cmd , и это отлично работает, так как я могу получить свои файлы. Но у меня возникли проблемы с переносом этих команд в Python с помощью os или подпроцесса , и я либо выполняю команду напрямую, либо запускаю командный файл с этими командами.

Кажется, Python заблокирован внутри моей виртуальной среды и не может найти ssh.exe в моем C: / windows / system32 / OpenSSH . Я не мог решить эту проблему, так как понял из потоков StackOverflow, что большинство пользователей используют библиотеку paramiko для SSH непосредственно в своем экземпляре EC2.

Прямо сейчас я чувствую, что чрезмерно усложняю свои рабочие процессы, имея необходимость загружать файлы по SSH, чтобы поддерживать согласованность состояний между удаленным и моим локальным хостом. Я хочу перенести все свои БД на PostgreSQL на AWS RDS и управлять всем таким образом. Мне любопытно услышать идеи (основанные на любых предположениях) и какую лучшую архитектуру в будущем сделать так, чтобы:

  1. Я мог запускать мой парсер с удаленного хоста и планировать его запуск с помощью cronjob, автоматизируя передачу свежих данных на веб-сайт
  2. Но также работайте над новой версией кода локально, не нарушая состояния моей удаленной БД

Что мне не хватает? Меня больше интересуют идеи для решения этой проблемы, чем реальный код. Спасибо!

1
задан 21 January 2021 в 16:10
1 ответ

Разделите его на две независимые задачи:

  1. Поддерживайте синхронизацию файлов
  2. Запустите парсер локально, не беспокоясь о синхронизации (при условии, что №1 выполняет свою работу)

Для сохранения синхронизации файлов я бы используйте Syncthing - я использую его для синхронизации файлов между моими ноутбуками и с EC2 в качестве резервной копии. Он работает постоянно, и всякий раз, когда он может подключиться, выполняет синхронизацию. Работает на Linux, Windows, Mac.

Надеюсь, что это поможет :)

0
ответ дан 24 April 2021 в 01:04

Теги

Похожие вопросы