Windows Shell 获取昨天日期,定时远程下载服务器日志

借用了一些网上搜索到的信息,感谢前辈,挂一漏万。

一、先说要求:

本地(windows)每日定时取远程服务器(Linux)上的Tomcat日志、Mysql备份文件(另外文档介绍如何备份)

二、思路:

1.每日定时把服务器端的日志打包

2.每日定时从本地发请求,连接远程服务器,下载打包的日志

三、使用工具:

windows本地:pscp.exe(用于windows与Linux之间copy文件,网上介绍很多)

windowsShell脚本:xxx.bat(用于获取昨天的日期)

Linux端:每日定时把log日志打成tar包(压缩,便于传输)

四、服务器端定时打包

以下为server_log_bak.sh

#!/bin/sh
lastdate=`date -d "-1 day" +%Y-%m-%d`
cd /usr/local/apache-tomcat-7.0.62/logs
tar czvf APPLICATION.log.$lastdate.tar.gz APPLICATION.log.$lastdate
tar -czvf localhost_access_log.$lastdate.txt.tar.gz localhost_access_log.$lastdate.txt

然后再编进cron(以下为每日1:30进行此操作)

30 1 * * *  /home/APPLICATION/server_log_bak.sh

五、本地

准备:

1.pscp.exe

2.xxx.bat(计算昨天日期)

3.run_bak.bat(真正运行的脚本文件)

把这几个文件放在C:\TEMP\LOG下

附xxx.bat文件内容(这个是借鉴了网上一些脚本,改了一点点)

@echo off & setlocal

if [%1]==[] goto :Help
call :GetDayDiff %date:~0,10% %1 &goto :EOF

:GetDayDiff
call :Date2Day %1 days
set/a days=%days%+%2
call :Day2Date %days% result
echo %result%
goto :EOF

:Date2Day
setlocal ENABLEEXTENSIONS
for /f "tokens=1-3 delims=/-, " %%a in ('echo/%1') do (set yy=%%a & set mm=%%b & set dd=%%c )
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %2=%j%&goto :EOF

:Day2Date
setlocal ENABLEEXTENSIONS
set /a i=%1,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%-%mm%-%dd%&goto :EOF

:Help
echo xx 10 显示10天后的时间
echo xx -5 显示 5天前的时间
rem ------- EOF ---------
2009-01-13
2009-01-12
2009-01-23
2006-04-19
2036-05-31

以下为:run_bak.bat文件内容

rem @echo on
rem set todaydate=%date:~0,4%%date:~5,2%%date:~8,2%
call xxx.bat -1 >tmp.txt
set /p todaydate= < tmp.txt

rem echo %todaydate%
set cmd001=[color=red]远程用户名[/color]@[color=red]远程IP[/color]:/APPLICATION/logs/APPLICATION.log.%todaydate%.tar.gz
pscp -pw [color=red]远程服务器密码[/color] -C %cmd001% D:\java\tomcat_log_auto_bak\qbd\

可以手动运行一下bat试试,如果成功,再设置本地windows的计划任务(win7:开始--附件--系统工具--任务计划程序)

相关推荐