zoukankan      html  css  js  c++  java
  • 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目录下。
  • 相关阅读:
    三层架构简单实例【转】
    排序 普通插入法排序
    排序 选择排序
    C#中的继承与覆盖
    排序 冒泡排序法
    c#使用Split分割字符串的几种方法
    GROUP BY,WHERE,HAVING之间的区别和用法
    递归 斐波那契数列
    【公众号系列】一文看懂税费改革
    【MM系列】SAP库龄报表逻辑理解
  • 原文地址:https://www.cnblogs.com/schblog/p/14111823.html
Copyright © 2011-2022 走看看