1.1 安装
yum install xinetd
yum install rsync
1.2 配置文件
1.2.1 服务端主机配置
/etc/rsyncd.conf
motd file = /etc/rsyncd.motd #设置服务器信息提示文件,在该文件中编写提示信息
transfer logging = yes #开启rsync数据传输日志功能
log file = /var/log/rsyncd.log #设置日志文件名,可通过log format参数设置日志格式
pid file = /var/run/rsyncd.log #设置rsync进程号保存文件名称
lock file = /var/run/rsync.lock #设置锁文件名称
uid = nobody #设置进行数据传输时所使用的帐户名或ID号,默认使用nobody
gid = nobody #设置进行数据传输时所使用的组名或GID号,默认使用nobody
#若为yes, rsync会首先进行chroot设置,将根映射在下面的path参数路径下,对客户端而言,系统的根就是path参数指定的路径。但这样做需要root权限,并且在同步符号连接资料时只会同步名称,不会同步内容。
use chroot = no
read only = yes #是否允许客户端上传数据,yes表示不允许
max connections = 200 #设置并发连接数,0表示无限制
[common] #自定义模块名,rsync通过模块定义同步的目录,可定义多个
comment = web content #定义注释说明字串
path = /common #同步目录的真是路径通过path指定
ignore errors #忽略一些IO错误
#exclude = test/ #exclude指定common目录下某个目录可以不同步数据
auth users = tom, jerry #设置允许连接服务器的账户,此账户可以是系统中不存在的用户
secrets file = /etc/rsyncd.secrets #密码验证文件名,该文件权限要求为只读,建议为600,仅在设置auth users后有效
hosts allow = 192.168.0.0/255.255.255.0 #设置哪些主机可以同步数据,多ip和网段之间使用空格分隔
hosts deny=* #除了hosts allow定义的主机外,拒绝其他所有
list = false #客户端请求显示模块列表时,本模块名称是否显示,默认为true
/etc/rsyncd.secrets
tom:123
jerry:123
chmod 600 /etc/rsyncd.secrets
/etc/rsyncd.motd
Welcom to rsync
/etc/xinetd.d/rsync中disable改为no
检验命令
netstat -tunlp | grep 873
1.2.2 客户端主机配置
/etc/rsyncd.secrets
tom:123
jerry:123
chmod 600 /etc/rsyncd.secrets
1.3 启动
1.3.1 服务端启动
service xinetd restart
pkill rsync
rsync --daemon
echo "/usr/bin/rsync --daemon" >> /etc/rc.local #开机启动rsync服务
1.4 使用
1.4.1 示例
rsync -t *.c 192.168.0.54:src/ #将本机当前目录下的以.c结尾的文件赋值到192.168.0.54的src目录下
rsync -avz 192.168.0.54:src/bar /data/tmp #从192.168.0.54主机上将src/bar目录以递归方式复制到本机/data/tmp目录
rsync -avz 192.168.0.54:src/bar/ /data/tmp #和例子2的区别是不在/data/tmp目录下创建bar目录
rsync -avz /src/foo /dest #将本机/src/foo目录复制到/dest目录
rsync -avz tom@192.168.0.230::common /test3 #使用tom账户连接远程192.168.0.230主机的rsync进程,将common模块定义的path路径下载到本地test3目录
rsync -avz 192.168.0.230::common /test3 #匿名下载192.168.0.230服务器的common模块至本地的/test3目录
rsync --list-only tom@192.168.0.254:: #显示192.168.0.254服务器所有的模块名称,需要服务器端配置list=true才会显示
# 客户端每次连接服务器都需要输入密码很麻烦,可以创建密码文件rsync.pass,在其中包含密码,然后使用--password-file指定此文件
echo "123" > rsync.pass #服务器端用户tom的密码
rsync -avz --delete --password-file=rsync.pass tom@192.168.0.254::common /dest