Linux文件同步:主要使用rsync与crontab结合的方式同步
主机IP:172.22.3.181
备机IP:172.22.3.182
配置操作步骤:
一.安装rsync
二.配置rsyncd.conf 与密码文件(两个步骤1和2)
三.备份脚本
一.安装rsync
备机
1.服务器是否安装rsync
rpm -qa|grep –i rsync
若有显示,说明已安装,则跳过2
2.安装rsync软件
有两种安装方式:
a.利用 yum 安装
1. yum install rsync xinetd
b.源码安装
下载源码自己编译
http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
1. cd rsync-3.0.9
2. ./configure
3. make && make install
二.配置rsyncd.conf 与密码文件(两个步骤(1)和(2))
(1)安装完rsync 服务,这个文件默认是没有的需要自己手动创建一个。
vi /etc/rsyncd.conf #主要全局参数
uid = root
gid = root
use chroot = yes #为了安全考虑,让rsync运行于chroot环境
log file = /var/log/rsyncd.log #rsync的日志文件
pid file = /var/run/rsyncd.pid #rsync的pid文件
[picData]
comment = backup for picServer
path = /opt/
read only = no
auth users = root
secrets file = /etc/rsync.pass
hosts allow = 172.22.3.181,127.0.0.1
:wq!
配置密码文件rsync.pass
1. vi /etc/rsync.pass
2. root:123456
格式:用户名:密码(用户名必须系统真是存在的用户,密码最好不要个系统密码一致)
修改rsync.pass 和rsyncd.conf权限
这个两个文件必须是600 不然服务不读
1. chmod 600 /etc/rsync.pass
2. chmod 600 /etc/rsyncd.conf
开启防火墙tcp873端口
1. vi /etc/sysconfig/iptables
2. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
3. :wq
启动rsync服务
启动服务有两种方式:
a.使用rsync的–daemon选项启动,rsync服务默认使用873号端口
启动:/usr/bin/rsync--daemon --config=/etc/rsyncd.conf
关闭:pkillrsync
lsof –i:873 (检查服务是否启动)
b.xinetd守护
修改/etc/xinetd.d/rsync文件,把
disable = yes
改成
disable = no
然后重启xinetd即可,
/etc/init.d/xinetd restart
服务
service xinetd start #启动
service xinetd stop #停止
service xinetd restart #重新启动
如果你的xinetd开机并没自动启动的话,需要执行
chkconfig xinetd on
到此rsync服务已经配置完成
主机:
1.配置密码文件rsync.pass
1. vi /etc/rsync.pass
2. 123456
3. :wq
这个里面只配置密码
修改文件的权限600
2.执行命令
/usr/bin/rsync -vzrtopg--password-file=/etc/rsync.pass /etc/rsync.pass root@172.22.3.182::picData
执行成功
(2)配置密码文件来达到不输入密码的目的
在配置服务器之前要先生成密钥,ssh-keygen -t rsa,生成密钥如下:
[root@masternagios .ssh]# ls
id_rsa id_rsa.pub
[root@masternagios .ssh]# scp id_rsa.pub root@172.22.3.182:/root/.ssh/authorized_keys
在客户端也要如下操作:
[root@masternagios .ssh]# ssh-keygen -t rsa
[root@masternagios .ssh]# ls
id_rsa id_rsa.pub authorized_keys(3.181的公钥)
[root@masternagios.ssh]#
scp id_rsa.pub root@172.22.3.181:/root/.ssh/authorized_keys
这样两台机可以无密码SSH登陆,以便后面我们同步方便;当然,不要上述的操作也能实现;那么如下操作:
服务端:vi /etc/sery.pass 权限:600(chmod 600 /etc/sery.pass)
root:123456
客服端:
vi/etc/sery_client.pass 权限:600(chmod 600 /etc/sery_client.pass)
123456
生成的这两件文件后面有用处的;
主机:
然后新建配置文件vi /etc/rsyncd.conf,内容如下图示:
解析如下:
uid = root #root用户访问(我这里用ROOT用户,也可以用其他新建的用户)
gid = root #root组用户访问
use chroot = yes #能使用chroot
max connections = 10 #最大连接数
list = yes #允许列出文件清单
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
hosts allow = 172.22.3.182,172.22.2.200,127.0.0.1 #只允许这个主机访问
[data] #发布项(注意这个命名)
path = /webapps/IDManage #发布的路径
ignore errors
read only = no #只读
auth users = root #认证用户为root
secrets file = /etc/sery.pass #密码文件
然后我们来启动:
[root@masternagios ~]# rsync --daemon--config=/etc/rsyncd.conf
[root@masternagios ~]# ps -ef |grep rsync
root 21359 1 0 Aug24 ? 00:00:00 rsync --daemon -- config=/etc/rsyncd.conf
root 24018 23885 0 10:38 pts/0 00:00:00 grep rsync
[root@masternagios ~]#lsof -i:873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 21359 root 4u IPv4 1558266 0t0 TCP *:rsync (LISTEN)
rsync 21359 root 5u IPv61558267 0t0 TCP *:rsync (LISTEN)
然后在客户端测试:
[root@dbserver ~]# telnet 172.22.3.181 873
Trying 172.22.3.181...
Connected to 172.22.3.181.
Escape character is '^]'.
@RSYNCD: 30.0
^]
telnet> q
Connection closed.
说明网络端口开放,没有问题;通常在这配置时会发现一些问题,比如报错(111)--说明服务器端口未开启,就检查一下rsync服务有没有开启;
报错(1503)(1536)--说明无 [data] #发布项(注意这个命名),这里命令一定要对应上同步::[data];
我们再来把服务端rsync加自动启动;
echo"/usr/bin/rsync --daemon --config=/etc/rsyncd.conf">>/etc/rc.local
配置客户端;
客户端只要安装rsync这个命令便可以实现,所以,我们来测试同步实现;
[root@dbserver ~]#rsync -aSvH /webapps/IDManage/ root@172.22.3.181::data--password-file=/etc/sery_client.pass
或者是rsync -avH --progress /cardpic/ root@172.31.8.9::picData --password-file=/etc/rsync.pass
可以看到:
命令执行成功;说明服务端与客户端都没有问题;
三.备份脚本
备机crontab -e
*/1 * * * * rsync -zvrtopg --delete -progress -e 'ssh -p22' root@172.22.3.181:/rstest/ /rstest/