运维工作中,经常需要一些脚本来实现自动化,今天分享本地文件自动上传FTP的两种解决办法:
使用批处理(BAT)命令文件将本地文件夹内容上传到FTP服务器需要使用Windows自带的命令行工具,如ftp命令。以下是详细的操作步骤:
首先,你需要创建一个新的文本文件,将其扩展名更改为 .bat。你可以将其命名为upload_to_ftp.bat或其他你喜欢的名字。
使用文本编辑器(如Notepad)打开批处理文件。在其中输入以下内容:
- @echo off
- setlocal
-
- REM 配置FTP服务器相关信息
- set FTP_HOST=ftp.example.com
- set FTP_USER=your_username
- set FTP_PASS=your_password
- set LOCAL_FOLDER=C:\path\to\local\folder
- set FTP_FOLDER=/remote/folder
-
- REM 创建一个包含FTP命令的临时文本文件
- echo open %FTP_HOST% > ftp_commands.txt
- echo %FTP_USER% >> ftp_commands.txt
- echo %FTP_PASS% >> ftp_commands.txt
- echo cd %FTP_FOLDER% >> ftp_commands.txt
- echo bin >> ftp_commands.txt
- echo lcd %LOCAL_FOLDER% >> ftp_commands.txt
- echo mput *.* >> ftp_commands.txt
- echo disconnect >> ftp_commands.txt
- echo quit >> ftp_commands.txt
-
- REM 使用ftp命令执行上传
- ftp -s:ftp_commands.txt
-
- REM 删除临时文本文件
- del ftp_commands.txt
-
- endlocal
- @echo on
-
请注意,上述代码中需要替换以下值:
- FTP_HOST: FTP服务器的主机名或IP地址。
- FTP_USER: 连接到FTP服务器的用户名。
- FTP_PASS: 对应的密码。
- LOCAL_FOLDER: 本地文件夹的路径,你想要上传其中的内容。
- FTP_FOLDER:在FTP服务器上你想要上传到的远程文件夹路径。
保存批处理文件后,双击运行它。它将自动执行一系列FTP命令,将本地文件夹的内容上传到FTP服务器的指定文件夹中。
请确保在执行此操作之前,你已经测试过FTP服务器的连接和登录信息。另外,考虑到安全性,避免在批处理文件中明文写入密码,最好是使用安全的方式来存储和传递敏感信息。
使用 PowerShell 脚本将本地文件夹内容上传到FTP服务器非常方便。以下是详细的操作步骤:
首先,你需要创建一个新的文本文件,将其扩展名更改为 .ps1。你可以将其命名为upload_to_ftp.ps1或其他你喜欢的名字。
使用文本编辑器(如Notepad)打开 PowerShell 脚本文件。在其中输入以下内容:
- # 配置FTP服务器相关信息
- $ftpHost = "ftp.example.com"
- $ftpUser = "your_username"
- $ftpPass = "your_password"
- $localFolder = "C:\path\to\local\folder"
- $ftpFolder = "/remote/folder"
-
- # 创建FTP请求对象
- $ftpRequest = [System.Net.FtpWebRequest]::Create("ftp://$ftpHost$ftpFolder")
- $ftpRequest.Credentials = New-Object System.Net.NetworkCredential($ftpUser, $ftpPass)
- $ftpRequest.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
-
- # 获取本地文件列表
- $files = Get-ChildItem $localFolder
-
- # 逐个上传文件
- foreach ($file in $files) {
- $filePath = $file.FullName
- $ftpRequest.UseBinary = $true
- $ftpStream = $ftpRequest.GetRequestStream()
- $fileStream = [System.IO.File]::OpenRead($filePath)
- $buffer = New-Object byte[] 1024
- $count = $fileStream.Read($buffer, 0, 1024)
- while ($count -gt 0) {
- $ftpStream.Write($buffer, 0, $count)
- $count = $fileStream.Read($buffer, 0, 1024)
- }
- $ftpStream.Close()
- $fileStream.Close()
- }
-
请注意,上述代码中需要替换以下值:
- $ftpHost: FTP服务器的主机名或IP地址。
- $ftpUser: 连接到FTP服务器的用户名。
- $ftpPass: 对应的密码。
- $localFolder: 本地文件夹的路径,你想要上传其中的内容。
- $ftpFolder:在FTP服务器上你想要上传到的远程文件夹路径。
保存 PowerShell 脚本文件后,打开 PowerShell 命令行界面(Powershell 或 Windows Terminal),使用 cd 命令切换到脚本所在的文件夹,然后运行以下命令:
- Set-ExecutionPolicy RemoteSigned
- .\upload_to_ftp.ps1
-
如果提示需要确认执行策略,请输入 Y 来确认。
推荐阅读: