服務器間傳文件$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.pswp.cn/news/533680.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533680.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533680.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

dbgrideh 為什么只一行_Mysql性能優化:為什么count(*)這么慢?

導讀在開發中一定會用到統計一張表的行數,比如一個交易系統,老板會讓你每天生成一個報表,這些統計信息少不了sql中的count函數。但是隨著記錄越來越多,查詢的速度會越來越慢,為什么會這樣呢?Mysql內部到底是…

jmeter 高并發測試報告_JMeter分布式測試

一、為什么要使用分布式測試按照一般的壓力機配置,jmeter的GUI模式下(Windows),最多支持300左右的模擬請求線程,再大的話,容易造成卡頓、無響應等情況,這是限于jmeter其本身的機制和硬件配置。有時候為了盡量模擬業務場…

登陸攔截攔截ajax,過濾器實現登錄攔截需要注意的問題(AJAX請求的處理)

1.問題描述:最近自己在寫demo時遇到一個問題,在ajax請求時用Filter做登錄攔截,結果頁面不跳轉(Ajax是不能做轉發和重定向的)、、、、最終的最終在同事zt的提示下,恍然大悟,雖然很基本的問題,但也糾結了好久…

半圓陰影_六年級數學:怎么求陰影部分面積?正方形與半圓,割補法常考題

歡迎您來到方老師數學課堂,請點擊上方藍色字體,添加關注。所有的視頻內容,全部免費,請大家放心關注,放心訂閱。六年級數學:怎么求陰影部分面積?正方形與半圓,割補法常考題。大家先在…

c語言判斷整數_用c++編寫閏年的判斷基礎程序

其實c語言與c語言有太多共同的東西,學習過c語言再學習c語言就顯得輕而易舉。當然學過了c再去學習c語言也是有一些幫助的(但是個人不提倡先學習c在學c語言)。由于現在經常看見有關閏年的程序,風式各樣,眼花繚亂,些許凌亂&#xff0…

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

在服務器接口測試中,我們經常會和各種日志打交道。一旦測試時服務端出現了問題,而單憑服務端的日志又不能發現問題原因的時候,往往開發要向我們測試人員詢問客戶端這邊的情況,希望看看我們能不能提供一些有用信息,如錯…

python編譯成dll文件_用vc生成可被python調用的dll文件

前提已經有.c 和.i文件 用swid編譯了.i文件生成了wrap.c文件和.py文件 vc創建dll工程 將.h加入到頭文件中.c文件和wrap.c文件添加到源文件中 將.i文件添加到工程目錄下 Tools->Options->Directories中修改include 和lib 添加python里的include 和libs 把\libs\python27.l…

加載gif動圖_GIF生成神器——ScreenToGif

每次需要做一個動圖展示時,總是感覺很頭疼。截圖吧,需要的圖片太多;錄視頻吧,文件太大;做動圖吧,太麻煩。今天推薦的這個軟件或許能夠解決大家這個困惑,今天推薦的是動圖生成神器——ScreenToGi…

vue底部選擇器_vue實現動態顯示與隱藏底部導航的方法分析

vue實現動態顯示與隱藏底部導航的方法分析本文實例講述了vue實現動態顯示與隱藏底部導航的方法。分享給大家供大家參考,具體如下:在日常項目中,總有幾個頁面是要用到底部導航的,總有那么些個頁面,是不需要底部導航的&a…

java 修改最大nio連接數_關于java流的幾個概念:IO、BIO、NIO、AIO,有幾個人全知道?...

關于同步、阻塞的知識我之前的文章有介紹,所以關于流用到這些概念與之前多線程用的概念一樣。下面具體來看看java中的幾種流IO/BIOBIO就是指IO,即傳統的Blocking IO,即同步并阻塞的IO。這也是jdk1.4之前的唯一選擇,依賴于ServerSocket實現&am…

python神秘的魔法函數_python魔法函數

一、參考二、構造和初始化2.1 __new__在對象實例化過程中最先調用的方法是__new__, 該方法接收參數為類,然后將其他參數,傳遞給__init__, 該魔法函數比較少見,可以使用其,創建單例類; __new__方法是一個類方法,需要攜帶…

python掃雷 廣度優先_廣度優先搜索(BFS)解題總結

定義 廣度優先搜索算法(Breadth-First-Search),是一種圖形搜索算法。 簡單的說,BFS是從根節點開始,沿著樹(圖)的寬度遍歷樹(圖)的節點。 如果所有節點均被訪問,則算法中止。 BFS同樣屬于盲目搜索。 一般用隊…

python默認參數陷阱_python默認參數陷阱

0|1陷阱?學過函數的人一定聽說過函數的默認參數,關于函數的默認參數,請看以下的例子:def extendList(val, lst[]):lst.append(val)return lstlist1 extendList(10)list2 extendList(123, [])print(list1 %s % list1)print(list…

python裁剪圖片并保存_python – 如何從圖像中剪切輪廓并將其保存到新文件中

大家好,這是我的第一個問題所以請保持溫和.我有一個計算機視覺領域的項目,我是新的,我會很感激一些幫助.我有一個pcb的圖像,我的(首先)任務是從背景中切斷電路板并將其保存到新文件.如果結果只是沒有灰色背景的普通pcb,那就沒問題了. 我到目前為止嘗試的是,首先使用閾值將圖像轉…

opencv如何把一個矩陣不同列分離開_學習OPEN_CV

OpenCv中文論壇精華地址http://www.opencv.org.cn/index.php/User:Ollydbg23http://sivp.sourceforge.net/(sivp)一、基礎操作1. 數據類型 數據結構了解圖像相關:cvArr cvMat IplImage數據數組的維數, 與數據的通道數 見P46 (76)2. 常見的矩陣操作熟悉3…

python文件合并_用Python 將兩個文件的內容合并成一個新的文件.

一個文件的內容是:IntroductiontoProgramming,NetworkingFundamentals,InternetworkingTechnologies,PlatformTechnologies,InformationTechnologyforUsers,ComputerForensics,Enterpr... 一個文件的內容是: Introduction to Programming, Networking Fundamentals, Internetwo…

flash代碼_Flash如何對制作文件進行優化

對FLASH進行優化分為兩方面,一方面是代碼上的優化,主要是通過優化提高FLASH性能,降低CPU占用和內存使用。另一方面是資源的優化,這方面的優化是為了減小編譯后的文件大小以及制作文件的大小,因為如果不進行相應的優化&…

潛流式濕地計算_人工濕地計算書

人工濕地計算書1、尾水提升泵房集水池基本參數集水池設計規模為30000m3/d,約折合1250m3/h,按水力停留時間HRT為0.25 h計,集水井有效容積應為312.5 m3,考慮到與污水廠原有排污管道相契合,集水設計尺寸為:LBH…

deepin系統轉為windows_windows系統下安裝深度系統deepin

前期準備DiskGenius(用來擴展分區)deepin-20-amd64.iso(深度系統鏡像文件)相關文件下載首先下載安裝時要用的工具,分別為:DiskGenius , UltraISODiskGenius是一款磁盤工具,創建系統分區。UltraISO是用來打開系統光盤鏡像文件工具。Win8/8.1/10無需下載Ul…

c3等待加載樣式 vue_Vue.js__簡易加載等待動畫

Vue.js__簡易加載等待動畫Vue實現為覽或講瑣了過自系一讀頁圍這就多網解元當維自加,加載動畫的樣式取自其他出處,侵直分調瀏器代,剛求的一學礎過功互有解小久宗點差維含數刪。將Vue屬性覽或講瑣了過自系一讀頁圍這就多網解元當維和方法復制到…