我使用scp shell命令來複制大文件夾的文件。如何使用部分複製的文件恢復scp?
但是在某個時間點,我不得不殺死運行命令(通過Ctrl + C或kill)。
爲了我理解scp複製文件的順序,所以應該只有一個部分複製的文件。
如何恢復相同的scp命令不覆蓋成功複製的文件並正確處理部分複製的文件?
P.S.我知道我可以在rsync中做這種事情,但出於某種原因,scp對我來說會更快,我用它來代替。
我使用scp shell命令來複制大文件夾的文件。如何使用部分複製的文件恢復scp?
但是在某個時間點,我不得不殺死運行命令(通過Ctrl + C或kill)。
爲了我理解scp複製文件的順序,所以應該只有一個部分複製的文件。
如何恢復相同的scp命令不覆蓋成功複製的文件並正確處理部分複製的文件?
P.S.我知道我可以在rsync中做這種事情,但出於某種原因,scp對我來說會更快,我用它來代替。
您應該使用rsync
超過ssh
rsync -P -e ssh [email protected]:/remote/path /local/path
關鍵的選項是-P
,這是一樣的--partial --progress
其他選項,比如-a
(歸檔模式),以及-z
(啓用壓縮)也可以使用。
這不會恢復副本。恢復時缺少「-P」選項。 – Markus 2015-08-11 20:33:31
只是想說明,rsync會恢復一個以scp開頭的批處理副本。 – 2016-11-04 15:54:13
你會得到「跳過目錄」。錯誤,除非你也指定'-r'。資料來源:http://lucasb.eyer.be/snips/rsync-skipping-directory.html – 2017-02-12 11:15:33
另一種與rsync:
使用sftp
與選項-r
(遞歸複製整個目錄)和sftp
的get
命令的選項-a
恢復現有的文件的部分轉移。
先決條件:您的sftp
執行已經有get
與-a
選項。
示例:從遠程服務器到本地的當前目錄
複製目錄/foo/bar
。目錄bar
將在您當地的 當前目錄中創建。
echo "get -a /foo/bar" | sftp -r server
你的解決方案非常棒,因爲我的服務器不允許在ssh中登錄,所以rsync doesn'工作。我需要上傳而不是下載,所以這裏是我的命令:'echo「put -a foo/bar」| sftp -r server:/ foo' – 2017-03-30 21:56:59
另一種可能性是試圖挽救它檔,當你已經開始了SCP。
ctrl + z爲背景並停止它,然後ssh到接收服務器並登錄,然後退出。現在fg scp進程,看它從'停止'恢復!
沒有爲我工作。 – NateS 2016-08-07 04:16:45
在Mac OS X上爲我工作。感謝發佈這篇文章,它今天保存了我的培根! – 2018-01-08 04:44:31
我昨天得到了同樣的問題,transfering一個巨大的SQL通過scp傾倒過來,我wget --continue the_url
很幸運,那博客文章解釋很清楚: http://www.cyberciti.biz/tips/wget-resume-broken-download.html
認爲最佳做法是將網址中的相關部分複製到網站發生故障的答案中。 – Ryre 2017-04-10 11:53:58
當rsync的小攤夫婦後,以及秒的時候開始運行良好,我結束了以下蠻力解決方案:
cat run_me.sh
#!/bin/bash
while [ 1 ]
do
rsync --partial --progress --rsh=ssh [email protected]:/path/file.tgz file.tgz &
TASK_PID=$!
sleep 60
kill $TASK_PID
sleep 2
done
我懷疑Rsync是慢,因爲它花費一些額外的時間做的事情,允許您RESTAR轉移。你可能會考慮使用rsync來完成部分傳輸。 – 2014-10-16 18:22:44
如果你想變得聰明,你總是可以通過適當的'skip'變量來嘗試'dd',並通過管道輸入到'ssh' :) – 2014-10-16 18:29:36