GJ.*_*GJ. 17 linux file-transfer scp
我偶尔会通过 scp 下载一个非常大的文件,每次连接中断和中途切断传输的可能性很小。
有没有办法恢复它?
小智 13
您可以尝试以下方法:代替scp使用dd跳过下载的部分并将其余部分附加到文件中。
sofar=`ls -l ./destfile | awk '{print $5}'`
ssh user@host "dd if=./srcfile bs=1 skip=$sofar" >> ./destfile
Run Code Online (Sandbox Code Playgroud)
可能的优化:使用大块。让我们把它作为家庭作业。
是的,有一些方法可以从中断点恢复,但是使用 scp 是不可能的。sftp reget filename做你需要的。Yarek 和 Grawity 提供了有效的解决方案,我对两者都 +1,但为了从中断点恢复,我喜欢 rsync。提供的示例命令都假设您正在将文件从远程服务器检索到本地工作站(下载)。请记住,最后两个参数应按顺序视为 source_file 和 target_file。文件名的语法根据源文件或目标文件是本地文件还是远程文件而有所不同。如果我要发送(上传)[文本] 文件,我会将提供的示例重写为:
#从本地到远程
sofar=`ssh remote_system ls -l interrupted_file | awk '{print $5}'`;
dd if=source_file bs=1 skip=$sofar | ssh remote_system "cat >> ./interrupted_file"
对于 rsync 解决方案,我添加了-e ssh. 您应该考虑是否需要详细、压缩、保留所有权、权限、时间戳、递归目录等。检查手册页和谷歌,关于 -L 参数。您可能希望符号链接保留为链接而不是引用它们。
rsync -P -e ssh local_source_file remoteserver:path/to/interrupted_target_file
小智 5
是的,如果两端都支持 sftp -scp remoteuser@remotehost:/absolute/filename .失败后您可以通过执行sftp remoteuser@remotehost然后reget /absolute/filename恢复下载。
| 归档时间: |
|
| 查看次数: |
18755 次 |
| 最近记录: |