• 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目录下。
  • 相关阅读:
    bat脚本%cd%和%~dp0的区别
    java测试程序运行时间
    != 的注意事项
    [转载] iptables 防火墙设置
    .NET 创建 WebService
    [转载] 学会使用Web Service上(服务器端访问)~~~
    cygwin 安装 apt-cyg
    在Element节点上进行Xpath
    Element节点输出到System.out
    [转载] 使用StAX解析xml
  • 原文地址:https://www.cnblogs.com/schblog/p/14111823.html
Copyright © 2020-2023  润新知