一.安装rsync
centos7系统默认安装了rsync(可使用命令进行查看);如果没有安装,请使用命令安装
yum -y install rsync
如果本地安装,则需要拷贝rpm文件,进入rpm文件目录,执行命令:(文件名为rpm文件名)
rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm --force --nodeps
添加一个控制脚本:
[root@backup ~]# vim /etc/init.d/rsync
插入内容:如文件rsync文件
给脚本设置权限:
[root@backup ~]# chmod a+x /etc/init.d/rsync
启动命令:
[root@backup ~]# service rsync start
重启命令:
[root@backup ~]# service rsync restart
或者可以停止后再次启动:
[root@backup ~]# service rsync stop
[root@backup ~]# service rsync start
二.配置rsync
如果没有rsyncd.conf创建touch /etc/rsyncd.conf。
修改配置文件:/etc/rsyncd.conf。使用vim命令打开(没有安装vim命令的,请先安装vim:yum -y install vim)
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:
# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
# [ftp]
# path = /home/ftp
# comment = ftp export area
上面这是默认的配置。
添加如下配置:
uid = root
# //设置运行rsync 进程的用户
gid = root
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
#//CentOS7中yum安装不需指定pid file 否则报错
lock file=/var/run/rsyncd.lock
log file = /var/log/rsyncd.log
# //此文件定义完成后系统会自动创建
#exclude = lost+found/ 需要排除的文件
transfer logging = yes
timeout = 900
ignore nonreadable = yes
# //同步时跳过没有权限的目录
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
# //传输时不压缩的文件
在两台服务器上完成上面两步的配置。
三.服务器配置:
1.在配置文件中添加如下配置:(位置:/etc/rsyncd.conf)
[test] //此名字即备份服务器端使用rsync来同步的模块名
path=/usr/local/test //实际需要同步的路径
comment=test //规则描述
ignore errors
read only=no //表示可以pull
write only=no //表示可以push
list=no
auth users=rsyncuser
//备份服务器端获取文件的身份此用户并不是本机中确实存在的用户
secrets file=/etc/rsyncd.password
//用来认证客户端的秘钥文件,格式 username:password,此文件权限一定需要改为600,且属主必须与运行rsync的用户一致。
hosts allow=* //允许所有主机访问
完成上述配置,并保存。
注意:上面的中文和注释在追加的时候都不要写进文件。
2. 创建密码文件
echo 'rsyncuser:123456'>/etc/rsyncd.password
//文件用户名和路径为上面定义,别写错,密码自己定
chmod 600 /etc/rsyncd.password //修改权限
3. 重启服务
systemctl restart rsync.service
四.备份服务器
1. 创建密码文件
echo '123456' >>/etc/rsyncd.password
//注意这里只需要服务器rsyncd.password 中的密码
chmod 600 /etc/rsyncd.password
2. 重启服务
systemctl restart rsyncd.service
3. 编写文件同步的脚本
执行vim /root/test.sh命令
#!/bin/bash
rsync -auv --password-file=/etc/rsyncd.password rsyncuser@192.168.101.22::test /root/test/
说明:password-file:备份服务器上密码文件
rsyncuser:服务器上配置的用户
192.168.101.22:服务器地址
test:服务器上配置的模块名
/root/test:备份文件的地址
4. 执行定时任务
输入命令crontab -e
输入执行时间:*/5 * * * * sh /root/test.sh(每5分钟执行一次)
五.其他操作
1. 两台服务器是需要开启873端口的
firewall-cmd --add-port=873/tcp --permanent //添加端口到默认区域
firewall-cmd --reload //重启
2. 关于SELinux
临时关闭SELinux
setenforce 0
查看状态
getenforce
开机关闭selinux(永久关闭)
编辑/etc/selinux/config文件,将SELINUX的值设置为disabled。下次开机SELinux就不会启动了
3. rayncd服务开机自启
systemctl enable rsyncd.service
检查是否成功启动
netstat -lnp|grep 873
4. 定时任务相关
查询任务
命令:crontab -l
开启服务
systemctl start crond
关闭服务
systemctl stop crond
重启服务
systemctl restart crond
重新加载配置
systemctl reload crond
要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start即可
注:查看备份主机的定时任务运行情况
tail -f /var/log/cron
如果没有同步执行
tail -f /var/spool/mail/root
查看出错信息进行修改。
#!/bin/bash
#this script for start|stop rsync daemon service
#date:2012/2/13
status1=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep')
pidfile="/var/run/rsyncd.pid"
start_rsync="rsync --daemon --config=/etc/rsyncd.conf"
function rsyncstart() {
if [ "${status1}X" == "X" ];then
rm -f $pidfile
${start_rsync}
status2=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep')
if [ "${status2}X" != "X" ];then
echo "rsync service start.......OK"
fi
else
echo "rsync service is running !"
fi
}
function rsyncstop() {
if [ "${status1}X" != "X" ];then
kill -9 $(cat $pidfile)
status2=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep')
if [ "${statusw2}X" == "X" ];then
echo "rsync service stop.......OK"
fi
else
echo "rsync service is not running !"
fi
}
function rsyncstatus() {
if [ "${status1}X" != "X" ];then
echo "rsync service is running !"
else
echo "rsync service is not running !"
fi
}
function rsyncrestart() {
if [ "${status1}X" == "X" ];then
echo "rsync service is not running..."
rsyncstart
else
rsyncstop
rsyncstart
fi
}
case $1 in
"start")
rsyncstart
;;
"stop")
rsyncstop
;;
"status")
rsyncstatus
;;
"restart")
rsyncrestart
;;
*)
echo
echo "Usage: $0 start|stop|restart|status"
echo
esac