rsync的规划:html
Rsync配置前首先规划好,同步的方向性。方向性分为推和拉的方式,规划推、拉是为了能够在防火墙设置端口是谁主动链接。例如:通常为从APP服务器生成的静态页面使用推的方式将文件推送到Apache服务器上。下面就是使用推的方式进行配置。web
rsync 同步的大体思路:shell
服务器A和B上都安装rsync,其中B服务器上是以服务器模式运行rsync,而A上则以客户端方式运行rsync。这样在web服务器B上运行rsync守护进程,在A上定时运行客户程序来同步web服务器B上须要同步的内容。apache
rsync 同步有下面几个优势:vim
能够镜像 保存整个目录树和文件系统。安全
能够很容易作到保持原来文件的权限、时间、软硬连接等等。bash
无须特殊权限便可安装。服务器
快速:第一次同步时 rsync 会复制所有内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程当中能够实行压缩及解压缩 操做,所以可使用更少的带宽。ssh
安全:可使用scp、ssh等方式来传输文件,固然也能够经过直接的socket链接。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