rsync 使用方法

原文:
http://os.51cto.com/art/201101/243374.htm

Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

rsync的优点
①可以镜像保存整个目录树和文件系统;
②可以很容易做到保持原来文件的权限、时间、软硬链接等;
③无须特殊权限即可安装;
④优化的流程,文件传输效率高;
⑤可以使用rsh、ssh等方式来传输文件,当然也可以通过直接的socket连接;
⑥支持匿名传输
服务器端的配置
具体的就不多说了,重要的地方说一下。首先检查rsync是否安装:
rpm –q rsync
rsync-2.6.8-3.1

说明rsync已安装,如果提示出现 package rsync is not installed 则说明这个软件报没有安装大家可以使用yum进行安装
另外,关闭防火墙和SElinux,因为是内网中传输,所以这些没必要
service iptables stop && chkconfig iptables off
setenforce 0

下面分享下我自己定义的配置文件/etc/rsyncd.conf。文件我先贴出来,方便线上环境的朋友直接复制,后面再写上详细注释。
uid = nobody
gid = nobody
user chroot = no
max connections = 200
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[backup]
path=/backup/
ignore errors
read only = no
list = no
hosts allow = 192.168.21.0/255.255.255.0
auth users = test
secrets file = /etc/rsyncd.password

注释:
uid = nobody
进行备份的用户,nobody 为任何用户
gid = nobody
进行备份的组,nobody为任意组
use chroot = no
如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以root权限
并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true.但是这个一般不需要,我选择no或false
list = no
不允许列清单
max connections = 200
最大连接数
timeout = 600
覆盖客户指定的IP超时时间,也就是说rsync服务器不会永远等待一个崩溃的客户端
pidfile = /var/run/rsyncd.pid
pid文件的存放位置
lock file = /var/run/rsync.lock
锁文件的存放位置
log file = /var/log/rsyncd.log
日志文件的存放位置
[backup]
这里是认证模块名,即跟samba语法一样是对外公布的名字
path = /backup/
这里是参与同步的目录
ignore errors
可以忽略一些无关的IO错误
read only = no
允许可读可写
list = no
不允许列清单
hosts allow = 192.168.21.0/255.255.255.0
这里跟samba的语法是一样的,只允许192.168.21.0/24的网段进行同步,拒绝其它一切
auth users = test
认证的用户名
secrets file = /etc/rsyncd.password
密码文件存放地址
注意:对于这个地方的配置文件,虽然解释的很清楚,可是一些朋友始终还会在这里出错这里我提亮点易错点:
1、[backup] 认证模块名和 path = /backup/ 参与同步的目录
这里的path 大家要记好了,这里不要随便的一设置就直接完事,要知道这里是认证模块的,以后从客户机备份的数据会存储在这里。
2、auth users = redhat 认证的用户名
这个名字是服务器端实实在在存在用户,大家不要直接跟步骤走却忽略了这点。如果服务器端少了这个的话我估计你的数据同步就实现不了,大家要谨记。
3、path = /backup/ 参与同步的目录
这个需要稍后自己要在根目录下自己建
cd /
mkdir backup
chmod –R 777 /backup
echo “test:test” > /etc/rsyncd.password

(这里我设置的是用户名和密码一致)
为了安全起见,我设置他的权限为600
chmod 600 /etc/rsync.password
客户端配置:
echo “test” > /etc/rsyncd.password
这里仅仅只需要密码,不需要用户了,免得要同步时还要手动互动
chmod 600 /etc/rsync.password
配置完了之后,可能会遇到一些权限问题:
问题一:
@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服务器端的目录不存在或无权限。
创建目录并修正权限可解决问题。
问题二:
@ERROR: auth failed on module tee
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。
提供正确的用户名密码解决此问题。
问题三:
@ERROR: Unknown module ‘tee_nonexists’
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服务器不存在指定模块。
提供正确的模块名或在服务器端修改成你要的模块以解决问题。
测试
都配置完毕之后就是测试了。在FreeBSD机器上,输入命令
rsync -vzrtop --delete /home/andrewy/etc test@192.168.21.41::backup --password-file=/etc/rsyncd.password
查看同步效果。
注意:我这里是直接以root进行操作。rsync以delete操作时要注意,它会完全同步这边的目录与服务器的目录中的文件,这样会产生一个后果,它会删掉服务器中多余的文件。如果是线上机器,请慎之又慎,切记!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值