免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4180 | 回复: 16
打印 上一主题 下一主题

[系统管理] take daily weekly yearly backup [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-26 22:50 |只看该作者 |倒序浏览
Hi,

需求如下,
备份/etc 目录,备份分为日备,周备,年备,其中年备为每年第一个周六,周备为每周的周六除了每年的第一个周六,日备为周一到周七除了周六。

当前问题,
具体怎么判断,怎么取年备的时间。

当前思路为,首先判断当前是否需要年备,如果需要就备份,完成之后脚本结束;如果不是年备判断当前是否需要周备,如果需要就备份,完成之后脚本结束;如果不是周备就直接进行日备,完成后就结束。

能否有现成的脚本。或者帮忙解决下当前的问题?

BR

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
2 [报告]
发表于 2013-11-26 23:08 |只看该作者
回复 1# 610302547


“需求如下,
备份/etc 目录,备份分为日备,周备,年备,其中年备为每年第一个周六,周备为每周的周六除了每年的第一个周六,日备为周一到周七除了周六。”

目测crontab 可以满足需求:

  1. 0 0 1-7 1 6  /xxx/year.sh  #每年第一个周六,执行年备份脚本
  2. 0 0 * * 6    /xxx/week.sh  #执行每周备份脚本,在备份脚本中判断一下日期若为 1月 1-7 日则退出。
  3. 0 0 * * 1-5,7  /xxx/day.sh #执行每天备份脚本。
复制代码

论坛徽章:
0
3 [报告]
发表于 2013-11-27 10:04 |只看该作者
回复 2# 关阴月飞


    非常感谢,

关于周备,是否可以使用两条crontab?
0 0 8-31 1 6  /backup/weekly.sh
0 0 * 2-12 6  /backup/weekly.sh


因为如果按照您的方法去做,还是要进行判断,在shell里面不知道怎么去写这个判断。so只能使用笨方法

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
4 [报告]
发表于 2013-11-27 10:14 |只看该作者
回复 3# 610302547


    不判断,直接多写一条crontab也是极好的....
   

论坛徽章:
0
5 [报告]
发表于 2013-11-27 10:41 |只看该作者
回复 4# 关阴月飞
谢谢!

   

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
6 [报告]
发表于 2013-11-27 11:35 |只看该作者
本帖最后由 rdcwayx 于 2013-11-27 11:36 编辑

@610302547
给个思路,直接写的,没调试过,你自己按要求调整一下
  1. #!/usr/bin/bash

  2. DOW=$(date +%a)  # Weekday name, eg Sun, Mon
  3. DAY=$(date +%j|sed 's/^0*//')  # Day of year (1..366)

  4. BACK="DAILY"

  5. if [[ $DAY -lt 8 ]] && [[ $DOW == "Sat" ]];then
  6.    echo "Yearly backup"
  7.    BACK="YEARLY"
  8. else
  9.    if [[ $DOW == "Sat" ]]; then
  10.        echo "Weekly backup"
  11.        BACK="WEEKLY"
  12.    fi
  13. fi

  14. case $BACK in
  15.   "DAILY") echo "Daily backup..." ;;
  16.   "WEEKLY") echo "Weekly backup ..." ;;
  17.   "YEARLY") echo "YEARLY backup ..." ;;
  18.   * ) echo "wrong status"
  19.       exit;;
  20. esac
复制代码

论坛徽章:
0
7 [报告]
发表于 2013-11-27 13:41 |只看该作者
回复 6# rdcwayx


    非常感谢!

论坛徽章:
0
8 [报告]
发表于 2013-11-27 15:11 |只看该作者
不要急着感谢,他给你的三个cron,有一个是错误的,自己好好想想,不要 “拿来主义”
610302547 发表于 2013-11-27 10:41
回复 4# 关阴月飞
谢谢!

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
9 [报告]
发表于 2013-11-27 15:34 |只看该作者
回复 8# merlin852


    哪一个是错的?请指正

论坛徽章:
0
10 [报告]
发表于 2013-11-27 17:07 |只看该作者
回复 8# merlin852


    没看到哪里有错啊。不过我还没测试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP