日志备份shell脚本,按时间点创建多级目录,每分钟备份一次上一分钟的日志文件
程序员文章站
2022-05-24 12:44:07
...
备注很详细 , 思路很简单 , 欢迎提问
#!/bin/sh
log_src_dir=/home/hadoop/logs/log #日志文件所在目录
log_backup_dir=/usr/local/log #日志文件备份目录
year_mounth=$(date -d "1 minute ago" +%Y%m) #获取当前时间一分钟前的年月
day=$(date -d "1 minute ago" +%d) #获取当前时间一分钟前的日
hour_minute=$(date -d "1 minute ago" +%H%M) #获取当前时间一分钟前的小时分钟
log_file=access.log.* #日志文件名格式
:<<! 此判断可以不要
if [ -d "${log_backup_dir}/${year_mounth} " ] #判断日志文件备份目录的 年月 文件夹是否存在
then
if [ -d "${log_backup_dir}/${year_mounth}/${day}" ] #若 年月 文件夹存在判断下级 日 文件夹是否存在
then
mkdir -p ${tmp_dir} #若 日 文件夹不存在,创建全路径目录
else
mkdir -p ${tmp_dir} #若 日 文件夹存在,创建全路径目录
fi
else
mkdir -p ${tmp_dir} #若 年月 文件夹不存在创建全路径目录
fi
!
mkdir -p ${log_backup_dir}/${year_mounth}/${day}/${hour_minute} #根据当前时间创建日志文件备份目录
cd ${log_src_dir} #进入日志文件所在目录,对此文件目录下的文件进行遍历,只要符合access.log.*格式的文件
for files in $(ls ${log_file} )
do
if cp $files ${log_backup_dir}/${year_mounth}/${day}/${hour_minute} #逐个复制日志文件到指定的日志备份文件夹内
then
mv $files "bak."$files #若复制成功,则给日志文件重命名加上bak.前缀,这样在下一次遍历此文件夹时就不符合access.log.*格式,
#就不会被遍历到,也就不会被再次复制
fi
done
#使用crontab工具定期执行本脚本
#编辑定时任务 crontab -e
#添加一个定时任务 */1 * * * * /脚本文件所在目录全路径/baklog.sh 每分钟执行一次
上一篇: php实现递归与无限分类的方法_PHP
下一篇: iBatis简单入门教程