前一段时间,由于公司需要,需将线上环境的tomcat日志进行备份并上传到远端备份服务器,参考了网上一些帖子的方法,在这里写一点自己的总结。
拓扑:
以上拓扑中总共三台服务器,其中两台tomcat,一台备份日志服务器。
1.首先要做的就是写一个脚本,脚本内容大致是备份压缩上传:
[root@localhost ~]#vim baklog.sh #!/bin/bash systime=`date +%Y_%m_%d` #获取当前系统时间 days=5 #删除5天前的备份 tomcatuser=tomcat-server01 #备份到此文件下 Sbakpath=/data/bak/tomcat-log #备份文件到该路径 bakname=$tomcatuser"_"$systime.tar.gz #备份文件名 Tpath=/server/war/log/*.log #需要备份的tomcat日志路径 Dpath=/baklog/tomcat-log #远端服务器日志存储路径 #开始备份压缩 cd $Sbakpath mkdir -p $tomcatuser cd $tomcatuser tar -zcvf $bakname $Tpath #删除5天前的备份 find $Sbakpath/$tomcatuser -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \; #注意{} \中间有空格,-2代表强制scp命令使用协议ssh2,此语句命令
表示在$Sbakpath/$tomcatuser目录下查找5天前名为.tar.gz的文件
#上传到远程服务器 scp -2 $Sbakpath/$tomcatuser/$bakname [email protected]:$Dpath
此脚本写在tomcat1和tomcat2服务器上,并设置定时运行。
4.由于上传至远端服务器需要进行密码验证,我们采取rsa公钥无密码登录
a.在tomcat1和tomcat2上分别执行以下命令生成公钥:
ssh-keygen -t rsa -P ''
b.在logserver服务器上创建以下文件,并赋予权限
[root@localhost /]#mkdir -p /root/.ssh/authorized_keys
[root@localhost /]#chmod 600 /root/.ssh/authorized_keys
c.把tomcat服务器下的/root/.ssh/id_rsa.pub 复制到logserver服务器的 /root/.ssh/authorized_keys文件里,用scp复制:
[root@localhost /]#scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
这里也可以手动编辑,将tomcat /root/.ssh/id_rsa.pub文件里的公钥手动复制到logserver服务器的 /root/.ssh/authorized_keys文件里即可,使用vim命令。
d.由于还没有免密码登录的,所以要输入一次tomcat服务器的root密码。