zoukankan      html  css  js  c++  java
  • 定期备份服务器上的项目到本地服务器

    思路:

    一,遍历项目,压缩存储,只保留最近两天的,过期的删除

    二,定时执行shell脚本通过sftp下载压缩包,定期清理备份文件,超过两天的就删除掉了

    ####################################################################

    1.遍历项目,压缩存储

    #下面这行代码并不是注释,它的作用是表名该脚本使用哪个shell解释器
    #! /bin/sh
    
    #变量赋值,等号=两边不能有空格
    #需要处理的文件目录
    from=/data/IFP/data/register
    #zip包存放目录
    to=/data/myimg
    
    #判断符号、运算符号等,左右两边的变量或值,与符号之间都需有空格
    #判断源文件目录是否为空
    if test ! -d $from
    then
            mkdir -p $from
    fi
    
    
    #path dir to
    
    if test ! -d $to
    then
            mkdir -p $to
    fi
    
    #从命令入参获取开始时间和结束时间
    #start date
    start=$1
    
    #end date
    end=$2
    
    #如果开始时间小于登录结束时间,则执行循环
    while [ $start -le $end ]
    do
        #先清空数组
        unset fileList
    
        #查询源文件路径下所有文件,使用grep过滤包含开始时间的文件
        #此处使用小括号把命令括起来执行,否则获取数组长度一直为1
        fileList=(`ls $from/* |grep "${start}"`)
        len=${#fileList[@]}
    
        echo "len:$len"
    
        if test $len -gt 0
        then
            mkdir -p $to/${start}
    
            #for filename in $fileList如此使用不规范,出现只遍历第一个值的错误情况
            for filename in ${fileList[@]}
            do
    
                if [ -f $filename ]
                then
                    #将源文件复制到按月分开的文件中
                    cp $filename ${to}/${start}/
                else
                    continue
                fi
            done
    
            #将按月存放的源文件打成zip包,-q表示安静的执行,-m表示打包完成后删除源文件
            zip -rqm $to/${start}.zip ${to}/${start}
        fi
            #将开始时间增加一个月
            start=`date -d "+1 month ${start}01" +%Y%m`
    done
    
    #delete package
    #删除目标文件中存放复制源文件的文件夹,
    #ls ${to}/ |grep -v "zip"表示查找指定目录加所有文件,但过滤调zip文件,-v是取反,不包含的意思
    #因为zip命令使用了-m参数,即不再用使用下面的命令
    #rm -rf `ls ${to}/ |grep -v "zip"`

    2,保留两天,过期删除

    3.定期下载服务器上的压缩包

    完整的sftp下载脚本如下:
    
    #!/bin/bash
    #SFTP配置信息
    #IP
    IP=1.1.1.1
    #端口
    PORT=22
    #用户名
    USER=username
    #密码
    PASSWORD=password
    #待接收下载文件根目录
    CLIENTDIR=/client/download
    #服务器待下载目录
    SEVERDIR=/server/download
    #待下载文件名
    FILE=filename
    
    lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <<EOF
    cd ${SEVERDIR}/
    lcd ${CLIENTDIR}
    get ${FILE}
    by
    EOF

     4,删除本地备份过期的压缩包

  • 相关阅读:
    转:Windows 7下安装CentOS双系统
    STL学习总结之<迭代器>
    转:linux静态库与动态库
    指向类成员和成员函数的指针
    STL学习总结之<仿函数>
    转:Linux Crontab 定时任务 命令详解
    转: 解决 Redhat 出现”This system is not registered with RHN”更新
    IOS 判断设备屏幕尺寸、分辨率
    IOS 文件管理共通函数整理
    IOS 编译ffmpeg For SDK6.1,模拟器、armv7、armv7s均可使用
  • 原文地址:https://www.cnblogs.com/peteremperor/p/9673321.html
Copyright © 2011-2022 走看看