欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-16 15:30:52
...
借用了一些网上搜索到的信息,感谢前辈,挂一漏万。

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

二、思路:
1.每日定时把服务器端的日志打包
2.每日定时从本地发请求,连接远程服务器,下载打包的日志

三、使用工具:
windows本地:pscp.exe(用于windows与Linux之间copy文件,网上介绍很多)
windows Shell脚本: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:开始--附件--系统工具--任务计划程序)