
在機器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
答案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