zoukankan      html  css  js  c++  java
  • linux备份知识点

    本学习笔记大部分是参考鸟哥的Linux学习,在此向他表示诚挚的谢意。

    1.备份的意义

    Linux一般用于服务器的管理和应用上,所以对于大的公司来说,进行数据的备份是非常有必要的,在数据的时代,资源和资料都是弥足珍贵的。

    2.数据备份的种类

    本机数据备份:

    一般对Linux的数据备份需要备份如下目录:

    /etc/整个目录

    /home/整个目录

    /var/spool/mail邮件的备份

    /boot如何更改过内核,也需要备份

    /root

    /usr/local如果安装过其他的套件 /usr/local和/opt下也是需要备份一下的。

    网络服务器数据备份:

    如果采用的是原厂RPM安装的则需要备份整个/etc。

    如果是自定义的安装或源码安装则同时还需要备份/usr/local下的所有文件。

    系统www+mysql

    /var下的整个目录和系统/home目录

    推荐备份的路径:

    /etc

    /home

    /var

    /boot

    /root

    /usr/local

    3.备份的种类

    完全备份,耗时长、

    部分备份,耗时短

    4.备份工具

    完整备份中,常用三个工具 cpio/dump/tar

    cpio最大的好处是可以连同配置文件一块进行拷贝。所以cpio是一个很好的完整备份的工具。

    注意:cpio需配合find 才可以进行正常的备份操作。

    部分备份的工具:

    至于部分备份方面,我们就以简单的 tar 来说明一下吧!!假如我们需要备份的数据是每天的 MySQL 数据库时,由于我想让每天的数据都存成不同的档案,而要分别档案的新旧又以日期来分别最简单了! 所以我就可以这样做:

    这样就能将 mysql 的数据库压缩备份至 mysql.2005-10-25.tgz 这个档案, 并且日期会每天都不一样!呵呵!这样一来如果系统的数据库出了问题,就可以马上的回复了! 而且还有很多的档案可供回复呢!不错吧!此外,也可以利用类似上面的第二个范例的例子, 将最新的数据备份就好,其他的资料则不予以更动!嘿嘿!提供了更完善的方式呢!
    大致的工具就是这样了!此外,由于备份是长长久久的事业,所以我们需要的是『系统可以自己动作』的方式, 您说是吧!所以呢,这个时候就需要使用到 cron 的服务啦!还记得我们先前讲过的 例行性命令的建立 吗?赶快再去复习一下呀!

    4.备份案例

    日常备份行为:

    底下提供鸟哥的备份的 scripts ,希望对大家有点帮助! 我的动作是:1) 先将所有的数据通通丢到 /disk2/backup 底下去,然后 2) 进行压缩打包,并且传送到内部的 192.168.1.100 那部主机上面去。

    # 1. 每周备份的资料的 script 啊!
    [root@linux ~]# mkdir /disk2/backup
    [root@linux ~]# vi /disk2/backup/backupweekly.sh
    #!/bin/bash
    # ==============================================================
    # 说明:
    # 这支程序是用来备份鸟哥的网站数据的! 当然啦,数据量很大的!
    # 我将他分为几个部分:
    #       第一部份是系统的服务与受服务的配置文件,
    #       第二部分则是与用户有关的重要信息部分了! ^_^
    # ==============================================================
    # History
    # When          Who     What
    # 2000/12/16    VBird   first time to release
    # 2002/03/26    VBird   Adding ftp services' backup in /disk2/backup/ftp
    # 2003/07/03    VBird   发现解压缩之后会有一些错误数据发生!
    #                       所以将 tar 加入 -p 的参数!
    # 2005/01/02    VBird   怀疑可能因为备份期间硬盘运转的问题导致当机,
    #                       所以,加上多个 sleep 以及 sync 的功能!
    # ==============================================================
    PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
    LANG=C; export LANG
    LC_ALL=C; export LC_ALL
    
    # 设定路径来备份
    basedir=/disk2/backup
    named=$basedir/named
    postfixd=$basedir/postfix
    vsftpd=$basedir/vsftp
    sshd=$basedir/ssh
    sambad=$basedir/samba
    wwwd=$basedir/www
    others=$basedir/others
    userinfod=$basedir/userinfo
    
    # ===============================================================
    # 1.  系统的相关服务,主要服务有:
    #     (1) BIND server: 
    #     (2) Postfix:
    #     (3) vsftp:
    #     (4) sshd:
    #     (5) samba:
    #     (6) WWW:
    #     (7) Others:其他系统必须要的一些信息!
    
    # 1.1 系统的 BIND 套件,主要是 DNS 的配置文件备份!
    cp -a /var/named/chroot/etc     $named/chroot
    cp -a /var/named/chroot/var     $named/chroot
    
    # 1.2 系统的 Postfix Server 相关的文件备份数据!
    cp -a /etc/postfix/*            $postfixd 2> /dev/null
    cp -a /etc/rc.d/init.d/postfix  $postfixd
    cp -a /etc/dovecot.conf         $postfixd
    
    # 1.3 系统的 vsftpd 服务器的仅有的配置文件喔!
    cp -a /etc/vsftpd/*             $vsftpd
    cp -a /etc/vsftpd.*             $vsftpd
    
    # 1.4 系统的 sshd 服务器的配置文件案!
    cp -a /etc/ssh/*                $sshd
    
    # 1.5 系统的 Samba 所动用的档案
    cp -a /etc/samba/*              $sambad
    
    # 1.6 WWW
    cp -a /etc/my.cnf                       $wwwd
    cp -a /etc/php.ini                      $wwwd
    cp -a /etc/httpd/conf/httpd.conf        $wwwd
    cp -a /etc/httpd/conf.d                 $wwwd
    cp -a /etc/httpd/conf.d/vbird.conf*     $wwwd
    cd /usr/local
       tar -pcf $wwwd/counter-data.tar  Counter/data
    cd /var/lib
       tar -pcf $wwwd/mysql-lib.tar  mysql --exclude mysql/mysql.sock
    cd /var
       tar -pcf $wwwd/www-cgi-icon.tar  www/cgi-bin www/icons
    
    # 1.7 Others
    cp -a /etc/hosts                $others
    cp -a /etc/hosts.allow          $others
    cp -a /etc/hosts.deny           $others
    cp -a /etc/modprobe.conf*       $others
    cp -a /etc/fstab                $others
    cp -a /etc/resolv.conf          $others
    cp -a /etc/shells               $others
    cp -a /etc/wgetrc               $others
    cp -a /etc/crontab              $others
    cp -a /etc/sysconfig/i18n       $others
    cp -a /etc/sysconfig/network    $others
    cp -a /etc/sysconfig/network-scripts/ifcfg-eth0 $others
    cd /
       tar -pcf $others/etc.tar etc
    cd /usr
       tar -pcf $others/local.tar local
    
    sleep 5s
    sync; sync
    
    # ============================================================================
    # 2.  主机的重要数据与数据库系统
    #     (1) 用户的信息  重点在 /etc/passwd, shadow, group 以及电子邮件、家目录
    
    # 2.1
    cp -a /etc/passwd  $userinfod
    cp -a /etc/shadow  $userinfod
    cp -a /etc/group   $userinfod
    
    cd /var/spool
       tar -pcf $userinfod/mail.tar mail
    
    cd /
       tar -pcf $userinfod/home.tar home --exclude home/lost+found
    
    sleep 5s
    sync; sync
    
    # ============================================================================
    # 3. 将主机的重要数据复制到 192.168.1.100 那部机器上面去!
    
    # 3.1 压缩与打包
    cd $basedir
       tar -zpcf backupweekly.tar.gz * --exclude backupweekly.tar.gz
    
    sleep 5s
    sync; sync
    
    # 3.2 ftp 到 192.168.1.100
    id="username"
    pw='yourpassword'
    cd $basedir
    ftp -n 192.168.1.100 > $basedir/backup.ftp.log 2>&1 <<EOC
    user    $id     $pw
    binary
    cd      /disk2/backup/
    put     backupweekly.tar.gz
    bye
    EOC
    sync; sync
    
    当然啰,上面的 script 是适合鸟哥的状态,所以,你要使用的话,还得要修修改改呦! 不要照着使用,会有问题的!另外,上面的 script 当中,我已经加上了远程储存的功能了, 那就是 #3.2 的 FTP 部分,藉由这个简单的动作,就可以将我这一部机器上面的数据, 整个传送到 192.168.1.100 那部机器上面,够简单吧! ^_^
    好啦!这样一来每天的 MySQL 数据库就可以自动的被记录在 /disk2/backup/daily 里头啦!而且还是文件名会自动的改变的呦!呵呵!我很喜欢!OK!再来就是开始让系统自己跑啦! 怎么跑?!就是 /etc/crontab 呀!提供一下我的相关设定呦!


    小标题的图示每日备份资料 scripts:

    再来,继续提供一下每日备份的数据:
    # 提供的是每日备份的 script 啊
    [root@linux ~]# vi /disk2/backup/backupdaily.sh
    #!/bin/bash
    #
    # This program is created by VBird 2002/06/13
    #
    # What is this program?
    #       This program will backup the following messages:
    #       1. MySQL data files ( /var/lib/mysql );
    #       2. HTTP's CGI-directory ( /var/www/cgi-bin )
    #
    # HOW TO RUN THIS PROGRAM?
    #       Just put the file into /etc/crontab job,
    #       or put this file's link file to /etc/cron.daily!
    #
    ###############################################################
    # History
    #  Date         What                                    Who
    #==============================================================
    # 2002/06/13    First time to run this program
    #               The only backup files are MySQL and CGI VBird
    #==============================================================
    # 0. Get the date messages and backup directory
    day=`date +%Y-%m-%d`
    basedir="/disk2/backup/daily"
    
    # 1. MySQL  ( PATH = /var/lib/mysql )
    /etc/rc.d/init.d/mysqld stop
    cd /var/lib
    tar -zcf "$basedir"/mysql."$day".tar.gz mysql 2> /dev/null
    /etc/rc.d/init.d/mysqld start
    
    # 2. CGI ( PATH = /var/www/cgi-bin )
    cd /var/www
    tar -zcf "$basedir"/cgi-bin."$day".tar.gz cgi-bin 2> /dev/null

    好啦!这样一来每天的 MySQL 数据库就可以自动的被记录在 /disk2/backup/daily 里头啦!而且还是文件名会自动的改变的呦!呵呵!我很喜欢!OK!再来就是开始让系统自己跑啦! 怎么跑?!就是 /etc/crontab 呀!提供一下我的相关设定呦!

    [root@linux ~]# vi /etc/crontab
    # 加入这两行即可 ( 请注意您的档案目录!不要照抄呦! )
    # backup scripts
    30 3 * * 0 root /disk2/backup/backupweekly.sh
    30 2 * * * root /disk2/backup/backupdaily.sh
    

    这样系统就会自动的在每天的 2:30 进行 MySQL 的备份,而在每个星期日的 3:30 进行重要档案的备份!呵呵!您说,是不是很容易呢!?但是请千万记得呦!还要将 /disk2 当中的资料 copy 出来才行耶!否则整部系统死掉的时候....那可不是闹着玩的!

  • 相关阅读:
    数据库
    计算机基础知识系列
    《大话数据结构》参考
    数据结构与算法系列
    python cookbook
    Python教程 廖雪峰
    Python入门学习系列
    认识 React——声明式,高效且灵活的用于构建用户界面的 JavaScript 库
    线程---同步(synchronized)
    线程---插队和礼让执行(join和yield)
  • 原文地址:https://www.cnblogs.com/yongxingg/p/3663450.html
Copyright © 2011-2022 走看看