昨天终于拿到服务器权限,今天第一次登上线上的服务器协助开发人员做远程备份。由于是第一次,心里多少有点负担,生怕做不好(其实更怕做出什么×××的事...)
开发人员要求将积分的目录备份到两台服务器上,用到的工具是rsync,本来挺简单的一件事,结果由于太久没用,还有不够细心,过程中出现了一些小问题,还好leader帮忙指导一二最终也算是顺利交付任务了,下面记录下今天的过程和遇到的问题。
任务具体要求如下:
协助开发人员A将积分副本同步到目标主机下。
源服务器:192.168.1.1
目标服务器:192.168.1.2 192.168.1.3
服务器平台Ubuntu
配置过程
==============目标服务器==============
目标服务器上,配置文件(默认不存在),需要手动添加
确保密码文件权限为600,否则会报错
wuguihong1@ubuntu:~$ sudo chmod 600 /etc/rsyncd.pass
确保同步的目标目录存在,否则会报错
wuguihong1@ubuntu:~$ sudo mkdir /data/app-jifen/
确保目录属主与 rsyncd.conf 中的配置一致
wuguihong1@ubuntu:~$ sudo chown www.www /data/app-jifen/
==============源服务器==============
root@ubuntu:/home/wuguihong1# echo "jifen@passwd" > /etc/rsync.pass
root@ubuntu:/home/wuguihong1# chmod 600 /etc/rsync.pass
测试
total size is 0 speedup is 0.00
到这里配置就完成了,实际上不是什么难事,只不过原本上面就跑了一个进程(/usr/local/rsync),我一上去就往这个目录上配,一直出错,后来问过才知道是要自己搞多一个进程...wtf,看来得事先多做做沟通才行。
PS: 配置完成后,最好随手加上对进程的监控,一旦进程死掉,则自动拉起来;加上开机自启动;
#监控进程
RSYNC_ENABLE=true
*/1 * * * * root ps -C rsync || /etc/init.d/rsync start
#开机自启动
root@ubuntu:/home/wuguihong1# cd /etc/rc2.d
root@ubuntu:/home/wuguihong1# ln -s ../init.d/rsync S50rsync
由于后来需要配置好几台机器,干脆写了脚本来处理:
#!/bin/baship_allow = "192.168.1.1"backdir = "/data/webapps"user = "jifen"#配置rsyncd.confcat << EOF >> /etc/rsyncd.confuid = www-datagid = www-datapid file=/tmp/rsyncd.pidlog file = /var/log/rsyncd.log[jifen]path=$backdirauth users=$userread only = nostrict modes = yessecrets file = /etc/rsyncd.passhosts allow= $ip_allowhosts deny = *EOF#配置rsync密码文件echo "jifen:jifen@rsync" > /etc/rsyncd.passchmod 600 /etc/rsyncd.pass#监控进程存活sed -i "s/RSYNC_ENABLE=false/RSYNC_ENABLE=true/" /etc/default/rsynccd /etc/rc2.dln -s ../init.d/rsync S50rsynccdecho "*/1 * * * * root ps -C rsync || /etc/init.d/rsync start" >> /etc/crontab/etc/init.d/rsync start
操作过程中遇到的问题:
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]