在 EC2 實例和本地 Win Machine 之間保持文件同步的最佳方法是什麼?
前提:我是一個完整的新手。因此,非常感謝任何溫和的提示:)
因此,我啟動了一個 EC2 實例並丟棄了我用 Python 建構的爬蟲。我已經設置了 cronjobs 以按預定的時間間隔執行我的爬蟲。每次執行時,我的爬蟲都會將一組結果保存到相對的本地文件夾中,例如 (
db//db1.csv
、db//db2.csv
等)。比如說,這些 DB 文件的狀態非常重要,因為它們隨後被用作編譯 API 呼叫和維護網站的源。出於測試目的,我也想從本地機器上執行我的刮板。所以,我試圖弄清楚,每當我在本地執行我的爬蟲時,如何確保我擁有可以建構的數據庫文件的最新狀態——有效地編寫一個函式來從我的 EC2 實例下載最新的數據庫文件.
我一直
scp -i
在我的控制台中試驗參數cmd
,這很好,因為我能夠檢索我的文件。但是,我在 Python 中使用os
or包裝這些命令時遇到了麻煩subprocess
,要麼直接執行命令,要麼使用這些命令執行批處理文件。似乎 Python 被鎖定在我的虛擬環境中,
ssh.exe
在我的C:/windows/system32/OpenSSH
. 我無法解決這個問題,因此從 StackOverflow 執行緒中意識到,大多數使用者使用該paramiko
庫直接通過 SSH 連接到他們的 EC2 實例。現在,我覺得我的工作流程過於復雜,不得不通過 SSH 下載文件以保持遠端和本地主機之間的狀態對齊。我希望將我的所有數據庫遷移到 AWS RDS 上的 PostgreSQL 並以這種方式管理所有內容。我很想听聽想法(基於任何假設),以及未來最好的架構是什麼,以便:
- 我可以從遠端主機執行我的爬蟲,並使用 cronjob 安排它的執行,自動將新數據廣播到網站
- 而且,在本地處理新的程式碼版本,而不會破壞我的遠端數據庫狀態
我錯過了什麼?我對解決這個問題的想法比實際程式碼更感興趣。謝謝!
將其拆分為兩個獨立的任務:
- 保持文件同步
- 在本地執行你的刮刀而不用擔心同步(假設 #1 完成它的工作)
為了保持文件同步,我會使用Syncthing——我用它在我的筆記型電腦和 EC2 之間同步文件作為備份。它一直在執行,只要它可以連接,它就會進行同步。適用於 Linux、Windows、Mac。
希望有幫助:)