首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不将数据读取到内存的情况下将ssh2::流写入文件?

如何在不将数据读取到内存的情况下将ssh2::流写入文件?
EN

Stack Overflow用户
提问于 2019-07-21 22:24:45
回答 1查看 507关注 0票数 0

我正在尝试使用ssh2 crate v0.3.3通过SCP下载一个大的二进制文件。

代码语言:javascript
复制
extern crate ssh2;

use std::net::TcpStream;
use ssh2::Session;
use std::path::Path;
use std::fs::File;
use indicatif::ProgressBar;

fn main() -> Result<(), Box<std::error::Error>> {
    let ssh_host_port = "prokerala.com:22";
    let ssh_user = "prokeral";
    let remote_temp_file = "/tmp/dbimport_Rk6Iwwm5.sql.bz2";

    let tcp = TcpStream::connect(&ssh_host_port).unwrap();
    let mut sess = Session::new().unwrap();
    sess.handshake(&tcp).expect("SSH handshake failed");
    let _ = sess.userauth_agent(ssh_user);

    let path = Path::new(&remote_temp_file);
    let (mut remote_file, stat) = sess.scp_recv(path).unwrap();

    let stream:ssh2::Stream = remote_file.stream(1);

    // Update: solved by using io::copy as suggested by @apemanzilla below
    // let mut target = File::create("/tmp/done.txt").unwrap();
    // let pb = ProgressBar::new(stat.size());
    // std::io::copy(&mut pb.wrap_read(remote_file), &mut target)?;
    Ok(())
}

我想将stream写到一个文件中,并显示一个进度条。是否可以直接将stream写入文件,而无需在循环中使用stream.read()将数据读取到内存中?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57134077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档