日志归集需求:归集系统日期前一天的日志,归集到统一目录下,并需要有模块名称和ip标识;
脚本1:
#!/bin/bash echo "===log backup start===" #判断执行用户,为hps用户 if [ $(whoami) != hps ] then echo "execute user must be [hps]!" exit 2 fi #注意月末最后一天日志会在下一个月目录下 ip=`ifconfig | grep inet | head -1 | awk '{print $2}'` month1=`date +'%Y%m'` day1=`date +'%Y%m%d'` day2=`date -d "1 day ago" +'%Y%m%d'` day3=`date -d yesterday +%F` backupDir=/tmp/$ip/$month1/$day2 mkdir -p $backupDir cd /home/hps/logs if [ -d /home/hps/logs/history ];then find /home/hps/logs/history -name "*log*" -type f | grep $day3 | xargs -I {} tar -czf {}.api.$ip.tar.gz find /home/hps/logs/history -name "*gz*" | grep $day3 | xargs -I {} mv {} $backupDir fi echo "===log backup end==="
脚本2:
#!/bin/bash echo "===log backup start===" #判断执行用户,为was用户 if [ $(whoami) != was ] then echo "execute user must be [was]!" exit 2 fi #注意月末最后一天日志会在下一个月目录下 ip=`ifconfig | grep inet | head -1 | awk '{print $2}'` month1=`date +'%Y%m'` day1=`date +'%Y%m%d'` day2=`date -d "1 day ago" +'%Y%m%d'` day3=`date -d yesterday +%F` backupDir=/tmp/$ip/$month1/$day2 mkdir -p $backupDir cd /home/was/logs if [ -d "/home/was/logs/manage" -a -d "/home/was/logs/monitor" ];then #收集管理平台日志 find /home/was/logs/manage -name "*log*" -type f | grep $day2 | xargs -I {} tar -czf {}.manage.$ip.tar.gz find /home/was/logs/manage -name "*gz*" | grep $day2 | xargs -I {} mv {} $backupDir #收集监控平台日志 find /home/was/logs/monitor -name "*log*" -type f | grep $day2 | xargs -I {} tar -czf {}.monitor.$ip.tar.gz find /home/was/logs/monitor -name "*gz*" | grep $day2 | xargs -I {} mv {} $backupDir fi if [ -d "/home/was/logs/front" ];then #收集前台日志 find /home/was/logs/front -name "*log*" -type f | grep $day2 | xargs -I {} tar -czf {}.front.$ip.tar.gz find /home/was/logs/front -name "*gz*" | grep $day2 | xargs -I {} mv {} $backupDir #收集除前台目录外的日志 find /home/was/logs ( -path /home/was/logs/front ) -prune -o -print | grep $day2 | xargs -I {} tar -czf {}.upp.$ip.tar.gz find /home/was/logs ( -path /home/was/logs/front ) -prune -o -print | grep 'tar.gz' | grep $day2 | xargs -I {} mv {} $backupDir fi echo "===log backup end==="
说明:
find排除单个目录,示例:
find /tmp -path /tmp/abc -prune -o -print
find排除多个目录,示例:
find /tmp ( -path /tmp/abc -o -path /tmp/bcd ) -prune -o -print
find /tmp ( -path /tmp/abc -o -path /tmp/bcd -o -path /tmp/cde ) -prune -o -print