rsync安装 /配置及异常处理

  • 1 rsync简述

    rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了--remote sync。它的特性如下:

可以镜像保存整个目录树和文件系统。

可以很容易做到保持原来文件的权限、时间、软硬链接等等。

无须特殊权限即可安装。

优化的流程,文件传输效率高。

可以使用rcpssh等方式来传输文件,当然也可以通过直接的socket连接。

     支持匿名传输,以方便进行网站镜象。

  • 2 rsync安装

    1.从原始网站下载:[url]http://rsync.samba.org/ftp/rsync/[/url]

    2.[jack@localhost bin]#sudo ./configure

[jack@localhost bin]#sudo make

[jack@localhost bin]#sudo make install

说明一点,客户机和服务器都要安装rsync。客户机以客户端方式运行rsync,服务器端以服务器方式运行rsync,它监听873端口。

     3.运行rsync

 /usr/local/bin/rsync --daemon

 验证启动是否成功:

 netstat -na|grep 873

3 rsync应用案例

  •  3.1 案例说明

      需把服务器A/home/jack/data目录下的所有内容,备份到服务器B上去 .


     

 

  •  3.2 rsync配置

  •       3.2.1 主服务器A

      修改默认配置文件(/etc/rsyncd.conf,若初次安装 rsync ,可能不存在文件,需手工创建),在服务A#sudo vi /etc/rsyncd.conf  添加如下内容 :

port = 873 //rsync的端口
use chroot = no
max connections = 3 //允许客户端的最大连接数
strict modes = yes //是否需要密码验证文件  注:这里为yes时,密码文件权限要改为600
pid file = /var/run/rsync.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log // 日志文件 

[upload] //模块一. 自定义的模块,不需密码
path = /home/looming/rsync-databack/upload/
comment = used for user upload data
read only = no
list = no
uid = root //用于同步的属主和属组(必须的,且有时候会涉及到权限问题)
gid = root //用于同步的属主和属组 

[upload2] //模块二 自定义的模块,需密码
path = /home/looming/rsync-databack/upload2/
comment = used for user upload2 data
read only = no //允许客户端上传文件
list = no
uid = root
gid = root
ignore = errors
auth users=looming //客户端用来验证的用户名
secrets file = /etc/rsync.pas //密码文件,明文保存密码,如 ming
  

    建立密码文件

#vim /etc/rsync.pas //这个密码文件是要和配置文件中的一致的。 
ming  
#chmod 600 /etc/rsync.pas //修改权限为600
  •     3.2.2 从服务器 B

 默认配置文件

 (作为客户端,不需要修改配置,且也没用上)

        建立密码文件

#vim /etc/rsync.pas //这个密码文件是要和配置文件中的一致的。 
ming  
#chmod 600 /etc/rsync.pas //修改权限为600
  •  3.3 rsync服务启动

 进入主服务器A

#/usr/local/rsync/bin/rsync --daemon //启动守护进程  #ps -ef | grep rsync                //查看进程是否启动  
  •  3.4 rsync测试

在客户端(即服务器B上) 
$sudo rsync -vzrtopg –progress /home/looming/data looming@master::upload
输出:



$sudo rsync -vzrtopg –progress –password-file=/etc/rsyncd.pas /home/looming/data2 looming@master::upload2
输出:


 

 -v, --verbose 详细模式输出 
-q, --quiet 精简输出模式 
-r, --recursive 对子目录以递归模式处理 
-p, --perms 保持文件权限 
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息 
--delete 删除那些DSTSRC没有的文件 
--progress 显示备份过程 
-t, --times 保持文件时间信息  

编写脚本并建立定时任务让定时执行备份
#vim /home/bakrsync.sh 
#!/bin/bash 
sudo rsync -vzrtopg –progress –password-file=/etc/rsyncd.pas /home/luming/data2 luming@master::upload2 

#chmod +x  /home/bakrsync.sh 
#contab -e   01 01 * * * /home/basrsync.sh &  //每天凌晨放在后台自动执行

  • 4 Rsync常见问题

rsync中常见错误如下(转自http://blog.chinaunix.net/uid-13954085-id-158637.html

 配置一:

 ignore errors

 说明:这个选项最好加上,否则再很多crontab的时候往往发生错误你也未可知,因为你不可能天天去看每时每刻去看log,不加上这个出现错误的几率相对会很高,因为任何大点的项目和系统,磁盘IO都是一个瓶颈

 

Rsync error
错误一:
@ERROR: auth failed on module xxxxx
rsync: connection unexpectedly closed (90 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
说明:这是因为密码设置错了,无法登入成功,检查一下rsync.pwd,看客服是否匹配。还有服务器端没启动rsync 服务也会出现这种情况。

 
错误二:
password file must not be other-accessible
continuing without password file
Password:
说明:这是因为rsyncd.pwd rsyncd.sec的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd

 
错误三:
@ERROR: chroot failed
rsync: connection unexpectedly closed (75 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
说明:这是因为你在 rsync.conf 中设置的 path 路径不存在,要新建目录才能开启同步

 
错误四:
rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
说明:防火墙问题导致,这个最好先彻底关闭防火墙,排错的基本法就是这样,无论是S还是C,还有ignore errors选项问题也会导致

 

 

错误五:

 @ERROR: access denied to www from unknown (192.168.1.123)
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(359)

 说明:此问题很明显,是配置选项host allow的问题,初学者喜欢一个允许段做成一个配置,然后模块又是同一个,致使导致

 

错误六:

 rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(244) [generator=2.6.9]
rsync error: received SIGUSR1 (code 19) at main.c(1182) [receiver=2.6.9]

说明:导致此问题多半是服务端服务没有被正常启动,到服务器上去查查服务是否有启动,然后查看下 /var/run/rsync.pid 文件是否存在,最干脆的方法是杀死已经启动了服务,然后再次启动服务或者让脚本加入系统启动服务级别然后shutdown -r now服务器
 

错误七:

rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(604) [sender=2.6.9]

 说明:原数据目录里没有数据存在

 

 错误八:

rsync: recv_generator: mkdir "test" (in dest) failed: Permission denied (13)

 *** Skipping everything below this failed directory ***

 说明:找了些资料,发现引起这个问题的原因是因为远程rsync的权限不够,不足以在目标目录下创建文件。

 目前知道两个解决办法:

 1.将目标目录dest的权限修改:chmod 777 dest

 2.在rsyncd.conf文件中加入uid = rootgid = root。 



猜你喜欢

转载自scau-fly.iteye.com/blog/1906660
今日推荐