背景

经常会遇到在不同服务器之间传输文件,Linux和Linux之间用命令rsync, windows和linux之间普遍是有图形化界面的ftp软件,老黄平时用的比较多的是FileZilla。

Windows和Windows之间的话,90%都是在一台机器复制,到另一台机器去粘贴。这个在做CICD的时候就不太现实了,需要通过命令来自动完成,不能再通过手动复制粘贴的方式来完成。

FileZilla,在Windows上面接用脚本操作的话,并不是很方便,也会有交互式的弹窗确认,于是就尝试了一下WinSCP。

因为WinSCP的官网是很明确的指出,它是支持脚本操作的。

下面老黄就简单介绍一下,如何在两台Windows机器之间搞定文件传输。

OpenSSH

OpenSSH是这篇文章的基石,因为我们不打算搭建一个ftp服务器,所以要用最直接的方案,在远程服务器安装OpenSSH。

在Windows安装OpenSSH,PowerShell组织下的Win32-OpenSSH项目有提供编译好的windows版本。

老黄这里下载的是OpenSSH-Win64.zip。

解压后的文件要放到 C:\Program Files\OpenSSH 目录下面,

执行下面的命令来安装sshd服务

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

安装完,会在windows服务看到两个新的服务,把他们启动即可。

下面就是要安装WinSCP了。

WinSCP

WinSCP,直接从官网下载即可。

WinSCP也是可以通过界面操作的,不过这里不会涉及,是通过它提供的Scripting and Task Automation来完成文件传输。

下面就来简单介绍一下怎么使用。

先来个简单的,从远程服务器拉取一个文件试试。

下面是用到的几个命令,也加上了注释,应该比较容易懂的。

# 连接上远程服务器

open sftp://用户名:密码@10.10.8.9 -hostkey="*"

# 选择远程服务器的目录

cd /D:/ftptest

# 从远程服务器的目录下载文件 examplefile.txt 到本地电脑的目录 d:\winscp_scripts

get examplefile.txt d:\winscp_scripts

# 断开连接

close

# 退出

exit

注:

选择远程服务器目录时,要注意路径是否存在

在完成所有操作后,记得断开连接和退出

cd进入WinSCP的安装目录,执行下面的命令,其中a.txt 就是我们上面写的脚本

.\WinSCP.com /ini=nul /script=D:\winscp_scripts\a.txt

来看看执行的效果,已经把远程服务器上面的文件拉下来了。

下面来看看上传文件。

# 连接上远程服务器

open sftp://用户名:密码@10.10.8.9 -hostkey="*"

# 选择远程服务器的目录

cd /D:/ftptest

# 上传文件夹到远程目录

put D:\winscp_scripts\web_app_demo

# 断开连接

close

# 退出

exit

整体的过程和获取文件差不多,有区别的就是把get命令改成put

上面的示例是直接把整个文件夹传到远程服务器的远程目录。

上传后的结果如下

当然有些时候,我们发布的文件,有一些是不想直接传上去的,好比一些奇葩的配置文件

要满足这个需求,我们就需要给put命令加个参数,过滤掉我们不需要传输的文件。

这里就要借助-filemask 这个参数来过滤了。它可以用|符号来分割包含的和排除的文件

下面的例子就是排除了.config文件

put D:\winscp_scripts\web_app_demo -filemask=*|*.config

从这个例子打印的传输日志也可以发现,web.config这个文件并没有上传上去。

还有很多其实参数和使用方法,可以去官网查看,这里就点到为止。

总结

在WinSCP和OpenSSH的基础上,就可以比较方便的完成文件传输,如果需要在Windows上面做CI/CD,也就可以借助这个组合来完成了。

WinSCP的命令用起来还算是比较简单,不会有很大的难度,这里用的是它原始的命令工具,也可以用powershell来完成,有兴趣的也可以试试。

相关链接

winscp登陆windows服务器_基于OpenSSH+WinSCP完成Windows服务器之间的文件传输相关推荐

  1. C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二)

    C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二) 测试软件: TIA PORTAL V15.1 S7-PLCSIM ADVANCED V3.0 Visual Studio 20 ...

  2. Android 系统(68)---使用Xshell在Windows系统和Linux系统之间进行文件传输

    使用Xshell在Windows系统和Linux系统之间进行文件传输 Windows系统在安装虚拟机centos系统之后,如何进行两者之间的文件传输和互操作,或者如何在Windows端使用Xshell ...

  3. Windows 与 Linux之间进行文件传输,文件传输工具Cuteftp的使用方法。

    文件传输工具Cuteftp的使用方法 Cuteftp是一款FTP客户端软件,只要在linux上安装.启动了FTP服务,就可以使用Cuteftp在Windows 与 Linux之间进行文件传输. 一.  ...

  4. android程序移动到Linux,Android应用开发之Android 系统 -- 使用Xshell在Windows系统和Linux系统之间进行文件传输...

    本文将带你了解Android应用开发之Android 系统 -- 使用Xshell在Windows系统和Linux系统之间进行文件传输,希望本文对大家学Android有所帮助. 使用Xshell在Wi ...

  5. 如何实现windows和linux之间的文件传输

    2010-04-25 18:10 如何实现windows和linux之间的文件传输 如果想从windows中传送大量文件到Linux中,想必会难倒部分Linux初学者,尤其是文件很大时.我曾试过在li ...

  6. 使用sftp在客户端与服务器之间进行文件传输

    知识点:sftp 步骤: 一. 登录服务器 使用命令格式:sftp 服务器主机名 二. 在客户端与服务器之间进行文件传输 命令put: 上传到服务器 put haha.txt 命令get: 下载到客户 ...

  7. 服务器间传文件$d,基于OpenSSH+WinSCP完成Windows服务器之间的文件传输

    背景 经常会遇到在不同服务器之间传输文件,Linux和Linux之间用命令rsync, windows和linux之间普遍是有图形化界面的ftp软件,老黄平时用的比较多的是FileZilla. Win ...

  8. winscp是什么软件_如何使用winscp,如何使用winscp的详细教程

    ftp软件是什么,ftp软件是一种文件传输下载方式,它是TCP/IP协议栈的一部分:其中FTP又由两部分组成,一部分是FTP的服务器,另一部分是FTP的客户端!它能够高效安全地进行文件传输下载操作!可 ...

  9. winscp是什么软件_如何使用winscp,如何使用winscp详细介绍

    ftp软件是什么,ftp软件是一种文件传输下载方式,它是TCP/IP协议栈的一部分:其中FTP又由两部分组成,一部分是FTP的服务器,另一部分是FTP的客户端!它能够高效安全地进行文件传输下载操作!可 ...

最新文章

  1. lwip iperf 方法进行性能测试
  2. redis工具类_SpringBoot 操作 Redis 数据
  3. 年薪35W+ 的程序员看过来!百万架构师第3期招生
  4. mybatis 缓存 一级缓存
  5. SQL2000和SQL2005和SQL2008同时安装问题
  6. Linux中的两个经典宏定义
  7. 更换根目录linux命令,linux中怎么切换到根目录
  8. java 答题卡_·(B卷)Java期末试卷及答题卡(2005-2006第二学期).doc
  9. 矩阵如何运算?——线性代数
  10. windows微软商店打不开代码0x80131解决方法
  11. 淘宝数据可视化大屏案例(Hadoop实验)
  12. PowerShell:如何用PowerShell创建WinForm窗体?-在PowerShell中使用GUI界面
  13. 常见神经系统疾病的临床诊断及处理原则题库【1】
  14. 昆明市谷歌高清卫星地图下载
  15. Redis 如何实现附近的人
  16. Hot 100(三)
  17. 成功解决:Cannot run peer because cannot init crypto, specified path “/opt/gopath...msp: no such file or
  18. 智慧农业-数字孪生农业大棚
  19. 东北大学软件学院与计算机,东北大学软件学院在全国排名怎么样,能进前20吗...
  20. 索菲亚的歌--哈尔滨游记

热门文章

  1. SAP Spartacus RouteGuard路由守卫之CmsPageGuard
  2. rxjs里的Observable对象如何消费
  3. 根据ABAP BAdI definition名称找到SPRO里配置路径的办法
  4. SAP Fiori Elements - how to create annotation for a property
  5. SAP Fiori 3的暗黑主题,酷炫无比
  6. TimeInterval value and value2 determination in SalesPipeline
  7. Busy Dialog init - hashchange will call BusyDialog.open - flower
  8. SAP Marketing Cloud功能简述(四) : 线索和客户管理
  9. Mock server的实现 - run Fiori application using mock data in offline mode
  10. Cannot find source code based button in SE24