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 出来才行耶!否则整部系统死掉的时候....那可不是闹着玩的!

原文地址:https://www.cnblogs.com/yongxingg/p/3663450.html