要求:nginx容器日志保存,每天备份一次,每个月一个文件,然后删除六个月以前的文件
1.写一个脚本
#!/bin/bash date=180 #定义删除天数 date1=`date -d "1 day ago" +"%d/%b/%Y"` #定义前一天的时间,用作取日志 date2=`date -d "1 day ago" +"%Y/%m/%d"` #定义前一天的时间,用作取报错日志 date3=`date +"%Y-%m"` #定义年月用作压缩后缀 date4=`date +"%Y-%m-%d"` #定义每天的日志文件 kubectl get pods -o wide |grep nginx|awk '{print $1}'|xargs -i kubectl exec -it {} -- grep $date1 /data/logs/nginx/access.log >> /data/nginx/access-$date4.log kubectl get pods -o wide |grep nginx|awk '{print $1}'|xargs -i kubectl exec -it {} -- grep $date2 /data/logs/nginx/error.log >> /data/nginx/error-$date4.log find /data/nginx/ -maxdepth 1 -type f -mtime +${date} -exec rm {} \; #压缩文件并删除源文件每天追加一次 zip -um access-$date3.log.zip access-$date4.log zip -um error-$date3.log.zip error-$date4.log
xargs:类似于for,把前一个命令执行的结果放的这执行,-i;指定位置{};
maxdepth 1:只在下一层目录找
2.给权限
chmod +x 脚本名
3.周期性计划任务
#每天凌晨三点执行该脚本
[root@ctl sh]# crontab -e
* 3 * * * 脚本
#执行的脚本尽量用绝对路径