文档章节

shell 滚动备份

老汉-憨憨
 老汉-憨憨
发布于 2017/09/06 19:30
字数 300
阅读 23
收藏 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

 

© 著作权归作者所有

共有 人打赏支持
老汉-憨憨
粉丝 18
博文 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
mysql-zrm增备数据恢复时的注意事项

mysql-zrm --action restore --source=/common/test/20170407091226/--backup-set test --verbose 对于一个数据库的全备、增备恢复当然没有问题了 但是,但是,但是:当备份多个库时有异常情...

insist_way
2017/04/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue学习资料

一直以为Vue是依赖nodejs的。 作为前端也可以耦合性就很低了。 //npm包管理器 进行管理npm install vue//初始化一个项目vue init//本地调试npm run dev//编译完成 ...

大灰狼wow
25分钟前
1
0
fullcalendar重新渲染

uiCalendarConfig.calendars.lesson_calendar.fullCalendar('removeEvents');var ym = uiCalendarConfig.calendars.lesson_calendar.fullCalendar('getView').title;$scope.get_lesson(y......

人来疯啊
29分钟前
1
0
多渠道打包总结

https://www.jianshu.com/p/2130db7584c8 https://blog.csdn.net/u011153817/article/details/50772496...

塔塔米
38分钟前
1
0
android -------- Data Binding的使用 ( 六) 自定义属性

今天来说说DataBinding在自定义属性的使用 默认的android命名空间下,我们会发现并不是所有的属性都能直接通过data binding进行设置,比如margin,padding,还有自定义View的各种属性。 默认...

切切歆语
44分钟前
1
0
收邮件 下载附件

uses IdMessage, IdMessageParts, IdAttachment, IdGlobalProtocols, ...;procedure SaveAttachmentsFromFile(FileName: String)var IdMessage: TIdMessage; MsgPart: Ti......

vga
50分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部