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

背景

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

format,png

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

format,png

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

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

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

format,png

下面就是要安装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

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

format,png

下面来看看上传文件。

# 连接上远程服务器

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

# 选择远程服务器的目录

cd /D:/ftptest

# 上传文件夹到远程目录

put D:\winscp_scripts\web_app_demo

# 断开连接

close

# 退出

exit

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

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

format,png

上传后的结果如下

format,png

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

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

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

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

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

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

format,png

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

总结

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

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

相关链接

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dbgrideh 为什么只一行_Mysql性能优化:为什么count(*)这么慢?

导读在开发中一定会用到统计一张表的行数,比如一个交易系统,老板会让你每天生成一个报表,这些统计信息少不了sql中的count函数。但是随着记录越来越多,查询的速度会越来越慢,为什么会这样呢?Mysql内部到底是…

jmeter 高并发测试报告_JMeter分布式测试

一、为什么要使用分布式测试按照一般的压力机配置,jmeter的GUI模式下(Windows),最多支持300左右的模拟请求线程,再大的话,容易造成卡顿、无响应等情况,这是限于jmeter其本身的机制和硬件配置。有时候为了尽量模拟业务场…

半圆阴影_六年级数学:怎么求阴影部分面积?正方形与半圆,割补法常考题

欢迎您来到方老师数学课堂,请点击上方蓝色字体,添加关注。所有的视频内容,全部免费,请大家放心关注,放心订阅。六年级数学:怎么求阴影部分面积?正方形与半圆,割补法常考题。大家先在…

c语言判断整数_用c++编写闰年的判断基础程序

其实c语言与c语言有太多共同的东西,学习过c语言再学习c语言就显得轻而易举。当然学过了c再去学习c语言也是有一些帮助的(但是个人不提倡先学习c在学c语言)。由于现在经常看见有关闰年的程序,风式各样,眼花缭乱,些许凌乱&#xff0…

cat日志 搜索_大日志,看我如何对付你

在服务器接口测试中,我们经常会和各种日志打交道。一旦测试时服务端出现了问题,而单凭服务端的日志又不能发现问题原因的时候,往往开发要向我们测试人员询问客户端这边的情况,希望看看我们能不能提供一些有用信息,如错…

加载gif动图_GIF生成神器——ScreenToGif

每次需要做一个动图展示时,总是感觉很头疼。截图吧,需要的图片太多;录视频吧,文件太大;做动图吧,太麻烦。今天推荐的这个软件或许能够解决大家这个困惑,今天推荐的是动图生成神器——ScreenToGi…

java 修改最大nio连接数_关于java流的几个概念:IO、BIO、NIO、AIO,有几个人全知道?...

关于同步、阻塞的知识我之前的文章有介绍,所以关于流用到这些概念与之前多线程用的概念一样。下面具体来看看java中的几种流IO/BIOBIO就是指IO,即传统的Blocking IO,即同步并阻塞的IO。这也是jdk1.4之前的唯一选择,依赖于ServerSocket实现&am…

python扫雷 广度优先_广度优先搜索(BFS)解题总结

定义 广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法。 简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。 如果所有节点均被访问,则算法中止。 BFS同样属于盲目搜索。 一般用队…

python裁剪图片并保存_python – 如何从图像中剪切轮廓并将其保存到新文件中

大家好,这是我的第一个问题所以请保持温和.我有一个计算机视觉领域的项目,我是新的,我会很感激一些帮助.我有一个pcb的图像,我的(首先)任务是从背景中切断电路板并将其保存到新文件.如果结果只是没有灰色背景的普通pcb,那就没问题了. 我到目前为止尝试的是,首先使用阈值将图像转…

flash代码_Flash如何对制作文件进行优化

对FLASH进行优化分为两方面,一方面是代码上的优化,主要是通过优化提高FLASH性能,降低CPU占用和内存使用。另一方面是资源的优化,这方面的优化是为了减小编译后的文件大小以及制作文件的大小,因为如果不进行相应的优化&…

deepin系统转为windows_windows系统下安装深度系统deepin

前期准备DiskGenius(用来扩展分区)deepin-20-amd64.iso(深度系统镜像文件)相关文件下载首先下载安装时要用的工具,分别为:DiskGenius , UltraISODiskGenius是一款磁盘工具,创建系统分区。UltraISO是用来打开系统光盘镜像文件工具。Win8/8.1/10无需下载Ul…

软件开发模型_QT开发(二十三)——软件开发流程

一、软件开发流程简介软件开发流程是通过一系列步骤保证软件产品的顺利完成,是软件产品在生命周期内的管理学。软件开发流程的本质是软件开发流程与具体技术无关,是开发团队必须遵守开的规则。二、常见软件开发流程模型常见的软件开发流程模型包括即兴模…

python3.6.2用pyinstaller3.4报错_OceanBase 2.2 版本体验:用 BenchmarkSQL 跑 TPC-C

OB君:好消息!「 OceanBase 2.2 版本 」正式上线官网啦!(点击阅读原文即可直接下载)OceanBase 2.2版本是成功支撑2019年天猫双11大促的稳定版本,同时也是用于TPC-C测试且荣登TPC-C性能榜首的版本。我们将在接…

hive窗口函数_Hive sql窗口函数源码分析

在了解了窗口函数实现原理 spark、hive中窗口函数实现原理复盘 和 sparksql比hivesql优化的点(窗口函数)之后,今天又撸了一遍hive sql 中窗口函数的源码实现,写个笔记记录一下。简单来说,窗口查询有两个步骤:将记录分割成多个分区…

容大打印机ip修改工具_M1芯片版Mac无法连接打印机怎么办?

文末有优惠券在入手了M1芯片版MacBook Pro后,昨天我打算连接一下实验室的打印机。这个打印机的型号是HP LaserJet Professional M1213nf MFP,在同一个局域网内通过搜索IP即可连接。在我的旧设备2015款MacBook Air上,很轻松就连接了打印机。可…

语音对讲软件_三款语音转文字工具,语音输入,高效转换,准确率高

关于语音转文字的软件我在之前讲了很多,有些人听了也用了,效果不错,有些人看了就忘了,主要是不知道用它干嘛,其实语音转文字的软件主要功能就是为了让自己在写作的时候可以减少时间,提高效率,其…

野火stm32呼吸灯程序_说一说STM32启动过程

STM32上电后是怎么启动的?main函数之前单片机都做了些什么?带着这些疑问我们开始进入游戏。。。。。首先,开局一张图,过程全靠编,如有说错的地方望能指正启动大致流程1- 上电启动或者硬件复位2- 单片机从0x00地址开始执…

apache启动失败_请检查相关配置.√mysql5.1已启动._1、Apache启动失败,请检查相关配置-百度经验...

前几天电脑系统崩溃了,后边到服务中心重新恢复了系统,但是回来使用APMServ 5.2.6发现:1、Apache启动失败,请检查相关配置。√MySQL5.1已启动。系统的各种服务我都检查过了,都是正常开启的,百思不得其解,后边在百度上搜索一篇文章有个例子照做了以后结果成功了。---------------…

职业规划纵向横向_收下这份《职业规划喂饭式指南》

果不其然!上篇文章发布后,我收到了被拿来举反例的网友小哥的抗议~~~讲道理,最后他拿到的Offer还是十分不错的,从此以后我的朋友圈又多了一位第一手保真瓜主,他好我也好~那么本期《职业规划喂饭式指南》来喽&#xff01…

javascript字典中添加数组_如何在 JavaScript 中更好地使用数组

在 freeCodeCamp 社区阅读原文。本文短小精悍,我保证。在过去的数个月里,我注意到在我审阅的 pull request 中有四个(关于数组使用的)错误经常出现。同时,我自己也会犯这些错误,因此有了这篇文章。让我们一…