linux备份脚本-模板

#!/bin/bash

basePath=$(cd `dirname $0` ; pwd)
cd $basePath
bakName=bak_Dir
bakPath=$basePath/$bakName
bakDate=$(date "+%Y-%m-%d-%H-%M-%S")

filePath=/usr/local/test

echo "当前脚本所在目录:$basePath"
echo "备份目录名:$bakName"
echo "备份目录完整路径:$bakPath"
echo "备份时间:$bakDate"
echo "待备份的文件路径:$filePath"


#创建备份目录及临时目录
if [ -d $bakPath ];then
echo "备份目录已存在:$bakPath"
else
echo "创建备份目录"
mkdir -p $bakPath
fi
mkdir -p $bakPath/temp

cp -rf $filePath $bakPath/temp
echo "success"

#备份数据库
echo "bakup database starting..."
mysqldump -uroot -p123456 test > $bakPath/temp/sql_$bakDate.sql
echo "success"

echo "压缩备份目录"
tar -zcf $bakName/bak_${bakDate}.tgz $bakName/temp/*
echo "删除备份目录"
rm -rf $bakPath/temp

echo "历史文件清理"
#仅保留最近10天的数据
find $bakName -mtime +10 -name "*.tgz" -exec rm -rf {} \;
#仅保留最近5个文件
fileNum_total=$(ls -l $bakName | wc -l)
fileNum_keep=5
fileNum_del=$(($fileNum_total-$fileNum_keep))
echo $fileNum_total
echo $fileNum_del

ls -tr $bakName | head -${fileNum_del} | xargs rm -rf

 

find命令使用说明:
find  [查找路径] 寻找条件 操作:
可接参数:
-user      匹配所有者
-mtime  -n  +n     匹配修改内容的时间(-n指n天以内,+n指内天以前)
-name   匹配名称
-iname   匹配名称,不区分大小写
-size    匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
-prune    忽略某个目录
-exec …… {} \;     其中“……”跟用于进一步处理搜索结果的命令
示例:
find  /  -user  linuxprobe  -exec  cp  -a  {}  /root/findresults/ \;
查找linuxprobe这个用户的所有文件,复制该用户下的文件(附带原属性)至root/findresults目录下。

 

posted @ 2020-12-10 01:15  漫步sch  阅读(217)  评论(0编辑  收藏  举报