rsync除了可以ssh方式以外,在远程主机上建立一个 rsync 的服务器,在服务器上配置好 rsync 的各种应 用,然后本机作为 rsync 的一个客户端去连接远程的 rsync 服务器。
1、建立并配置 rsync 的配置文件 /etc/rsyncd.conf
vim /etc/rsyncd.conf
加入如下配置:
#全局配置 #port=873 #指定在哪个端口启动 rsyncd 服务,默认是 873 log file=/var/log/rsync.log # 指定日志文件 pid file=/var/run/rsyncd.pid #指定 pid 文件,这个文件的作用涉及到服务的启动以及停止等进程管理操作 #address=192.168.0.10 #指定启动 rsyncd 服务的 IP,假如你的机器有多个 IP,就可以指定其中一个启动rsyncd 服务,默认是在全部 IP 上启动 [test] #模块配置部分 path=/root/rsync #指定数据存放的路径 use chroot=true #true|false 默认是 true,意思是在传输文件以前首先 chroot 到 path 参数所指定的目录下。实现额外的安全防护,但是缺点是需要以 roots 权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下 chroot 值为 true,如果你的数据当中有软连接文件的话建议设置成 false。 max connections=4 #指定最大的连接数,默认是 0 即没有限制 read only=no #如果为 true 则不能上传到该模块指定的路径下 list=true #指定当用户查询该服务器上的可用模块时该模块是否被列出,设true列出, false隐藏 uid=root #指定传输文件时,以哪个用户的身份传输 gid=root #指定传输文件时,以哪个组的身份传输 auth users=test #指定传输文件时,以哪个用户/组的身份传输 secrets file=/etc/rsyncd.passwd #指定密码文件,该参数连同上面的参数如果不指定则不使用密码验证,注意该密码文件的权限一定要是 600 hosts allow=192.168.0.101 #指定被允许连接该模块的主机,可以是 IP 或者网段,如果是多个,之间用空格隔开 hosts deny=192.168.0.101 #指定被拒绝连接该模块的主机 #当allow与deny同时存在,只有allow不匹配且deny匹配的才会拒绝连接 |
其实模块中的一些参数例如 use chroot, max connections, udi, gid, auth users, secrets file 以及 hosts allow 都可以配置成全局的参数。当然我给出的参数并不是所有的,你可以通过 man rsyncd.conf 获得更多信息。
2、编辑 secrets file
保存后要赋予 600 权限,如果权限不对,不能完成同步
vim /etc/rsyncd.passwd
test:test123 |
chmod 600 /etc/rsyncd.passwd
3、启动 rsyncd 服务
rsync --daemon --config=/etc/rsyncd.conf
启动后,可以查看一下日志,并查看端口是否启动:
cat /var/log/rsync.log
netstat -lnp |grep 873
4、配置开机启动
请把命令 rsync --daemon --confg=/etc/rsyncd.conf 写入到 /etc/rc.d/rc.local 文件。
5、指定密码文件
可以在客户机上指定密码保存文件连接时不用输入密码,密码文件需要配置为600权限
vim /etc/pass
加入 test 用户的密码:
test123 |
chmod 600 /etc/pass 修改密码文件的权限
在同步的时候,指定一下密码文件,就可以省去输入密码的步骤了:
rsync -avL test@192.168.0.10::test/test1/ /tmp/test8/ --password-file=/etc/pass