zoukankan      html  css  js  c++  java
  • Linux学习-备份策略

    每部主机的任务都不相同,重要的数据也不相同,重要性也不一样,因此,每个人的备份思考角度都不一样!

    备份分为两大部分,一个是每日备份经常性变动的重要数据, 一个则是每周备份就不常变动的信息。这个时候我就写了两个简单的 scripts ,分别来储存这些数据。

    备份策略是这样的:

    1. 主机硬件:使用一个独立的 filesystem 来储存备份数据,此 filesystem 挂载到 /backup 当中;
    2. 每日进行:目前仅备份 MySQL 数据库;
    3. 每周进行:包括 /home, /var, /etc, /boot, /usr/local 等目录与特殊服务的目录;
    4. 自动处理:这方面利用 /etc/crontab 来自动提供备份的进行;
    5. 异地备援:每月定期的将数据分别 (a)刻录到光盘上面 (b)使用网络传输到另一部机器上面。

    每周系统备份的 script

    [root@study ~]# vi /backup/backupwk.sh
    #!/bin/bash
    # ====================================================================
    # 使用者參數輸入位置:
    # basedir=你用來儲存此腳本所預計備份的資料之目錄(請獨立檔案系統)
    basedir=/backup/weekly  <==您只要改這裡就好了!
    
    # ====================================================================
    # 底下請不要修改了!用預設值即可!
    PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
    export LANG=C
    
    # 設定要備份的服務的設定檔,以及備份的目錄
    named=$basedir/named
    postfixd=$basedir/postfix
    vsftpd=$basedir/vsftp
    sshd=$basedir/ssh
    sambad=$basedir/samba
    wwwd=$basedir/www
    others=$basedir/others
    userinfod=$basedir/userinfo
    # 判斷目錄是否存在,若不存在則予以建立。
    for dirs in $named $postfixd $vsftpd $sshd $sambad $wwwd $others $userinfod
    do
    	[ ! -d "$dirs" ] && mkdir -p $dirs
    done
    
    # 1. 將系統主要的服務之設定檔分別備份下來,同時也備份 /etc 全部。
    cp -a /var/named/chroot/{etc,var}	$named
    cp -a /etc/postfix /etc/dovecot.conf	$postfixd
    cp -a /etc/vsftpd/*			$vsftpd
    cp -a /etc/ssh/*			$sshd
    cp -a /etc/samba/*			$sambad
    cp -a /etc/{my.cnf,php.ini,httpd}	$wwwd
    cd /var/lib
      tar -jpc -f $wwwd/mysql.tar.bz2 	mysql
    cd /var/www
      tar -jpc -f $wwwd/html.tar.bz2 	html cgi-bin
    cd /
      tar -jpc -f $others/etc.tar.bz2	etc
    cd /usr/
      tar -jpc -f $others/local.tar.bz2	local
    
    # 2. 關於使用者參數方面
    cp -a /etc/{passwd,shadow,group}	$userinfod
    cd /var/spool
      tar -jpc -f $userinfod/mail.tar.bz2	mail
    cd /
      tar -jpc -f $userinfod/home.tar.bz2	home
    cd /var/spool
      tar -jpc -f $userinfod/cron.tar.bz2	cron at
    
    [root@study ~]# chmod 700 /backup/backupwk.sh
    [root@study ~]# /backup/backupwk.sh  <==記得自己試跑看看!
    

    每日备份资料的 script

    [root@study ~]# vi /backup/backupday.sh
    #!/bin/bash
    # =========================================================
    # 請輸入,你想讓備份資料放置到那個獨立的目錄去
    basedir=/backup/daily/  <==你只要改這裡就可以了!
    
    # =========================================================
    PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
    export LANG=C
    basefile1=$basedir/mysql.$(date +%Y-%m-%d).tar.bz2
    basefile2=$basedir/cgi-bin.$(date +%Y-%m-%d).tar.bz2
    [ ! -d "$basedir" ] && mkdir $basedir
    
    # 1. MysQL (資料庫目錄在 /var/lib/mysql)
    cd /var/lib
      tar -jpc -f $basefile1 mysql
    
    # 2. WWW 的 CGI 程式 (如果有使用 CGI 程式的話)
    cd /var/www
      tar -jpc -f $basefile2 cgi-bin
    
    [root@study ~]# chmod 700 /backup/backupday.sh
    [root@study ~]# /backup/backupday.sh  <==記得自己試跑看看!
    

    再来就是开始 让系统自己跑啦! 怎么跑?就是 /etc/crontab 呀!提供一下我的相关设定呦!

    [root@study ~]# vi /etc/crontab
    # 加入这两行即可 (请注意你的文件目录!不要照抄呦!)
    0 3 * * 0 root /backup/backupwk.sh
    30 2 * * * root /backup/backupday.sh
    

    远程备援的 script

    • 使用 rsync 上传备份数据
    [root@study ~]# vi /backup/rsync.sh #!/bin/bash
    remotedir=/home/backup/ basedir=/backup/weekly host=127.0.0.1
    id=dmtsai
    # 底下为程序阶段!不需要修改喔!
    rsync -av -e ssh $basedir ${id}@${host}:${remotedir}
    
  • 相关阅读:
    《SQL 基础教程》第五章:复杂查询
    Ruby on Rails Tutorial 第一章笔记
    《Practical Vim》第十章:复制和粘贴
    《Practical Vim》第五章:命令行模式
    《SQL 基础教程》第四章:数据更新
    用户的三次登录验证及进度条
    socket模块开启一个永久性服务
    TCP协议实现切换目录
    爬取好友微信信息
    TCP协议中传输系统命令及上传下载文件
  • 原文地址:https://www.cnblogs.com/uetucci/p/7778533.html
Copyright © 2011-2022 走看看