由于工作需要,网站数据在一个ftp中,定期手动备份,比较容易遗忘,手边有WIN电脑和linux电脑,第一时间想到的就是在centos7.9中写一个定时任务,使用lftp或wget协议把ftp上文件全部复制到本地路径中即可,尝试过后发现不论lftp还是wget都会出现下载到本地路径的文件缺少的情况,网站不大一共不到2千个文件,每次都少,无法全部下载下来,不清楚是网络的原因还是其他原因。
必须使用ftp客户端,会校验所有文件断点续传等保障,每次都是全部下载,没有缺失的情况,由于电脑里就有FileZilla,使用体验也非常好,查到有FileZilla Pro CLI版可以使用命令进行上传下载,但是查遍全网也没有找到这个安装包,官网只有付费才能下载,放弃的同时发现另外一款WinSCP也是非常不错的ftp工具,马上查资料下载,写脚本,现在就分享出来,脚本写.bat文件中,加入到win系统的任务计划程序中设置每天或每周自动执行。
@echo off REM 关闭命令行窗口的回显 set FTP_HOST=192.168.0.96 REM FTP的IP地址或域名 set FTP_USER=administrator REM 用户名 set FTP_PASSWORD=111111 REM 密码 set FTP_REMOTE_PATH=/ REM 设置FTP上要下载的路径 set LOCAL_PATH=Z:\wwwroot\* REM 设置本地文件夹的路径,*表示下载所有文件 set UPLOAD_PATH=D:\FTEST REM 设置本地上传的文件路径 set REMOTE_UPLOAD_PATH=/FTEST REM 设置FTP服务器上传到的远程目录 ( echo option batch abort echo option confirm off echo open ftp://%FTP_USER%:%FTP_PASSWORD%@%FTP_HOST% echo put %UPLOAD_PATH%* %REMOTE_UPLOAD_PATH% echo get %FTP_REMOTE_PATH%* %LOCAL_PATH% echo exit ) | "C:\Program Files (x86)\WinSCP\WinSCP.com" /command /log=Z:\wwwroot\winscp.log REM 使用WinSCP软件连接FTP服务器,先"put" 命令上传指定路径文件后,再 "get" 命令,下载 FTP 服务器根目录的所有文件,同时将日志记录到指定文件中 pause REM 暂停脚本的执行,等待用户按下任意键才会退出
安装附件WinSCP安装包,修改.bat中的ftp域名,用户名,密码,本地路径,FTP远端路径,根据自己是要上传还是要下载,删除上传put或下载get这两行代码即可