shell脚本实现备份日志选择下载
download_tomcat_log.sh
!/bin/bash
tomcat日志下载
daquan 20170224
Date=date +%Y-%m-%d
Backlog2_dir=/data/log/tomcat_8002
Backlog1_dir=/data/log/tomcat_8001
if [ ! -d /tmp/tomcat1_log ];then
mkdir /tmp/tomcat1_log
fi
rm -rf /tmp/tomcat1_log/*
rm -rf /tmp/tomcat1_log.tar.gz
ls -h ${Backlog2_dir}
echo "tomcat_8002以前日志状态如上所示:"
echo ""
echo "***********************************************************************************"
cd ${Backlog2_dir}
read -p "请您输入需要下载的tomcat_8002以前的日志文件名称,多个文件的话请以空格分隔,输入n则表示不下载以前的日志 :" options
if [ "${options}" == "n" ];then
echo "您选择了不下载以前的日志文件。"
break
else
for i in ${options[@]};do
ls -h \({Backlog2_dir} |grep "\<\)i>"
done
if [ $? -ne 0 ];then
echo "请仔细检查输入的所有参数正确性。"
exit
else
for n in ${options[@]};do
/bin/cp -p \({n} /tmp/tomcat1_log/0102_\){n}
done
fi
fi
echo ""
echo ""
echo "*************************************************************************************************************************"
echo "tomcat_8002当前的日志文件如右所示:ls -lh /usr/local/tomcat_8002/logs/catalina.out"
read -p "请选择是否下载tomcat_8002当前的日志文件:n or y " choice
if [ ${choice} == "y" ];then
/bin/cp /usr/local/tomcat_8002/logs/catalina.out /tmp/tomcat1_log/0102_catalina.out
else
echo "您没有拷贝当前的tomcat_8002的日志文件。"
fi
echo ""
###########################################################################################################
ls -h ${Backlog1_dir}
echo "tomcat_8001以前日志状态如上所示:"
echo ""
echo "***********************************************************************************"
cd ${Backlog1_dir}
read -p "请您输入需要下载的tomcat_8001以前的日志文件名称,多个文件的话请以空格分隔,输入n则不下载以前的日志文件 :" options1
if [ "${options1}" == "n" ];then
echo "您选择了不下载以前的日志文件。"
break
else
for i in ${options1[@]};do
ls -h \({Backlog1_dir} |grep "\<\)i>"
done
if [ $? -ne 0 ];then
echo "请仔细检查输入的所有参数正确性。"
exit
else
for n in ${options1[@]};do
/bin/cp -p \({n} /tmp/tomcat1_log/0101_\){n}
done
fi
fi
echo "*************************************************************************************************************************"
echo "tomcat_8001当前的日志文件如右所示:ls -lh /usr/local/tomcat_8001/logs/catalina.out"
read -p "请选择是否下载tomcat_8001当前的日志文件:n or y " choice
if [ ${choice} == "y" ];then
/bin/cp /usr/local/tomcat_8001/logs/catalina.out /tmp/tomcat1_log/0101_catalina.out
else
echo "您没有拷贝当前的tomcat_8001的日志文件。"
fi
cd /tmp
tar -czf tomcat1_log.tar.gz tomcat1_log
sz tomcat1_log.tar.gz
至此:end
注:"<$i>"可用:ls -h /data/log/tomcat_8002 | grep "201[7-9]-[0-1][1-9]-[0-3][0-9]-[0-9][0-9][0-5][0-9].log.tar.gz" 替代。
日志格式:[root@tomcat1 scripts]# ls -h /data/log/tomcat_8002
2017-03-01-0714.log.tar.gz 2017-03-01-1928.log.tar.gz 2017-03-02-1006.log.tar.gz 2017-03-02-1408.log.tar.gz 2017-03-02-2228.log.tar.gz 2017-03-03-1144.log.tar.gz 2017-03-03-1754.log.tar.gz
#########################################################################
整个脚本难度不大,主要理清了逻辑关系就行。主要注意一点
for i in ${options1[@]};do
ls -h \({Backlog1_dir} | grep "\<\)i>"
done
这一块中"${options1[@]}"的要特别注意。此脚本还有很大的改动空间,待有空再改改。
浙公网安备 33010602011771号