一、什么是rsync
rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件
二、搭建rsync服务器(服务端配置)
鹅厂机器都自带了rsync,所以就只需要写一个配置文件rsyncd.conf即可,下面详细解释一下:
#运行rsync守护进程的用户
uid = root
#运行RSYNC守护进程的组
gid = root
#不使用chroot
use chroot = no
#最大连接数是4
max connections = 4
#pid文件存放位置
pidfile=rsyncd.pid
#锁文件存放位置
lockfile=rsync.lock
#日志文件存放位置
logfile=rsyncd.log
#定义一个model,在客户端连接时会用到,如果要同步多个目录,可以定义多个model
[video]
#要同步的目录
path =/data/tyronetao/face_recog/youtu_face/local_v
#忽略无关的IO错误
ignore errors
#只读,不能上传
readonly =true
#禁止查看文件列表
list =false
#允许访问服务的ip
#hosts allow = 192.168.1.200
#禁止访问服务的ip
#hosts deny = 0.0.0.0/32
#认证的用户名,系统必须存在的用户,如果你想用多个用户以,号隔开,比如auth users = easylife,r#oot;但是密码需要在passwd配置,不是系统的密码。
authusers= user_00
#认证用户密码文件,配置auth users的密码
secretsfile=passwd
密码文件passwd格式很简单,passwd的内容格式为:用户名:密码,比如我的就是
user_00:taozhiwei
密码文件的文件属性设为root拥有, 且权限要设为600;所以执行以下操作
chown root:root passwd #修改root拥有,
chmod 600 passwd #修改权限
运行rsync(root身份,否则无法读取passwd文件) :rsync --config=rsyncd.conf --daemon --port=18088;
其中--port指定了端口,--config指定了配置文件所在路径,--daemon 指定了以守护进程的方式运行;
三、客户端连接并同步文件
- 手动输入密码:rsync -vzrtopg --port=18088 --delete --progress user_00@127.0.0.1::video /data/tyronetao/face_check/video;其中user_00@127.0.0.1中的user_00就是服务端authusers里配置的,ip换成实际ip即可,然后是::video,video为服务端定义的一个model,video前是2个冒号;/data/tyronetao/face_check/video指定的是同步到本地的路径;-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。--progress是指显示出详细的进度情况;--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除
- 自动密码方式:rsync -vzrtopg --port=18088 --delete --progress --password-file=/data/tyronetao/syn_rsync/password user_00@127.0.0.1::video /data/tyronetao/face_check/video;其中--password-file指定了密码文件password所在路径,password里只需包含服务器端auth user的密码即可,比如我保存的就是taozhiwei;客户端password文件属性也要设为root拥有, 且权限要设为600;执行如下操作: chown root:root passwd #修改root拥有,
chmod 600 passwd #修改权限
Rsync常见错误请参考: http://www.tuicool.com/articles/me2IFjf
更多细节参考:http://blog.chinaunix.net/uid-12306154-id-2181530.html