scp 指令未完全複製目錄內容

scp 指令未完全複製目錄內容

我正在運行 Windows 10,伺服器在 Debian 10 上,我正在複製斯韋爾特從我的電腦到遠端伺服器的建置目錄。我正在使用命令來複製文件:

scp -r ./build [email protected]:~/directory

但有些文件(和整個目錄)始終被遺漏,我最終不得不檢查並手動複製它們。

遠端目錄。

螢幕截圖.

本地目錄;整個(play)目錄被刪除。

螢幕截圖.

我嘗試用​​詳細的參數來運行它,但它沒有告訴我任何特別的東西(我認為)。為什麼會這樣,我該如何防止呢?

答案1

我通常使用 SCP 一次傳輸一個檔案。或只是與特定目錄中的模式相符的檔案。絕不用於複製完整的目錄結構

對於類似的情況,我會使用 Rsync。例如,以下是轉換為 Rsync 等效命令的命令:

rsync -avzh ./build [email protected]:~/directory

試試看。它應該有效。

答案2

我認為 SCP 需要一個目錄結構才能存在於遠端伺服器上。它不會創建資料夾。

您可以將-e標誌與 rsync 一起使用,以使用遠端 shell 來執行傳輸。

rsync -r -e "ssh -p 222" /home/test/dev [email protected]:/home/remotetest/dev

答案3

我剛剛遇到了同樣的問題,這很可能是由這個錯誤引起的:https://github.com/PowerShell/Win32-OpenSSH/issues/1897

SCP 由於目錄結構深度超過八個資料夾的遞歸副本而失敗。在目標中建立直至第 8 個目錄的目錄,但不會建立比第 8 個目錄更深的目錄。根本不複製任何文件。

在我的例子中,實際上大多數文件都被複製了,但有些文件丟失了 - 不僅來自 8 級以下的目錄,而且還來自更高的目錄級別。

我的 Windows 10(包含所有更新)上發生故障的 scp 版本是版本 8.1.0.1。我安裝了 openssh v9.5.0.0p1相反,它可以正常工作。

相關內容