服务器间传文件$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

### 回答1: 在Ubuntu和Windows文件有多种方法。以下是三种常用的方法: 1. 使用共享文件夹:在Ubuntu中,可以设置一个共享文件夹,并将其共享给Windows。首先,通过“文件管理器”打开要共享的文件夹,然后右键单击文件夹并选择“属性”。在“共享”选项卡中,勾选“共享此文件夹”选项,并设置一个共享名称和访问权限。接下来,在Windows中打开“文件资源管理器”,在地址栏中输入Ubuntu计算机的IP地址,然后连接到共享文件夹并文件。 2. 使用FTP服务器:在Ubuntu中安装和配置一个FTP服务器,例如vsftpd。首先,打开终端,并运行以下命令来安装FTP服务器:sudo apt-get install vsftpd。安装完成后,通过修改配置文件/etc/vsftpd.conf来进行配置,以便允许本地和远程用户访问服务器。保存并关闭文件后,重启FTP服务器:sudo service vsftpd restart。然后,在Windows使用FTP客户端连接到Ubuntu的IP地址,并文件。 3. 使用云存储服务:可以使用云存储服务(如Google Drive、Dropbox)在Ubuntu和Windows文件。首先,在Ubuntu和Windows上安装相应的云存储应用程序,并使用相同的账户登录到应用程序。接下来,在Ubuntu中将要输的文件放入云存储文件夹,并等待文件同步完成。然后,在Windows中打开云存储应用程序,即可访问并下载Ubuntu中的文件。 无论选择哪种方法,都可以方便地在Ubuntu和Windows文件。根据实际需求和个人偏好,选择最适合的方法。 ### 回答2: 在Ubuntu和Windows文件有多种方法。以下是几种常见的方法: 一、使用共享文件夹: 1. 在Windows上创建一个共享文件夹,将需要输的文件复制到该文件夹中。 2. 在Ubuntu上,打开“文件浏览器”,点击左侧导航栏中的“其他位置”。 3. 在“连接到服务器”对话框中,输入Windows共享文件夹的地址,如smb://Windows_IP_Address/Shared_Folder。 4. 输入Windows用户名和密码,点击“连接”按钮。 5. 之后,你就可以在Ubuntu上看到共享文件夹,可以将文件复制到Ubuntu上,或者从Ubuntu复制文件到该文件夹中。 二、使用FTP服务器: 1. 在Windows上安装一个FTP服务器软件,如FileZilla Server。 2. 配置FTP服务器,设置用户名、密码和共享目录。 3. 在Ubuntu上安装一个FTP客户端软件,如FileZilla。 4. 打开FileZilla,输入Windows IP地址、用户名和密码,点击“连接”按钮。 5. 在连接成功后,你可以在左侧窗口中看到Windows共享目录,在右侧窗口中看到Ubuntu本地目录。 6. 可以通过拖动文件文件Windows输到Ubuntu,或者从Ubuntu输到Windows。 三、使用云存储服务: 1. 在Windows和Ubuntu上都安装同一个云存储服务的客户端,如Google Drive、Dropbox等。 2. 在Windows上将需要输的文件放入云存储服务的同步文件夹中。 3. 在Ubuntu上登录相同的云存储账号,等待文件同步完成。 4. 之后,在Ubuntu上就可以访问并下载Windows中的文件,或者将文件到云存储服务,从而在Windows上获取。 这些方法都能够实现Ubuntu和Windows文件传输,你可以根据自己的需求选择最合适的方式。 ### 回答3: Ubuntu和Windows文件传输可以使用多种方法,以下是几种常见的方法: 1. 使用共享文件夹:在Ubuntu上设置共享文件夹,然后在Windows上通过网络浏览器访问Ubuntu的共享文件夹,可以直接上和下载文件。 2. 使用FTP服务:在Ubuntu上安装一个FTP服务器,比如vsftpd,然后在Windows使用FTP客户端连接到Ubuntu的FTP服务器,进行文件传输。 3. 使用SSH协议:在Ubuntu上安装openssh-server,然后在Windows使用SSH客户端连接到Ubuntu,可以通过命令行文件。 4. 使用云存储服务:在Ubuntu和Windows上都安装云存储服务,比如Dropbox、Google Drive等,在两个系统上同步文件夹,实现文件。 5. 使用文件传输工具:在Ubuntu和Windows上分别安装文件传输工具,比如FileZilla、WinSCP等,使用这些工具可以在两个系统之建立一个安全的连接,进行文件传输。 无论使用哪种方法,都需要确保Ubuntu和Windows在同一个网络中,并且具有相应的网络权限。同时,还需要注意文件传输的安全性,可以使用加密协议来保护输过程中的数据安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值