这是答案的代码:
conn, err := ssh.Dial("tcp", hostname+":22", config)
if err != nil {
return err
}
session, err := conn.NewSession()
if err != nil {
return err
}
defer session.Close()
r, err := session.StdoutPipe()
if err != nil {
return err
}
name := fmt.Sprintf("%s/backup_folder_%v.tar.gz", path, time.Now().Unix())
file, err := os.OpenFile(name, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
return err
}
defer file.Close()
if err := session.Start(cmd); err != nil {
return err
}
n, err := io.Copy(file, r)
if err != nil {
return err
}
if err := session.Wait(); err != nil {
return err
}
return nil
我不明白 cmd 变量和 io.Copy 之间的关系,它在哪里以及如何知道要复制哪个文件。我喜欢使用 io.Copy 的想法,但我不知道如何通过 ssh 创建文件并开始使用 io.Copy 向它发送内容。
幕布斯6054654
不负相思意
相关分类