Sftp
使用 mget 從 sftp 下載多個文件
我有一些
R
程式碼,在某一部分,我正在連接到一個 sftp 並嘗試下載一些文件。需要下載的文件由R程式碼決定,可以只有一個,也可以是多個。我正在嘗試使用mget
來下載文件,但它似乎不起作用:sftp> mget abc.PDF def.PDF ghi.PDF Fetching /abc.PDF to def.PDF
它只是下載 abc.PDF 並將其作為 def.PDF 儲存在本地目錄中,而不是下載所有三個文件。我在做什麼?
mget
使用 glob 作為參數的“源文件”部分(至少在 OpenSSH 版本 7.3 中):sftp> ls *.pdf foo.pdf bar.pdf sftp> mget *.pdf Fetching /home/jdoe/bar.pdf to bar.pdf Fetching /home/jdoe/foo.pdf to foo.pdf sftp>
相反,如果 glob 擷取太多,您將需要以某種方式循環文件並一個接一個地獲取它們。
它不起作用,因為 OpenSSH
sftp
不支持它。它mget
與get
(實際上,mget
甚至沒有記錄在help
手冊頁中)相同,並且只接受一個遠端文件名參數(儘管該參數可以是一個 glob)。因此,要使用 OpenSSH SFTP 客戶端,您需要為
get
每個文件發出一個。或者,您可以使用不同的 SFTP 客戶端(例如,lftp
具有mget
您想要的工作方式)。或者(感謝 Gilles 的提醒)您可能會發現使用 sshfs(通過 FUSE)然後使用普通文件複製命令(cp
或任何 R 內置)更方便。