远程服务器是linux操作系统,没有ftp服务,可以ssh,数据库每天2:00会自动创建一个备份文件,本地计算机是linux操作系统,希望用sftp每天3:00下载远程服务器上的备份文件。
上篇文章贴出后,有高手提示可以用lftp解决,查了一下,lftp也有了windows版本,并且支持sftp,不过,这个需求的重点是每天要取以当天日期命名的文件,应该是如何在脚本中自动更新文件名称,而sftp的工具并不是首要重点,只要能支持非交互处理就行。
当然,环境转到linux以后,lftp就是首选了,可以用以下命令执行:
lftp -f scriptfile
首先,来看看sftp.sh脚本:
#!/bin/bash
# 取得当天的日期
tt=`date` # 这个日期时间用于记录在日志中
yy=`date +%Y` # Year yyyy
mm=`date +%m` # Month mm
dd=`date +%d` # Day dd
# 写批处理脚本sftp.scr
echo "open sftp://remotehost" > sftp.scr
echo "user username password" >> sftp.scr
echo "cd /logs" >> sftp.scr
echo "get dump"$yy$mm$dd".log" >> sftp.scr
echo "exit" >> sftp.scr
# 写日志文件
echo "------------------------------------" >> sftp.log
echo $tt >> sftp.log
lftp -f sftp.scr
echo "done." >> sftp.log
这样,把sftp.sh加入到crontab就可以了。不过,直接执行sftp.sh写的日志sftp.log中不会包含lftp执行时发现的错误信息,比如没有远程文件等,所以,要把lftp的运行情况加入sftp.log,需要执行这样的命令:
sftp.sh 2>>sftp.log
这样,检查sftp.log就可以看到一些简单的信息了。
如:
------------------------------------
2007年 03月 12日 星期一 09:36:00 HKT
get: 访问失败: No such file (dump20070312.log)
done.



日志 


