文档章节

shell 滚动备份

老汉-憨憨
 老汉-憨憨
发布于 2017/09/06 19:30
字数 300
阅读 24
收藏 0
#!/bin/sh

if [ $# != 6 ]; 
then
   echo "Usage: $0  <dir> <pre> <rm-day> <tar-day> <app_num> <dir_num>"
   echo "e.g.: $0 /data/invoice flow 7 3 55 1000"
   exit 0
fi


vdir=$1     #/data/invoice
vpre=$2     #flow
vrmday=$3   #7
vtarday=$4  #3
vappnum=$5  #55
vdirnum=$6  #1000

function backup_dir()
{
    local i=0
    if [ ! -d $1 ]; then
        return
    fi
    
    rm_file="$2_"`date -d "$3 days ago" +%Y%m%d`".tar.gz" 
    logfile="$2_"`date -d "$4 days ago" +%Y%m%d`"*.log"
    tarfile="$2_"`date -d "$4 days ago" +%Y%m%d`".tar.gz"

    cd $1
    for i in `seq 1 $vdirnum`
    do
        cd $i
        rm -f ${rm_file}
        tar cvf ${tarfile} ${logfile}
	    rm -f ${logfile}
        cd -
    done
}

function remove_dir()
{
    local i=0
    if [ ! -d $1 ]; then
        return
    fi

    cd $1
    for i in `seq 1 $vdirnum`
    do
        cd $i
            rm -f *.tar.gz
            tarfile="$2_"`date -d "$4 days ago" +%Y%m%d`"*.log" 
            rm -f $tarfile
        cd -
    done
}

#特殊的appid
arr=(18 34 16 41 5 10 36 40 45 55)

#删除指定时间段的数据
rmdate=(14 14 15 3 10 10 10 31 20)

#打包指点时间段的数据
tardate=(7 7 14 3 7 7 7 30 30)

appid=($(seq 1 1 ${vappnum}))
for var in ${arr[*]}
do
    f=$(($var - 1))
    unset appid[$f]
done

#测试
#unset appid
#appid=(1)

for var in ${appid[*]}
do
    cur_dir="$vdir/$var/"
    backup_dir $cur_dir $vpre $vrmday $vtarday
done

len=${#arr[@]}
len=$(( $len - 1 )) # 55特殊处理

i=0
while [ $i -lt $len ]
do
    appid=${arr[$i]}
    cur_dir="$vdir/$appid"
    if [[ "$appid" = "41" || "$appid" = "45" ]];
    then
        remove_dir $cur_dir $vpre ${rmdate[$i]} ${tardate[$i]}
    else
        backup_dir $cur_dir $vpre ${rmdate[$i]} ${tardate[$i]}
    fi
    i=$(( $i + 1 ))
done

 

© 著作权归作者所有

共有 人打赏支持
老汉-憨憨
粉丝 19
博文 322
码字总数 68382
作品 0
深圳
程序员
私信 提问
emacs 在shell编辑缓冲区执行命令

-一次执行一条命令 M! -执行一条shell命令,并把结果放到当前编辑缓冲区 C-u M ! ============================= 下面正式进入shell编辑缓冲区 ============================= -启动shell...

flash_fish
2014/12/17
0
0
一次数据库误update之后的数据恢复

工作需要,要对数据库(mysql)数据进行对比,写完测试脚本。想在表中修改一条数据,然后运行程序看看效果。正确的sql。可是实际情况是没有写where条件,就按下了回车,shell很快返回“**条数...

youthflies
2014/08/23
0
1
uwsgi log rotate按天切割日志

uwsgi和nginx的log一样都是在一个文件名上写log,无法按天进行rotate,所以单个文件的体积会越来越大,不利于log的备份。 nginx的log切分方法 在网络上研究了nginx的log切分方法,原理比较简...

bobway
08/21
0
0
MySQL之备份还原,主从复制,主主复制。

数据库作为我们的日常工作中不可缺少的部分,那它内部数据的重要性显而易见,所以数据安全至关重要。确保数据的安全,我们就必须做好数据备份。简单说几个MySQL常用的备份工具以及如何利用这...

chinahaike
2014/07/01
0
0
腾讯深圳诚聘-高级DBA、高级结算系统开发工程师(C++),有想法的童鞋联系我

高级DBA--20-40万--深圳工作 维护DB设备预算,申请和滚动更新并对结果负责; 分析业务发展需要的资源趋势,并做出相应规划; 维护DB的日常运营,备份、恢复、扩容,数据迁移和安全管理; 负责...

祥祥的Baby
2011/02/24
2.9K
16

没有更多内容

加载失败,请刷新页面

加载更多

学习心得《稻盛和夫经营学》的读后感2300字

学习心得《稻盛和夫经营学》的读后感2300字: 作者:张宪军;稻盛和夫信奉明朝王阳明的一句话:良知没处,万法难度。人们把它理解为管理者要有在纯正心态下要有好的做事方法,不然是很难成功...

原创小博客
16分钟前
0
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
37分钟前
1
0
ActiveMQ消息传送机制以及ACK机制详解

AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。 一. ActiveMQ消息传送机...

watermelon11
今天
1
0
HashTable和Vector为什么逐渐被废弃

HashTable,不允许键值为null,还一个就是put方法使用sychronized方法进行线程同步,单线程无需同步,多线程可用concurren包的类型。 如编程思想里面说的作为工具类,封闭性做的不好没有一个...

noob_chr
昨天
1
0
Win10 下安装Win7双系统

很多人买了预装64位Win8/8.1的电脑后想重装(或者再安装一个)Win7系统,但是折腾半天发现以前的方法根本不奏效。这是因为预装Win8/8.1的电脑统一采用了UEFI+GPT引导模式,传统的BIOS(Legacy...

yaly
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部