背景

经常会遇到在不同服务器之间传输文件,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版本。

https://github.com/PowerShell/Win32-OpenSSH/releases

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

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

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

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

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

下面就是要安装WinSCP了。

WinSCP

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

https://winscp.net

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来完成,有兴趣的也可以试试。

相关链接

https://winscp.net/eng/docs/scripting

https://github.com/PowerShell/Win32-OpenSSH/wiki

服务器间传文件$d,基于OpenSSH+WinSCP完成Windows服务器之间的文件传输相关推荐

  1. winscp登陆windows服务器_基于OpenSSH+WinSCP完成Windows服务器之间的文件传输

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

  2. 有病毒的u盘文件上传到服务器,还在被u盘病毒困扰?送你15个文件传输网站以及20+u盘工具...

    哈喽大家好,我是无知便是罪,专注于收集和分享互联网上不为人知的好东西.今天让我们继续聊一聊文件传输,这要分为两类吧,一种是个人多设备之间的跨平台传输,就像手机与电脑之间,我们前面已经介绍过了.今天他主 ...

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

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

  4. 用ftp在个人电脑和服务器之间进行文件传输

    文章目录 前言 Motivation(写作动机) 1 在Ubuntu服务器和自己的ubutu个人电脑上实现文件传输 1.0 说明 1.1 先给Ubuntu服务器设置一个有sudo权限的非root用户 ...

  5. Linux系统与Windows系统之间的文件上传与下载

    Linux系统与Windows系统之间的文件上传与下载 在日常开发过程中,常常会遇到需要在Linux与Windows系统之间的文件的传输,有一些常用的方法与命令,在此记录 1.文件上传 从Window ...

  6. 【苹果传文件】【苹果手机文件传输】windows系统 iPhone手机文件传输 win系统苹果手机【苹果传电影】【苹果传图片】【一眼就会】

    原文:[苹果传文件][手机文件传输]windows系统 iPhone手机文件传输 win系统苹果手机[苹果传电影][苹果传图片][一眼就会] 方法一: 方法二:

  7. Linux服务器间传文件SCP命令使用方法

    基本用法 两台Linux服务器间要传文件,如果两台服务器可以互相ssh登录的话,那么就可以使用scp命令,使用方法如下 scp 原文件 目标文件 scp -r 原文件夹 目标文件夹 其中对端机器的格式 ...

  8. 两个ftp服务器之间的文件传输,FTP服务器之间传输文件

    FTP服务器之间传输文件 内容精选 换一换 云服务器创建后区域固定,不能将云服务器转移到另一个区域,也不能将云服务器转移到另一个帐号.您可以通过镜像迁移方式实现云服务器的跨帐号跨区域迁移.服务器迁移的 ...

  9. centos 服务器传文件,CentOS下怎么用SCP命令进行服务器之间的文件传输?

    SCP命令用于Linux系统(CENTOS)之间复制文件和目录操作. 参数说明: -1: 强制scp命令使用协议ssh1 -2: 强制scp命令使用协议ssh2 -4: 强制scp命令只使用IPv4寻 ...

最新文章

  1. 搜索引擎之---Apache solr的实现
  2. 关于面试的部分内容总结#1
  3. modelsim加入xilinx ISE库的方法
  4. 《算法竞赛进阶指南》打卡-基本算法-AcWing 93. 递归实现组合型枚举:递归与递推、dfs、状态压缩
  5. anemometer mysql_MySQL慢日志简介及Anemometer工具介绍 | | For DBA
  6. 【已解决】Linux下安装JDK
  7. MySQL 错误 #1113
  8. QUIC DataChannels的第一步
  9. 如何制作计算机启动盘,一款U盘启动盘制作小工具
  10. 史上最全亚历山大大帝名言
  11. html鼠标划过显示图片,jquery实现鼠标滑过小图查看大图的方法
  12. 控制台无法连接_指挥中心控制台整体解决方案,告别“信息孤岛”
  13. kubernetes资源管理
  14. 一年5个孵化项目来自于中国,佛系Apache如何帮助中国开源立足全球?
  15. 史上最全的键盘快捷键
  16. strcpy的用法、c语言实现、及注意点
  17. tombstone 信息解析
  18. sublime在wamp下配置php文件,配置WAMP环境下的sublime和PHPdesigner
  19. 【LeetCode】重复的子字符串
  20. 牛客小白月赛61-C-小喵觅食

热门文章

  1. Linux怎么取消ftp的匿名访问功能
  2. linux 下载mysql5.7.22
  3. VBA SQL查询-记录集转数组
  4. JavaScript DOM编程艺术(第2版) 笔记
  5. java衍生作用_关于JAVA衍生出的一点想法
  6. c++ raiseexception产生异常_Day17_异常,线程
  7. C语言三目运算符 - C语言零基础入门教程
  8. java runtime类 heap_Java 进阶(一) JVM运行时内存模型
  9. java中asl_带你认识绕不开的ASLR
  10. vue 时区转换_vue---时间戳转换