写在前面
年终了!要回去过年,担心各个设备出问题,要一个备份机器将其他设备上的程序同步做灾备。
实施过程
其中52为备份客户端,51为服务端
打通2.52与2.51之间的ssh
免密码登陆(root用户)
- 在备份服务器52上使用命令
ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
一次生成或者运行
ssh-keygen -t rsa
**然后敲击三次回车生成密钥对 - 如果在2.51服务端上的
/root/.ssh/
目录下没有authorized_keys
文件,则生成:touch authorized_keys
- 修改权限
chmod 600 authorized_keys
将客户端上生成的
id_rsa.pub
追加到服务端authorized_keys
文件中在服务端51上使用scp命令将远程服务器上的
id_rsa.pub
下载到本地服务器scp -p root@192.168.2.52:/root/.ssh/id_rsa.pub /root/.ssh/id_rsa.pub_192.168.2.52
追加到
authorized_keys
文件中cat /root/.ssh/id_rsa.pub_192.168.2.52 >>authorized_keys
修改ssh的配置文件
/etc/ssh/sshd_config
将下列三行注释去掉12345678#RSAAuthentication yes#PubkeyAuthentication yes#AuthorizedKeysFile .ssh/authorized_keys##################修改后#############################RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys重启sshd服务:
service sshd restart
- 到此已经打通2.51和2.52之间的ssh
- 保险起见,将每个服务器上的
id_rsa.pub_*
文件删除rm -f /root/.ssh/id_rsa.pub_*
使用rsync
同步两台服务器程序
修改51上的/etc/rsyncd.conf
文件,没有则创建。权限644
|
|
生成认证密码文件/etc/backserver.pas
执行下列命令
启动服务端
|
|
客户端配置
- 创建密码文件
|
|
- 创建对应文件夹
mkdir -pv /bak/exp_1
- 执行下面命令
|
|
--bwlimit
参数是限定同步速度为1000kB/s--delete
参数是同步时发现客户端有而服务端没有的文件则删除
优化
可以将
exclude
参数写入服务端配置文件中,例如:123456789101112exclude = bin/ history/ #多个目录使用空格隔开# 如果过滤文件较多,可以使用参数exclude from# 注意:########################### 过滤目录不是按绝对值目录匹配的# 例如有两个目录bin/和foo/bin/# 则该参数会将两个bin目录都过滤掉# 如果要过滤foo/bin/则需要用foo/bin/# exclude = foo/bin/###########################exclude from = /home/exclude.list#exclude.list每行为一个参数,参数为相对路径编写
autobakup.sh
备份脚本1234567891011121314151617181920#!/bin/bash#auther: summingbest@gmail.comMONTH=`date +"%Y%m"`DAY=`date +"%d"`HOUR=`date +"%H"`MIN=`date +"%M"`tarname=/bak/exp/exp_1_${MONTH}${DAY}${HOUR}.tar.gz[ ! -d /bak/exp ] && mkdir -p /bak/exp;[ ! -d /bak/exp/exp_1 ] && mkdir -p /bak/exp/exp_1;[ ! -d /bak/exp/tomcat ] && mkdir -p /bak/exp/tomcat;#删除7天前的备份文件find /bak/exp -name "exp_1_*.tar.gz" -mtime +7 -type f|xargs rm -frsync -vzrtopg --bwlimit=1000 --delete --progress root@192.168.2.51::exp_1 /bak/exp/exp_1/ --password-file=/root/backserver.pasrsync -vzrtopg --bwlimit=1000 --delete --progress root@192.168.2.51::tomcat /bak/exp/tomcat/ --password-file=/root/backserver.pastar -zcvf ${tarname} /bak/exp/exp_1/ /bak/exp/tomcat/可以在客户端 将脚本放入指定的/bak/bin目录,并使用命令加入
crontab
,定时执行
|
|
在其他服务器上配置
只需要更改一些对应的参数即可