【问题标题】:Using SCP in Golang in Windows to copy remote files in remote unix host在 Windows 中使用 Golang 中的 SCP 复制远程 unix 主机中的远程文件
【发布时间】:2015-11-05 02:02:48
【问题描述】:

需要将 linux 服务器中的远程文件复制到 windows 本地服务器,我想知道是否可以使用 golang(是否使用标准 lib,并且该进程将在 windows 上运行)来完成此任务,或者甚至可以调用另一个进程,例如 winscp。

【问题讨论】:

    标签: linux windows go scp


    【解决方案1】:

    有两种方法可以解决这个问题:

    • 使用库执行 SCP 协议。 golang 中没有任何用于 SCP 协议的标准库。但是您可以使用this 库进行 SCP 协议。

    • 使用 OS 二进制文件执行 SCP 协议。但请记住,在这种情况下,您的程序只能在安装了此特定操作系统二进制文件的机器上运行。

    【讨论】:

    • 那个 go-scp 包似乎没有经过特别严格的审查,它使用了一个旧的、未维护的 go ssh 包版本,该版本将在本月完全下线。使用本地的 scp 二进制文件确实限制了安装了 openssh 的主机,但它不会让你的程序变慢。
    • @JimB,同意第一点,我会用更好的选择来编辑答案。但是关于第二点,使用本地 scp 二进制文件在技术上会稍微减慢程序速度,因为每次要使用 scp 协议时都需要 fork 新进程,这是一项昂贵的操作。此外,如果程序要监视一个非常大的文件的进度,则需要监视stdoutscp。这也需要解析stdout,这也是一项耗时的任务。因此,使用scp 二进制文件会在某种程度上减慢您的程序。
    • 虽然它确实增加了时间,但我非常怀疑 fork 和 wait 增加的额外 通过网络传输文件,额外的几毫秒不算什么。
    • 大家好,非常感谢您提供宝贵的 cmets 的所有信息。但是在不同的操作系统之间复制文件或同步文件夹有可靠的替代方案吗?
    • @Bera:您可以将 sftp 协议与 github.com/pkg/sftp 之类的东西一起使用,或者您可以按照您的建议执行 winscp。如果您想要更多建议,邮件列表或 IRC 可能是更好的选择,因为这不在此处。
    猜你喜欢
    • 2012-04-05
    • 1970-01-01
    • 2014-12-13
    • 2022-08-10
    • 2017-09-09
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 2019-12-31
    相关资源
    最近更新 更多