运维工作中,经常需要一些脚本来实现自动化,今天分享本地文件自动上传FTP的两种解决办法:
一、使用BAT自动上传FTP
使用批处理(BAT)命令文件将本地文件夹内容上传到FTP服务器需要使用Windows自带的命令行工具,如ftp命令。以下是详细的操作步骤:
创建批处理文件:
首先,你需要创建一个新的文本文件,将其扩展名更改为 .bat。你可以将其命名为upload_to_ftp.bat或其他你喜欢的名字。
编辑批处理文件:
使用文本编辑器(如Notepad)打开批处理文件。在其中输入以下内容:
@echo offsetlocalREM 配置FTP服务器相关信息set FTP_HOST=set FTP_USER=your_usernameset FTP_PASS=your_passwordset LOCAL_FOLDER=C:\path\to\local\folderset FTP_FOLDER=/remote/folderREM 创建一个包含FTP命令的临时文本文件echo open %FTP_HOST% > ftp_commands.txtecho %FTP_USER% >> ftp_commands.txtecho %FTP_PASS% >> ftp_commands.txtecho cd %FTP_FOLDER% >> ftp_commands.txtecho bin >> ftp_commands.txtecho lcd %LOCAL_FOLDER% >> ftp_commands.txtecho mput *.* >> ftp_commands.txtecho disconnect >> ftp_commands.txtecho 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 = ""$ftpUser = "your_username"$ftpPass = "your_password"$localFolder = "C:\path\to\local\folder"$ftpFolder = "/remote/folder"# 创建FTP请求对象$ftpRequest = [.FtpWebRequest]::Create("ftp://$ftpHost$ftpFolder")$ftpRequest.Credentials = New-Object workCredential($ftpUser, $ftpPass)$ftpRequest.Method = [.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
如果觉得《BATPowerShell实现本地文件自动上传FTP服务器》对你有帮助,请点赞、收藏,并留下你的观点哦!