zoukankan      html  css  js  c++  java
  • linux 定时备份

    每部主机的任务都不相同,重要的数据也不相同,重要性也不一样,因此,每个人癿备份思考角度都不一样! 有些备份策略是非常有趣的;

    (1)挂载储存设备进行备份:

    挂载设备:

    备份的 script

          #!/bin/bash
          #
          ####################################################################
          # 用户参数输入位置:
          # basedir=你用来储存此脚本所预计备份数据目录(请独立文件系统)
          basedir=/home/backup
          #
          ####################################################################
          # 底下请不要修改了!用默讣值即可!
          PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
          export LANG=C
          # 讴定要备份服务的配置文件,以及备份的目录
          named=$basedir/named
         # 判断目录是否存在,若不存在则予以建立。
         for dirs in $named
         do
         [ ! -d "$dirs" ] && mkdir -p $dirs
         done
         # 1. 将系统主要的服务配置文件分别备份下来,同时也备份 /etc 全部。
         cp -a files $named

    (2)定时备份MYSQL数据库的方法:

    备份的 script (务必更改其中的username,password和dbname)

         #!/bin/sh

         mysqldump -uuser -ppassword dbname | gzip > /var/lib/mysqlbackup/dbname`date +%Y-%m-%d_%H%M%S`.sql.gz

         cd  /var/lib/mysqlbackup

          rm -rf `find . -name '*.sql.gz' -mtime 10`  #删除10天前的备份文件

    (3)使用 FTP 上传备份数据:
    假如你要上传的数据是将 /backup/weekly/ 目录内的档案统整为一个 /backup/weekly.tar.bz2 , 并且上传到朋务器
    端的 /home/backup/ 下,使用的账号是 dmtsai ,密码是 dmtsai.pass 。 那举你可以这样做看看:

          #!/bin/bash
          # ===========================================
          # 先输入系统所需要的数据
          host="192.168.1.100" # 进程主机
          id="dmtsai" # 进程主机的 FTP 账号
          pw='dmtsai.pass' # 该账号的密码
          basedir="/backup/weekly" # 本地端的欲被备份的目录
          remotedir="/home/backup" # 备份到进程的何处?
          # ===========================================
           backupfile=weekly.tar.bz2
           cd $basedir/..
           tar -jpc -f $backupfile $(basename $basedir)
           ftp -n "$host" > ${basedir}/../ftp.log 2>&1 <<EOF
           user $id $pw
           binary
           cd $remotedir
           put $backupfile
           bye
           EOF

    (4)使用 rsync 上传备份数据:
    另一个更简单的方法就是透过 rsync ,但是你必须要在你的朋务器上面取得某个账号使用权后, 并且该账号可以不用 密码即可登入才行!这部分得要先参考朋务器篇得进程联机朋务器才行! 假如你已经设定好 dmtsai 这个账号可以不用密码即可登入进程朋务器,而同样的你要让 /backup/weekly/ 整个备份到 /home/backup/weekly 底下时,可以简单这样做:


          #!/bin/bash
          remotedir=/home/backup/
          basedir=/backup/weekly
          host=127.0.0.1
          id=dmtsai
          # 底下为程序阶段!丌需要修改喔!
           rsync -av -e ssh $basedir ${id}@${host}:${remotedir}

    以上的脚本写好后,可以使用crontab进行定时备份:

    vi crontab

          # 加入这两行即可 (请注意你癿档案目录!丌要照抄呦!)
          30 3 * * 0 root /backup/backupwk.sh
          30 2 * * * root /backup/backupday.sh

    crontab的格式:

          分 时 日 月 星期 要运行的命令

         第1列分钟1~59, 第2列小时1~23(0表示子夜), 第3列日1~31
         第4列月1~12, 第5列星期0~6(0表示星期天), 第6列要运行的命令

    这里有crontab文件条目的一些例子:

    30 21 * * * /usr/local/apache/bin/apachectl restart  #表示每晚的21:30重启apache。

    45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart #表示每月1、10、22日的4 : 45重启apache。

    10 1 * * 6,0 /usr/local/apache/bin/apachectl restart #表示每周六、周日的1 : 10重启apache。

    0,30 18-23 * * * /usr/local/apache/bin/apachectl restart #表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

    0 23 * * 6 /usr/local/apache/bin/apachectl restart #表示每星期六的11 : 00 pm重启apache。

    * */1 * * * /usr/local/apache/bin/apachectl restart #每一小时重启apache

    * 23-7/1 * * * /usr/local/apache/bin/apachectl restart #晚上11点到早上7点之间,每隔一小时重启apache

    0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart #每月的4号与每周一到周三的11点重启apache

    0 4 1 jan * /usr/local/apache/bin/apachectl restart #一月一号的4点重启apache

    参考:鸟哥linux以及网上的一些资源

  • 相关阅读:
    【转】Dalvik虚拟机的启动过程分析
    【转】Android 之ActivityThead、ActivityManagerService 与activity的管理和创建
    【转】应用程序的入口是ActivityThread
    【转】Android中Application类用法
    【转】360浏览器极速与兼容模式的解释
    操作系统学习(七)--操作系统之外设显示器和键盘
    操作系统学习(六)-- 虚拟内存(页面置换算法)
    操作系统学习(五)-- 操作系统之内存管理
    操作系统学习(四)-- 操作系统之进程同步和死锁
    数据库系统学习(八)-SQL语言与数据库完整性和安全性
  • 原文地址:https://www.cnblogs.com/yanzhi123/p/4823760.html
Copyright © 2011-2022 走看看