crontab 日志备份定时任务

时间:2023-03-08 20:54:56
crontab 日志备份定时任务

-l选项,查看当前用户的所有定时任务:

[xiluhua@vm-xiluhua][/home]$ crontab -l
* * * * * /home/xiluhua/shell_script/logbk.sh

-e选项,创建或修改当前用户的定时任务:

[xiluhua@vm-xiluhua][/home]$ crontab -e
crontab: no changes made to crontab

-u选项,查看(-l),修改(-e)指定用户的定时任务,(仅root管理员可用):

[root@vm-xiluhua][/home]$ crontab -u xiluhua -l
* * * * * /home/xiluhua/shell_script/logbk.sh

-r选项,删除定时任务

配置文件:

[xiluhua@vm-xiluhua][~/shell_script]$ cat logbk.conf
logbk.sh /home/xiluhua/auto log

代码:

[xiluhua@vm-xiluhua][~/shell_script]$ cat logbk.sh
#!/bin/bash
#author:xiluhua
#since: #####################################################################
# $: name of log*.sh to execute log-backuping
# $: size triggers log backuping
# $: directories need to log-backup
# $: postfix with which log file will be backuped
##################################################################### v_name=$
v_name=${v_name##*/}
v_exce="exception@${v_name}"
v_nohup="/home/xiluhua/shell_script/nohup_logbk.out"
v_conf="/home/xiluhua/shell_script/logbk.conf"
v_date=".$(date +%Y%m%d'_'%H%M%S)" declare -i v_isConfiged= #0true1false
[ ! -s $v_conf ] && echo "exception@conf.error:please check if $v_conf is available!" >> $v_nohup && exit while read -r f1 f2 f3 f4
do
if [[ -n $f1 && $f1 == $v_name ]]
then
[ -z "$f2" ] && echo "$v_exce@2:size triggers log backuping can not be null" >> $v_nohup && exit
[ -z "$f3" ] && echo "$v_exce@3:directories need to log-backup can not be null" >> $v_nohup && exit
[ -z "$f4" ] && echo "$v_exce@4:log postfix can not be null" >> $v_nohup && exit
v_size=$f2
v_dir=$f3
v_postfix=$f4
v_isConfiged=
break
fi
done<"$v_conf" [ $v_isConfiged == ] && echo "$v_exce@1:not appropriate configed" >> $v_nohup && exit v_line=""
for (( i=;i<;i++))
do
v_line=$v_line"="
done
echo $v_line >> $v_nohup
echo "pid:"$$ >> $v_nohup
echo "v_size:"$v_size"M" >> $v_nohup
echo "v_dir:"$v_dir >> $v_nohup
echo "v_postfix:"$v_postfix >> $v_nohup
IFS=";"
echo "=== dirs listening ===" >> $v_nohup
for dir in $v_dir
do
echo "this.dir:"$dir >> $v_nohup
for postfix in $v_postfix
do
echo "find $dir -size +${v_size}M -name '*.$postfix'" >> $v_nohup #find $dir -size +${v_size}M -name "*.$postfix" -exec gzip {} \;
for file in $(find $dir -size +${v_size}M -name "*.$postfix")
do
echo "log files to be backuped:" >> $v_nohup
echo $file >> $v_nohup
gzip -c $file > ${file}${v_date}.gz && echo > $file
done #find $dir -size +${v_size}M -name "*.$postfix" -exec gzip {} \;
done
done
exit