rsync 服务器是指以 deamon 方式运行 rsync 服务的服务器,需要打开 rsync deamon 和启动 xinetd 服务。默认端口873。rsync 客户端是发起 rsync 连接的服务器,安装rsync即可。rsync 客户端发起连接后,rsync 服务器会检查 rsync 客户端提交 rsync 服务器内建的户名和密码是否正确,如果通过认证检测,则开始文件传输,传输的过程是按要求先比对文件的大小、属性、权限、MD5值等信息,如果两端文件信息不一致,则按要求同步文件的区别块。
安装:
wget https://xxx/pub/rsync/rsync-3.1.2.tar.gz、
tar -xzf rsync-3.1.2.tar.gz
cd rsync-3.1.2
./configure --prefix=/usr/local/rsyncd
make && make install
服务器端配置:
mkdir /etc/rsyncd
touch /etc/rsyncd/rsyncd.conf
touch /etc/rsyncd/rsyncd.secrets
touch /etc/rsyncd/rsyncd.motd
chmod 600 /etc/rsyncd/rsyncd.secrets
vim /etc/rsyncd/rsyncd.conf
#进程 pid 文件所在位置
pid file = /var/run/rsyncd.pid
#指定监听端口,默认是873,可以自己指定
port = 873
#服务器监听的IP地址,可省略
address = 192.168.1.171
#守护进程所属的uid,默认是nobody,可能会碰到文件或目录权限问题,此处偷懒用的 root
uid = root
#守护进程的gid
gid = root
#chroot,即改变程序执行时所参考的根目录位置,在传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中
#这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户权限。另外对符号链接文件,将会排除在外
#也就是说,你在 rsync服务器上,如果有符号链接,你在备份服务器上运行客户端的同步数据时,只会把符号链接名同步下来,并不会同步符号链接的内容
use chroot = yes
#只读选择,只让客户端从服务器上读取文件
read only = no
#只写选择,只让客户端到服务器上写入
write only = yes
#允许访问的IP,可以指定单个IP,也可以指定整个网段,能提高安全性。格式是 ip 与 ip 之间、ip 和网段之间、网段和网段之间要用空格隔开;
hosts allow = 192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0
#客户端最多连接数
max connections = 5
#当用户登录时会看到这个信息。比如显示当前时间、公告等
motd file = /etc/rsyncd/rsyncd.motd
#rsync 服务器的日志;
log file = /var/log/rsync.log
#记录传输文件的日志
transfer logging = yes
#日志格式
log format = %t %a %m %f %b
#日志级别
syslog facility = local3
#通过该选项可以覆盖客户指定的IP超时时间。可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。
timeout = 300
#模块定义
#每个模块都要以[name]形式。这个名字就是在 rsync 客户端看到的名字。
#但是服务器真正同步的数据是通过 path 指定的。可以依次创建多个模块。
#每个模块要指定认证用户、密码文件,但排除并不是必须的。
[ logs ] #模块名,以下配置都属于此模块
#文件目录所在位置
path = /var/log
#当查看服务器上提供了哪些目录时是否列出来,no比较安全
list = no
#忽略I/O错误
ignore errors
#指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系,是 rsyncd.secrets 中的用户名!
#如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份。
#这里使用的 challenge/response 认证协议。
#用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。
auth users = zhangzk
secrets file = /etc/rsyncd/rsyncd.secrets #密码文件
exclude = error_log httpd.pid #忽略的文件或目录
comment this is my log #本模块注释,可选
vim /etc/rsyncd/rsyncd.secrets 密码文件,用户名称与密码以冒号分隔,多个用户名和密码可以多行
zhangzk:239fjdalk@893246dasaATDFBSad
zhangab:669fjbalk@8sadf$3246dasaATDFBSaf
vim /etc/rsyncd/rsyncd.motd
Welcome to use rsync
服务器端启动:
1.直接使用 --daemon 参数
/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
2.xinet方式
1).修改 /etc/services,加入以下内容,如果已经有可以不加,如果端口改了,需要改掉 873 端口为指定端口
rsync 873/tcp # rsync
rsync 873/udp # rsync
2).修改 /etc/xinetd.d/rsync,主要是要打开rsync這個daemon, 一旦有rsync client要连接時, xinetd会把它转介給 rsyncd(port 873)。
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon --config=/etc/rsyncd/rsynd.conf
log_on_failure += USERID
}
重启 xinetd
service xinetd restart
客户端配置:
创建密码文件,/etc/rsyncd/rsyncd.pass,并修改为 600 权限
touch /etc/rsyncd/rsyncd.pass
chmod 600 /etc/rsyncd/rsyncd.pass
/etc/rsyncd/rsyncd.pass 其内密码需要和服务端内/etc/rsyncd/rsyncd.pass指定用户的密码保持一致
239fjdalk@893246dasaATDFBSad
七、客户端向服务端传输文件,如果是 873 端口,可以把 --port 去掉
rsync -vzrtopg --delete --progress /var/log/access.log zhangzk@192.168.1.100::logs --password-file=/etc/rsyncd/rsyncd.pass --port=873
若有需要也可以从服务端拉取文件,需要把服务器的 /etc/rsyncd/rsyncd.conf 中的 write only = yes 给去掉
#拉取整个目录
rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd/rsyncd.pass --port=873 zhangzk@192.168.1.100::logs /var/log
#拉取单个文件
rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd/rsyncd.pass --port=873 zhangzk@192.168.1.100::logs/a.log /var/log