rsync的规划:
Rsync配置前首先规划好,同步的方向性。方向性分为推和拉的方式,规划推、拉是为了可以在防火墙设置端口是谁主动连接。例如:一般为从APP服务器生成的静态页面使用推的方式将文件推送到Apache服务器上。下面就是使用推的方式进行配置。
rsync 同步的大致思路:
服务器A和B上都安装rsync,其中B服务器上是以服务器模式运行rsync,而A上则以客户端方式运行rsync。这样在web服务器B上运行rsync守护进程,在A上定时运行客户程序来同步web服务器B上需要同步的内容。
rsync 同步有下面几个优点:
可以镜像 保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩 操作,因此可以使用更少的带宽。
安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象。
1. rsync的安装(客户端和服务端都需要安装):
#下载 http://www.samba.org/rsync/
shell> tar zxvf rsync-x.x.x.tar.gz
shell> cd rsync-x.x.x
shell> ./configure && make && make install
#或者
sudo apt-get install rsync
yum install rsync
2. rsync的配置
rsync的主要有以下三个配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(rysnc服务器信息)
rsync服务端配置:
2.1 rsyncd.conf
uid =backup #/etc/rsyncd.conf 所属用户ID,一般为root
gid =backup #/etc/rsyncd.conf 所属权限组
use chroot = no #在传输文件的之前,是否转到用户根目录。
max connections = 4 #最大连接数
pid file = /var/run/rsyncd.pid #服务进程pid保存文件
lock file = /var/run/rsyncd.lock #锁文件路径
log file = /var/log/rsyncd.log #日至文件路径
log format = %t %a %m %f %b
#模块儿里的公共属性也可以在全局定义,譬如:
hosts allow = 10.29.204.107 #允许访问的ip地址,如果有多个ip,请用空格分割。
[web] #要备份的模块名,该名称客户端进行同步时需要调用
path = /disk1/www/imageserver/Public_admin #要备份的目录
ignore errors #可以忽略一些无关的IO错误
read only = true # // 只读
list = false #//不允许列文件
hosts allow = 10.29.204.107
hosts deny = 0.0.0.0/32
auth users = zhangsan #//认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /etc/rsyncd/backup.secrets #//密码和用户名对比表,密码文件自己生成
exclude = important/ #指定不需要同步的目录名,注意,该目录的路径是相对path的。不需要些绝对路径,如果有多个目录不需要同步,请用空格分割开.
comment = This is a test #这个模块的注释信息
注意:auth users = zhangsan,这个和系统用户名没有关系,只是rsync自己的用户管理。
需要将rsyncd.conf更改权限。将rsyncd.conf这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!
2.2 rsyncd.secrets
配置rsync密码(在上边的配置文件中已经写好路径) rsync.pas(名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户)
zhangsan:passwd
需要将rsyncd.secrets更改权限。将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!
chmod 600 /etc/rsyncd/server/rsyncd.secrets
rsync客户端配置:
配置密码文件,这个密码是rsync请求服务端需要的认证密(/etc/rsyncd/server/rsyncd.secrets里的密码)
]# vim /etc/rsyncd/client.pass
passwd
3. 服务端配置 rsync 服务
3.1. 配置 rsync 服务器的步骤
-
首先要选择服务器启动方式
-
对于负荷较重的 rsync 服务器应该使用独立运行方式
-
对于负荷较轻的 rsync 服务器可以使用 xinetd 运行方式
-
-
创建配置文件 rsyncd.conf
-
对于非匿名访问的 rsync 服务器还要创建认证口令文件
3.2. 以 xinetd 运行 rsync 服务
CentOS 默认以 xinetd 方式运行 rsync 服务。rsync 的 xinetd 配置文件
在 /etc/xinetd.d/rsync。要配置以 xinetd 运行的 rsync 服务需要执行如下的命令:
# chkconfig rsync on
# service xinetd restart
管理员可以修改 /etc/xinetd.d/rsync 配置文件以适合您的需要。例如,您可以修改配置行
server_args = --daemon
在后面添加 rsync 的服务选项。
3.3. 独立运行 rsync 服务
最简单的独立运行 rsync 服务的方法是执行如下的命令:
# rsync --daemon --config=/etc/rsyncd/rsyncd.conf
您可以将上面的命令写入 /etc/rc.local 文件以便在每次启动服务器时运行 rsync 服务。当然,您也可以写一个脚本在开机时自动启动 rysnc 服务。
4. 客户端使用rsync服务。
从server端拉取文件:
rsync -vzrtopg --progress --delete zhangsan@192.168.0.217::web /home/backup --password-file=/etc/rsyncd/client.pass
往server端推送文件:
rsync -vzrtopg --progress --password-file=/etc/rsyncd/client.pas /home/backup zhangsan@192.168.0.217::web
镜像本地目录:
rsync -av --exclude="front/front_Runtime" --exclude="front/Html" /disk1/www/frontweb/* /disk1/www/frontweb_news
参数说明
参数名 | 说明 |
Rsync | 同步服务 |
-vzrtopg | v详细提示 |
--progress | 显示进程 |
--delete | 删除文件保持同步 |
zhangsan | 服务器允许访问的用户名 |
192.168.0.217 | 服务器IP |
::web | 服务器中定义的备份模块名(注意:在模块名前面有两个冒号“::” 表示远程文件同步,只有一个冒号,表示本地文件同步) |
/home/backup/ | 本地备份文件目录 |
写成定时任务:
]# vim /root/crontab/tongbu.sh
#!/bin/bash
/usr/bin/rsync -vzrtopg --progress --delete zhangsan@192.168.0.217::web /home/backup --password-file=/etc/client.pass
]# crontab -e
/5 * * * * /root/crontab/tongbu.sh #五分钟运行一次
其他:
]# rsync --daemon #默认用/etc/rsyncd.conf配置文件启动
]# rsync --daemon --config=/etc/rsyncd/rsyncd.conf //指定配置文件启动
]# killall -9 rsync #结束
]# ps -ef | grep rsync #查看
]# netstat -a | grep rsync #检查端口
]# telnet 192.168.1.190 873 #测试端口
rsync中出现的几种错误:
同步命令:
rsync -vzrtopg --progress --delete --exclude=".svn" --password-file=/etc/rsyncd/apache.pass /var/data/codes/ backup@172.28.6.69::tbfrom79
[tbfrom79]
path = /var/www/html/online
ignore errors
read only = no
list = false
hosts allow = 172.28.6.79
hosts deny = 0.0.0.0/32
auth users =backup
uid=apache
gid=apache
secrets file = /etc/rsyncd/backup.pass
修改 /var/www/html/online所属用户和用户组为apache