有沒有辦法暫停已經運行的 scp 進程?

有沒有辦法暫停已經運行的 scp 進程?

我正在使用複製一個大文件scp,並意識到目的地可能沒有足夠的空間來完成它。有沒有辦法可以暫停它,可能幾個小時,然後再恢復?另外,如果失敗 ( no space left on device),我可以在清除一些空間後恢復它嗎?

(請注意,該程式scp已經在運行;使用其他程式等解決方案將無法運作。)

答案1

您可以使用 SIGSTOP 暫停進程,然後使用 SIGCONT 繼續它。 (請參閱kill -l參考資料 中的訊號清單並使用它ps來取得進程 ID)。

然而,這很有可能行不通。例如,如果您的來源和目的地之間有一個路由器,它會注意到並「清理」死連線。大多數 SOHO 路由器似乎都會這樣做,因為清理連線意味著更少的記憶體使用。 (因此他們可以建造更便宜的路由器)。

如果發生這種情況,您需要使用 scp 再次複製,或者可以使用 rsync。

Rsync 的優點是它會比較已經存在的檔案並且不會不必要地複製資料。在您的情況下,它應該檢測已存在的部分上傳的文件,並僅上傳文件的其餘部分

語法是rsync -v -e ssh /home/my_file [email protected]:~

-v 表示詳細。 -e "ssh options" 將 ssh 指定為遠端 shell。

如果您的資料是可壓縮的,那麼您可能需要新增-z壓縮資料。

相關內容