运维工作中,经常需要一些脚本来实现自动化,今天分享本地文件自动上传FTP的两种解决办法:
一、使用BAT自动上传FTP
使用批处理(BAT)命令文件将本地文件夹内容上传到FTP服务器需要使用Windows自带的命令行工具,如ftp命令。以下是详细的操作步骤:
创建批处理文件:
首先,你需要创建一个新的文本文件,将其扩展名更改为 .bat。你可以将其命名为upload_to_ftp.bat或其他你喜欢的名字。
编辑批处理文件:
使用文本编辑器(如Notepad)打开批处理文件。在其中输入以下内容:
@echo off
setlocalREM 配置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/folderREM 创建一个包含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.txtREM 使用ftp命令执行上传
ftp -s:ftp_commands.txtREM 删除临时文本文件
del ftp_commands.txtendlocal
@echo on
请注意,上述代码中需要替换以下值:
- FTP_HOST: FTP服务器的主机名或IP地址。
- FTP_USER: 连接到FTP服务器的用户名。
- FTP_PASS: 对应的密码。
- LOCAL_FOLDER: 本地文件夹的路径,你想要上传其中的内容。
- FTP_FOLDER:在FTP服务器上你想要上传到的远程文件夹路径。
运行批处理文件:
保存批处理文件后,双击运行它。它将自动执行一系列FTP命令,将本地文件夹的内容上传到FTP服务器的指定文件夹中。
请确保在执行此操作之前,你已经测试过FTP服务器的连接和登录信息。另外,考虑到安全性,避免在批处理文件中明文写入密码,最好是使用安全的方式来存储和传递敏感信息。
二、使用BAT自动上传FTP
使用 PowerShell 脚本将本地文件夹内容上传到FTP服务器非常方便。以下是详细的操作步骤:
创建 PowerShell 脚本:
首先,你需要创建一个新的文本文件,将其扩展名更改为 .ps1。你可以将其命名为upload_to_ftp.ps1或其他你喜欢的名字。
编辑 PowerShell 脚本:
使用文本编辑器(如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 命令行界面(Powershell 或 Windows Terminal),使用 cd 命令切换到脚本所在的文件夹,然后运行以下命令:
Set-ExecutionPolicy RemoteSigned
.\upload_to_ftp.ps1
如果提示需要确认执行策略,请输入 Y 来确认。
推荐阅读:
Windows可以安装Ubuntu,Ubuntu上也可以安装Powershell