作者:幽兰伴竹 | 来源:互联网 | 2017-11-06 14:02
系统备份是系统管理工作中十分重要的一个环切,本文详细介绍了各种Linux系统的备份方法,相信对大家的日常管理工作有所帮助。备份是一项重要的工作,但是很多人没有去做。一旦由于使用不当造成数据丢失,备份就成了真正的救命者。本文将讨论设置备份的策略
要写脚本程序来实现服务器的备份,经过2天的努力,终于实现了这个功能。这里把整个过程整理一下:
我们首先设服务器为CA,IP:10.144.49.32,备份服务器为CA-BAK。IP:10.144.49.33
第1步:实现CA服务器的自动备份,首先确定要备份的目录,我这里要备份的目为以下这三个目录:
/usr/local/trusdata/var/trusdatauser,/var/lib/mysql和/usr/local/trusdata/var/trusdatapolicy
|
第2步:为编写自动备份程序安家,首先我们确定用一个目录来存放这些文件,先建一个目录和然后建一个文件bakupcaadata.cron用以下脚本来实现,并赋予这个文件为可执行文件。
cd /
mkdir back
touch bakupcaadata.cron
chmod 711 bakupcaadata.cron
|
第3步:编写自动备份程序:目的。实现对目标目录进行自动备份,每天凌晨1点备份一次,并以日期命名。用以下脚本来实现,分别存放在BACK目录下的三个目录下datauser,datamysql和policy。
[root@localhost back]# vi bakupcaadata.cron
export DATETIME=`date +%Y%m%d`
cd /usr/local/trusdata/var/
tar -czf datauser.bak trusdatauser/
mv datauser.bak /back/datauser/datauser.$DATETIME.bak
cd /var/lib/
tar -czf datamysql.bak mysql/
mv datamysql.bak /back/datamysql/datamysql.$DATETIME.bak
cd /usr/local/trusdata/var/
tar -czf datapolicy.bak trusdatapolicy/
mv datapolicy.bak /back/policy/datapolicy.$DATETIME.bak
|
第4步:实现本机的自动备份,我们在任务文件创建一个规则,自动执行任务的文件为crontab,使用以下脚本:
[root@localhost .ssh]# vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
01 1 * * * root /back/bakupcaadata.cron
[root@localhost .ssh]#/etc/rc.d/init.d/crond restart
|
以上4步实现了本机的自动备份。下面要实现自动cp到另外一台服务器。
第5步:用raid实现或者重新安装一台和CA服务器一样的系统,我这里用raid克隆了一台一摸一样的系统。当然这个工作应该在第一步之前做,因为这里不需要自动备份。
第6步:实现从CA-bak自动去CA服务器上拷贝,拷贝的过程使用证书认证,加密传输。首先我们用rsa给各个机器产生一对密钥对。程序如下:
在CA服务器上,增加一个用户roger,当CA-BAK去CA服务器上拷贝时用roger用户;
[roger@localhost roger]$ ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/roger/.ssh/id_rsa):
Created directory \'/home/roger/.ssh\'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/roger/.ssh/id_rsa.
Your public key has been saved in /home/roger/.ssh/id_rsa.pub.
The key fingerprint is:
60:97:c5:99:12:5e:b4:c6:f1:6f:b9:9a:cd:8b:8b:04 roger@localhost.localdomain
[roger@localhost roger]$mv id_rsa.pub roger.pub (用于2台服务器区分)
|
同理在CA-BAK上
[root@localhost root]# ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
67:ef:a3:2a:40:fb:34:20:d9:76:b9:b0:90:ef:68:06 root@localhost.localdomain |
产生密钥对后,互相把自己的公钥传给对方,并重命名为
在CA-BAK上
scp -r -p roger@10.144.49.32:/home/roger/roger.pub /root/.ssh/
cd /root/.ssh
mv roger.pub authorized_keys(必须)
|
在CA上
scp -r -p root@10.144.49.33:/root/.ssh/id_rsa.pub /home/roger/.ssh/
cd /home/roger/.shh/
mv id_rsa.pub authorized_keys
|
这样就实现了双方的认证。
这样就能实现双方自动拷贝
如:
scp -r -p roger@10.144.49.32:/back/id_rsa.pub /back
id_rsa.pub 100% |*******************************************************************************************| 237 00:00 |
编写一个自动从CA服务器上拷贝程序
同样,在CA-BAK服务器上建立一个目录back和一个可执行文件backup.cron。脚本如下:
export DATETIME=`date +%Y%m%d`
scp -r -p roger@10.144.49.32:/back/datauser/datauser.$DATETIME.bak /back/datauser
scp -r -p roger@10.144.49.32:/back/datamysql/datamysql.$DATETIME.bak /back/datamysql
scp -r -p roger@10.144.49.32:/back/policy/datapolicy.$DATETIME.bak /back/policy
|