<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      容災備份 | 看我使用Powershell操作FTP進行數據文件自動上傳備份

      [ 點擊 ?? 關注「 全棧工程師修煉指南」公眾號 ]

      設為「?? 星標」帶你從基礎入門全棧實踐 再到 放棄學習
      涉及 網絡安全運維、應用開發、物聯網IOT、學習路徑 、個人感悟 等知識分享。

      希望各位看友多多支持【關注、點贊、評論、收藏、投幣】,助力每一個夢想。

      WeiyiGeek Blog's - 花開堪折直須折,莫待無花空折枝 】
      作者主頁: 【 https://weiyigeek.top
      博客地址: 【 https://blog.weiyigeek.top 】
      作者答疑學習交流群:歡迎各位志同道合的朋友一起學習交流【點擊 ?? 加入交流群】, 或者關注公眾號回復【學習交流群】。



      0x00 前言簡述

      描述: 在運維過程中會將服務器上數據文件備份在共享磁盤或者FTP服務器中,此處由于作者環境是在Windows系統上,且在業務上需要同步文件到FTP服務器中,遂有了此文,幫助各位看友了解,如何在Windows上使用Powershell腳本將數據備份文件自動上傳的FTP服務器上?

      在下述實踐中,我們可以使用三種方式進行數據文件上傳到FTP服務器中。

      • 方式1.使用Powershell與Windows原生ftp客戶端工具(僅僅支持主動模式)進行文件備份.
      • 方式2.使用Powershell中.NET的內置的FTP操作類 System.Net.FtpWebRequest 連接ftp服務器并進行備份文件上傳.
      • 方式3.使用Powershell的PSFTP模塊包連接ftp服務器并進行備份文件上傳。

      項目地址(歡迎大家 star ,蟹蟹?('ω')?支持 ): https://github.com/WeiyiGeek/SecOpsDev/

      下述實驗室需要部署FTP服務器,若不了解的童鞋,可參考博主的FTP入門掃盲篇《FTP遠程文件傳輸服務安裝與配置》,文章地址: https://blog.weiyigeek.top/2019/10-4-74.html

      或者參考此《使用Kubernetes容器快速部署常用服務》( https://blog.weiyigeek.top/2022/2-25-668.html )文章快速使用 kubernetes 安裝 vsftpd 服務,搭建ftp測試環境。

      廢話不多說,實踐為王!

      首發鏈接: https://mp.weixin.qq.com/s/YuaqncfbOsC3-wjCdikfBw


      0x01 實踐演示

      實踐1.使用Powershell與Windows原生ftp客戶端工具(僅僅支持主動模式)進行文件備份.

      代碼示例:
      WeiyiGeek.使用Powershell與Windows原生ftp客戶端備份圖

      溫馨提示: 為了保障腳本中FTP密碼的安全性,我將腳本中高敏感的賬號密碼進行編碼存儲(只能防君子,不能防小人??)。

      # 編碼
      $bytes = [System.Text.Encoding]::Unicode.GetBytes("weiyigeek")
      $str = [System.Convert]::ToBase64String($bytes)
      echo $str
      
      # 解碼
      $str = "VwBlAGkAeQBpAEcAZQBlAGsAZQByAA=="
      [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($str))
      [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($str)) | Out-File -Encoding "ASCII" plaintext.html
      

      溫馨提示: 獲取上述示例代碼或者腳本地址失效,請在【全棧工程師修煉指南】公眾號回復 PowerShell-FTP 或者 10000 獲取最新PowerShell的FTP同步腳本地址。
      全棧工程師修煉指南: https://weiyigeek.top/wechat.html?key=10000
      注意提示: 在中文Windows下執行腳本默認為GBK,若是亂碼請轉為GBK或者其他編碼模式。


      實踐2.使用Powershell中.NET的內置的FTP操作類 System.Net.FtpWebRequest 連接ftp服務器并進行備份文件上傳.

      描述: 在實踐1中的方式由于windows自帶的ftp客戶端只支持(主動模式),對于FTP被動模式是沒有辦法的,此時我們可以采用如下方式進行被動模式下上傳文件到FTP空間之中。

      代碼示例:
      WeiyiGeek.在PS中使用.NET的內置的FTP操作類圖

      執行結果:
      WeiyiGeek.上傳到FTP服務器中的備份文件圖


      溫馨提示: 獲取上述示例代碼或者腳本地址失效,請在【全棧工程師修煉指南】公眾號回復 PowerShell-FTP 或者 10000 獲取最新PowerShell的FTP同步腳本地址。
      全棧工程師修煉指南: https://weiyigeek.top/wechat.html?key=10000
      注意提示: 在中文Windows下執行腳本默認為GBK,若是亂碼請轉為GBK或者其他編碼模式。


      為了實現腳本的自動執行,我們可以將其配置到計算機任務計劃中,進行定時執行,操作流程如下:

      步驟 01.在開始->運行 命令行執行 taskschd.msc 命令 或者 打開任務計劃程序。

      步驟 02.新建任務計劃,創建基本任務,設置觸發實踐以及觸發操作,如下圖所示

      WeiyiGeek.Windows下的定時任務圖


      實踐3.使用Powershell的PSFTP模塊包連接ftp服務器并進行備份文件上傳。

      描述: 通過上面實踐我們了解到PowerShell本身并沒了內置對FTP的支持,但是.net里面內置了FTP操作的類,但是確實自己來組合封裝幾個FTP操作類是不是比較費時。

      此時我只想偷懶,我去PowerShell Gallery里面搜尋一番后( https://www.powershellgallery.com ),發現已經有人幫我造好輪子了即 PSFTP 模塊包,既然這樣那就不客氣了,拿來開箱即用!

      在使用前我們需要安裝 PSFTP 模塊包,模塊當前版本為 1.7.1.1,其作用是管理FTP帳戶的功能。
      模塊地址: https://www.powershellgallery.com/packages/PSFTP/1.7.1.1


      安裝:
      官網提供了三種安裝方式,即在線命令安裝、Azure云安裝以及手動下載安裝。

      # 在線: 復制并粘貼以下命令以使用PowerShellGet更多信息安裝此程序包。(可能受到環境影響,推薦)
      PS> Install-Module -Name PSFTP	
        # 需要使用 NuGet 提供程序來繼續操作
        # PowerShellGet 需要使用 NuGet 提供程序“2.8.5.201”或更高版本來與基于 NuGet 的存儲庫交互。必須在“C:\Program
        # Files\PackageManagement\ProviderAssemblies”或“C:\Users\WeiyiGeek\AppData\Local\PackageManagement\ProviderAssemblies”
        # 中提供 NuGet 提供程序。也可以通過運行 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force' 安裝 NuGet
        #  提供程序。是否要讓 PowerShellGet 立即安裝并導入 NuGet 提供程序?
          [Y] 是(Y)  [N] 否(N)  [S] 暫停(S)  [?] 幫助 (默認值為“Y”): Y
      
      # 手動: 手動將.nupkg文件下載到系統的默認下載位置。(需要配置較多)
      # https://psg-prod-eastus.azureedge.net/packages/psftp.1.7.1.1.nupkg
      PS> Install-Package  psftp.1.7.1.1.nupkg
      

      驗證

      # 安裝PSFTP包之后我們使用如下命令查看是否已經安裝成功
      PS> Get-Module PSFTP -ListAvailable
        # 目錄: C:\Program Files\WindowsPowerShell\Modules
        
        # ModuleType Version    Name                                ExportedCommands
        # ---------- -------    ----                                ----------------
        # Manifest   1.7.1.1    PSFTP                               {Add-FTPItem, Get-FTPChildItem, Get-FTPConnection, Get-FTPItem...}
      
      # 查看PSFTP工具里面都支持那些操作
      PS> Get-Command -FullyQualifiedModule PSFTP
        CommandType     Name                                               Version    Source
        -----------     ----                                               -------    ------
        Alias           Move-FTPItem                                       1.7.1.1    PSFTP
        Alias           Receive-FTPItem                                    1.7.1.1    PSFTP
        Alias           Send-FTPItem                                       1.7.1.1    PSFTP
        Function        Add-FTPItem                                        1.7.1.1    PSFTP
        Function        Get-FTPChildItem                                   1.7.1.1    PSFTP
        Function        Get-FTPConnection                                  1.7.1.1    PSFTP
        Function        Get-FTPItem                                        1.7.1.1    PSFTP
        Function        Get-FTPItemSize                                    1.7.1.1    PSFTP
        Function        New-FTPItem                                        1.7.1.1    PSFTP
        Function        Remove-FTPItem                                     1.7.1.1    PSFTP
        Function        Rename-FTPItem                                     1.7.1.1    PSFTP
        Function        Set-FTPConnection                                  1.7.1.1    PSFTP
        Function        Test-FTPItem                                       1.7.1.1    PSFTP
      
      # 查看幫助命令
      PS> Get-Help Set-FTPConnection -Examples
      

      命令行實踐
      描述: 此處我按照文章首部的地址,進行安裝了ftp測試環境,其FTP鏈接環境信息如下:

      IP: 10.20.176.215
      Port: 30021
      User: weiyigeek
      Pass: password

      首先,利用Windows中原生的ftp客戶端工具鏈接測試(PS: 如果是使用Linux登錄就不存在問題):

      PS L:\WeiyiGeek> ftp
      ftp> open 10.20.176.215 30021
      連接到 10.20.176.215。
      220 (vsFTPd 3.0.2)
      200 Always in UTF8 mode.
      用戶(10.20.176.215:(none)): weiyigeek
      331 Please specify the password.
      密碼:
      230 Login successful.
      ftp> dir
      500 Illegal PORT command.
      425 Use PORT or PASV first. # 可看到不支持被動模式。
      

      然后,我們手動使用PSFTP模塊進行被動鏈接測試:

      # 配置 PowerShell 執行策略導入安裝的PSFTP模塊
      Set-executionpolicy remotesigned
      Import-Module PSFTP
      
      # ftp 認證票據生成
      $FTPConnect = "ftp://10.20.176.215:30021"  # FTP 服務器鏈接字符串
      $FTPUser = "weiyigeek" 
      $FTPPass = ConvertTo-SecureString -String "password" -AsPlainText -Force
      $FTPCre = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $FTPUser, $FTPPass
      
      # 連接到 ftp 服務器鏈接 (被動鏈接)
      Set-FTPConnection -Credentials $FTPCre -Server $FTPConnect -UsePassive
        # 執行結果:
          # ContentLength           : -1
          # Headers                 : {}
          # SupportsHeaders         : True
          # ResponseUri             : ftp://10.20.176.215:30021/
          # StatusCode              : ClosingData
          # StatusDescription       : 226 Directory send OK.
          # LastModified            : 0001/1/1 0:00:00
          # BannerMessage           : 220 (vsFTPd 3.0.2)
          # WelcomeMessage          : 230 Login successful.
          # ExitMessage             : 221 Goodbye.
          # IsFromCache             : False
          # IsMutuallyAuthenticated : False
          # ContentType             :
      

      最后,我們使用PSFTP進行文件管理:

      # 1.添加/上傳文件 - Add-FTPItem (Send-FTPItem)
      Send-FTPItem -LocalPath .\console.log
      Send-FTPItem -LocalPath .\weiyigeek.txt -Overwrite
      
      # 2.新建目錄 - New-FTPItem
      New-FTPItem -Name weiyigeek
      # - 指定目錄創建子目錄
      New-FTPItem -Name subdir -Path $FTPConnect/weiyigeek 
        # 257 "/weiyigeek/subdir" created
      
      # 3.獲取目錄下面的文件、子目錄 - Get-FTPChildItem
      Get-FTPChildItem
        #     Parent:ftp://10.20.176.215:30021
        # Dir Right     Ln  User   Group  Size   ModifiedDate        Name
        # --- -----     --  ----   -----  ----   ------------        ----
        # d   rwx------ 2   ftp    ftp           2023/3/7 11:17:00   weiygeek
        # -   rw------- 1   ftp    ftp    18KB   2023/3/7 11:11:00   console.log
        # -   rw------- 1   ftp    ftp    2KB    2023/3/7 11:12:00   ls.txt
      Get-FTPChildItem -Path subdir  # 指定目錄
      Get-FTPChildItem -Recurs -Depth 1     # 遞歸返回所有信息
      
      # 4.下載文件 - Get-FTPItem(Receive-FTPItem)
      # - 下載image.png到當前目錄
      Get-FTPItem weiyigeek.png
      # - 下載image.png到指定目錄
      Get-FTPItem weiyigeek.png -LocalPath D:\download
      # - 下載image.png到指定目錄,如果指定目錄不存在自動創建
      Get-FTPItem weiyigeek.png -LocalPath D:\download\1\2\3\4\5 -RecreateFolders
      
      # 5.獲取文件大小 - Get-FTPItemSize
      (Get-FTPItemSize console.log)/1000
      18.781
      
      # 6.刪除文件 - Remove-FTPItem
      Remove-FTPItem .\ls.txt
        # ->Remove File: ftp://10.20.176.215:30021/.\ls.txt
        # 250 Delete operation successful.
      
      # 7.重命名文件或者目錄 - Rename-FTPItem(Move-FTPItem)
      Rename-FTPItem -Path .\console.log -NewName weiyigeek.top.log
        # 250 Rename successful.
      

      是不是,感覺比實踐2中.net實現方便多了,所以用起來是真的舒服,實際上它是將.net中的方法進行了封裝。


      項目實踐:
      WeiyiGeek.PSFTP模塊實踐自動上傳備份文件代碼圖

      執行結果:

      PS D:\Tools> .\DB-Backup-To-FTP-Use-PSFTP-Package.ps1
      [03/08/2023 09:09:08] 當前數據庫備份文件 qchatgpt.legacy.log ,寫入 ./upload.txt 文件中!
      [03/08/2023 09:09:08] 當前數據庫備份文件 qchatgpt.legacy.log , 上次數據庫備份文件 logs 名稱, 上傳標識 1 .
      230 Login successful.
      
         Parent:ftp://10.20.176.215:30021/weiyigeek/qchatgpt.legacy.log
      
      Dir Right     Ln  User   Group  Size   ModifiedDate        Name
      --- -----     --  ----   -----  ----   ------------        ----
      -   rw------- 1   ftp    ftp    34KB   2023/3/8 1:09:00    qchatgpt.legacy.log
      [03/08/2023 09:09:08] Upload Status:
      Upload File /weiyigeek/qchatgpt.legacy.log successful!
      

      WeiyiGeek.使用PSFTP模塊實踐圖


      溫馨提示: 獲取上述示例代碼或者腳本地址失效,請在【全棧工程師修煉指南】公眾號回復 PowerShell-FTP 或者 10000 獲取最新PowerShell的FTP同步腳本地址。
      全棧工程師修煉指南: https://weiyigeek.top/wechat.html?key=10000
      注意提示: 在中文Windows下執行腳本默認為GBK,若是亂碼請轉為GBK或者其他編碼模式。


      本文介紹了PowerShell操作FTP的方法,以及使用.net 提供的類來訪問FTP。

      好了,本章到此介紹,感興趣的朋友請繼續研究吧!


      原文地址: https://blog.weiyigeek.top/2023/3-7-720.html

      本文至此完畢,更多技術文章,盡情期待下一章節!

      溫馨提示:唯一極客技術博客文章在線瀏覽【極客全棧修煉】小程序上線了,涉及網絡安全、系統運維、應用開發、物聯網實戰、全棧文章,希望和大家一起學習進步,歡迎瀏覽交流!(希望大家多多提提意見)


      專欄書寫不易,如果您覺得這個專欄還不錯的,請給這篇專欄 【點個贊、投個幣、收個藏、關個注,轉個發,留個言】(人間六大情),這將對我的肯定,謝謝!。

      帥哥(靚仔)、美女,點個關注后續不迷路

      溫馨提示: 由于作者水平有限,本章錯漏缺點在所難免,希望讀者批評指正,并請在文章末尾留下您寶貴的經驗知識,聯系郵箱地址 master@weiyigeek.top 或者關注公眾號 WeiyiGeek 聯系我。

      posted @ 2023-03-08 15:12  全棧工程師修煉指南  閱讀(560)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 美女内射无套日韩免费播放| 亚洲熟女精品一区二区| 国产激情一区二区三区四区| 亚洲中文字幕亚洲中文精| 国产亚洲精品超碰| 2021国产成人精品久久| 亚洲综合一区无码精品| 无码国产欧美一区二区三区不卡| 无码AV无码免费一区二区| 中文熟妇人妻av在线| 丁香婷婷激情俺也去俺来也 | 中文字幕亚洲日韩无线码| 亚洲国产欧美不卡在线观看| 国产一区二区不卡视频在线| 精品国偷自产在线视频99| 国产精品三级在线观看无码| 国产成人精品视频网站| 中国产无码一区二区三区| 免费午夜无码片在线观看影院 | 国产女同疯狂作爱系列| 国产精品日韩中文字幕| 久久日韩精品一区二区五区| 欧美色欧美亚洲高清在线视频| 这里只有精品在线播放| 国产成人亚洲精品自产在线| 国产一区二区三区怡红院| 欧美激烈精交gif动态图| 日日噜久久人妻一区二区| 久久一日本道色综合久久| 国产电影无码午夜在线播放| 无码精品人妻一区二区三区中| 欧美黑人又粗又大久久久| 国产亚洲欧美日韩俺去了| 中文字幕少妇人妻精品| 国产精品爽爽v在线观看无码| 国产av综合影院| 婷婷色香五月综合缴缴情香蕉| 东平县| 国产农村乱人伦精品视频| 欧美丰满熟妇xxxx性| 日土县|