編輯:

編輯:

在機器AI上有資料夾

/home/a/

在機器BI上有資料夾

/home/b/

我希望使用 sftp 傳輸 /home/b 中 /home/a 的所有檔案、目錄和子目錄在機器 AI 上嘗試了以下命令:

sftp [email protected]
put /home/a/* /home/b/

但它不起作用,我收到錯誤訊息:「跳過非常規檔案 /home/a/a1」... [a1 是 a 的子目錄]
如何修改 put 指令?

謝謝! :)

編輯:

我使用 scp 解決了:

scp -r /home/a/ [email protected]:/home/b/

答案1

雖然不嚴格等同於 sftp,同步是 scp 和 sftp 的一個非常強大的替代方案,特別是在將副本從機器 A 更新到機器 B 時,因為它不會複製未更改的檔案;它還可以從機器 B 中刪除已從機器 A 中刪除的檔案(當然,只有當它被告知時)。

在你的情況下,語法是

rsync -zrp /home/a/ [email protected]:/home/b/

-r選項用於遞歸複製文件,-z在傳輸過程中啟用壓縮,並-p在複製時保留文件權限(文件創建、編輯等),據我所知,這是 scp 不做的事情。還有更多的選擇是可能的;像往常一樣,閱讀man頁面。

答案2

sftp此命令中遞歸地將目前目錄的內容上傳到遠端目前目錄:

 put -r .

man sftp

答案3

scp(安全複製)實際上是透過安全隧道傳輸檔案的 Linux。在您的情況下,您需要使用遞迴開關,例如:

scp -r /home/a/ [email protected]:/home/b/

答案4

實際上, put -r 應該可以工作。但目標資料夾需要存在於遠端主機上:

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2

相關內容