![sftp put - 相當於 rsync](https://rvso.com/image/164741/sftp%20put%20-%20%E7%9B%B8%E7%95%B6%E6%96%BC%20rsync.png)
我想使用該命令在管道損壞後put
恢復正在進行的文件傳輸。sftp
僅當目標大小小於來源檔案大小時才應上傳檔案。
我沒有ssh
訪問權限,所以rsync
不是一個選擇。
來自SFTP 手冊,我嘗試指定標誌put -a -r source_dir/
。但是,我在傳輸過程中收到錯誤訊息。
- 錯誤:
Couldn't stat remote file: No such file or directory
文件不在伺服器上 - 錯誤:
Destination file bigger or same size as source file
對於伺服器上已經存在且正確不應傳輸的文件
第一個錯誤的真實範例:
Uploading of file /Volumes/Seagate/amphioxus/raw_h5/9N0Bp0b0_m150427_041848_42182_c100810932550000001823181110291543_s1_p0.2.bax.h5.gz to /deposits/Pacbio_amphioxus/raw_h5/9N0Bp0b0_m150427_041848_42182_c100810932550000001823181110291543_s1_p0.2.bax.h5.gz failed!
Couldn't stat remote file: No such file or directory
當然,該檔案存在於來源目錄中。
有什麼解決辦法嗎?
答案1
這不是解決方案,但解決方法是在本地安裝伺服器,然後簡單地複製資料。
sshfs可用於掛載遠端目錄:
sudo sshfs -o allow_other,default_permissions [email protected]:/ /mnt/local_directory
然後使用
cp -ru
您用遺失的檔案更新已安裝的遠端目錄中的檔案。
答案2
最好的解決方案是要求遠端系統的管理員授予您ssh
存取和使用的權限rsync
,或僅rsync
在可能的情況下才進行存取。
sftp
可以放置(和取得)文件,但不能放置目錄(及其內容的目錄樹)。
解決方法是建立一個 tarball [壓縮] tarfile 並將其放入sftp
。
tar -cvzf filename.tar.gz source_dir/
如果您需要從中恢復,請透過sftp
檢查內容來獲取它
tar -tvf filename.tar.gz
確保您位於正確的目錄中,並從 tarball 中提取,
tar -xvf filename.tar.gz
答案3
使用-a
sftp 選項。man sftp
指出這指示 sftp「嘗試繼續中斷的傳輸,而不是覆蓋現有的部分或完整檔案副本。如果部分內容與正在傳輸的內容不同,則產生的檔案可能已損壞。