shell sh 每天备份log文件
#!/bin/bash
# 每天备份log文件
log_path="/home/fdipzone/logs" # log目录
backup_path="/home/fdipzone/logs/bak" # 备份目录
expire=30 # 备份文件只保留30天
function backup(){
if [ -d "$log_path" ] && [ -d "$backup_path" ]; then
for file in $(find $log_path -maxdepth 1 -name "*.log" -type f); do
copy $file
done
else
echo "${log_path} or ${backup_path} not exists"
fi
}
function copy(){
ofile=$1
dpath="${backup_path}/$(date -d yesterday +%Y/%m/%d/)"
dfile="${dpath}${ofile##*/}"
if [ -f "$ofile" ] && [ -s "$ofile" ]; then
if [ ! -d "$dpath" ]; then # create folder
mkdir -p "$dpath"
fi
cp "$ofile" "$dfile" # copy file
cat /dev/null > "$ofile" # create empty file
echo "${ofile} copy to ${dfile} success"
fi
}
function clearexpire(){
if [ -d "$backup_path" ]; then
echo ${expire:=30} > /dev/null
$(find $backup_path -name "*.log" -type f -mtime +$expire -exec rm {} \;) # delete expire file
$(find $backup_path -mindepth 1 -depth -empty -type d -exec rm -r {} \;) # delete empty folder
else
echo "${backup_path} not exists"
fi
}
backup
clearexpire
exit 0