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
然后再编进cron(以下为每日1:30进行此操作)
五、本地
准备:
1. pscp.exe
2. xxx.bat(计算昨天日期)
3. run_bak.bat(真正运行的脚本文件)
把这几个文件放在C:\TEMP\LOG下
附xxx.bat文件内容(这个是借鉴了网上一些脚本,改了一点点)
以下为:run_bak.bat文件内容
可以手动运行一下bat试试,如果成功,再设置本地windows的计划任务(win7:开始--附件--系统工具--任务计划程序)
一、先说要求:
本地(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:开始--附件--系统工具--任务计划程序)