[英]How to stream from one SFTP to another SFTP using python and pysftp
我想將文件從一台SFTP服務器傳輸到另一台。
我不想在本地寫入,也不想將整個文件讀入內存。
Pysftp有getfo
和putfo
方法。
但是getfo
並沒有給您讀者-它只是給打開的fileobj寫入內容。
我本質上是想將getfo
到一些可以讀取的文件中,因此我可以將其作為putfo
的讀取器提供給目標。
偽代碼:
buffer_obj = SomeBufferedIOReader()
source_sftp.getfo('/remote/path.txt.gz', buffer_obj)
target_sftp.putfo('/target/path.txt.gz', buffer_obj) # streaming commences
如果我在bash中這樣做,我將創建一個fifo文件,異步寫入該fifo,然后從該文件上傳。 上載文件后,fifo將耗盡,並且過程將完成。 不確定如何在python中執行等效操作。
OK ... duh .... pysftp提供了一種open
方法。
with source_sftp.open('source/path.txt.gz', 'rb') as f:
f.prefetch()
target_sftp.putfo('target/path.txt.gz', f)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.