远程服务器是Linux操作系统,没有ftp服务,可以ssh,要求每天进行全站备份,包括数据库备份文件,本地计算机用的windows操作系统,希望用sftp每天5:00下载远程服务器上的备份文件。
Windows下的sftp工具采用putty工具包中的psftp.exe,下载地址:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
在windows电脑上双击安装后,打开CMD命令行输入 "psftp -h"以查看psftp的用法。
能够通过导入一个脚本文件sftp.txt来自动完成sftp下载文件。命令格式如下:
psftp remotehost -l username -pw password < sftp.txt
#remotehost 要连接的服务器IP地址默认用22端口
#username linux服务器用户
#password linux服务器密码
#sftp.txt 用来执行下载任务的语句文档
由于linux服务器上的备份文件是按照当天的年份加日期作为文件名的例如"20240530.zip"
所以,下载文件的sftp.txt需要是动态生成的,然后每次下载完成后删除sftp.txt。
bat脚本如下
set filename=%date:~0,4%%date:~5,2%%date:~8,2%
echo cd /data/test>>ftp.txt
echo get %filename%.zip >>ftp.txt
echo bye >>ftp.txt
psftp 172.16.17.251 -l root -pw pass123456 < ftp.txt
echo %date% %time% >> ftp.log
dell ftp.txt
标准化获取当前系统日期的方法,cmd下windows批处理bat,获取当前系统时间,生成日志文件名。
格式: %date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%
结果: 20120731052539
linux环境下
%Y 当前年
%m 当前月
%d 当前日
%H 当前时
%M 当前分
%S 当前秒
filename=$(date +%m%d)
touch $filename.txt
注意:bat脚本文件要和psftp.exe 可执行文件放在同一目录下,
查找psftp.exe的位置:开始--PSFTP右键--更多--打开文件位置
点击PSFTP 文件右键,属性,查看目标:"C:\Program Files\PuTTY\psftp.exe"
打开目录C:\Program Files\PuTTY
把psftp.exe 文件拷贝到download.bat同目录下,我的是在D:/
双击download.bat 执行,确保脚本可以顺利的从linux服务器上下载到指定文件。
然后需要给bat脚本做个定时任务;
用windows系统自带的任务计划程序来实现:
右键我的电脑,点击管理
右键"任务计划程序库"新建新文件夹 "download"
右键 "download"文件夹--创建任务
一路确定回到
然后选择"触发器"点击左下角的"新建"按钮
然后确定,选择"操作"卡,点击"新建"
返回后选择"条件"卡,
接下来选择"设置"卡
点击"确定"弹出
填写账户密码后确认。
这里可以查看计划任务的执行情况,要想了解执行的详细记录可以暂时启动所有任务历史记录,
右键 "download"文件夹--启用所有任务历史记录,