【发布时间】:2015-11-05 02:02:48
【问题描述】:
需要将 linux 服务器中的远程文件复制到 windows 本地服务器,我想知道是否可以使用 golang(是否使用标准 lib,并且该进程将在 windows 上运行)来完成此任务,或者甚至可以调用另一个进程,例如 winscp。
【问题讨论】:
需要将 linux 服务器中的远程文件复制到 windows 本地服务器,我想知道是否可以使用 golang(是否使用标准 lib,并且该进程将在 windows 上运行)来完成此任务,或者甚至可以调用另一个进程,例如 winscp。
【问题讨论】:
有两种方法可以解决这个问题:
使用库执行 SCP 协议。 golang 中没有任何用于 SCP 协议的标准库。但是您可以使用this 库进行 SCP 协议。
使用 OS 二进制文件执行 SCP 协议。但请记住,在这种情况下,您的程序只能在安装了此特定操作系统二进制文件的机器上运行。
【讨论】:
scp 二进制文件确实限制了安装了 openssh 的主机,但它不会让你的程序变慢。
scp 二进制文件在技术上会稍微减慢程序速度,因为每次要使用 scp 协议时都需要 fork 新进程,这是一项昂贵的操作。此外,如果程序要监视一个非常大的文件的进度,则需要监视stdout 的scp。这也需要解析stdout,这也是一项耗时的任务。因此,使用scp 二进制文件会在某种程度上减慢您的程序。