Linux Rsync服务搭建 发表于 2022-01-11 浏览量 398 没有评论 # 简介 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试 此外,它在windows平台下也有相应的版本,如cwRsync和Sync2NAS等工具 ## 安装服务端 ``` [root@npc_client data ]# wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz [root@npc_client data]# tar xzvf rsync-3.0.7.tar.gz [root@npc_client data]# cd rsync-3.0.7 [root@npc_client rsync-3.0.7]# ./configure --prefix=/usr/local/rsync [root@npc_client rsync-3.0.7]# make ;make install ``` + 安装完后,配置rsync配置文件,默认/etc/不存在rsync.conf配置文件,需要手动创建,配置内容如下: ``` [root@npc_client rsync-3.0.7]# vim /etc/rsyncd.conf ###########[global]全局配置 uid = nobody gid = nobody use chroot = no max connections = 30 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log transfer logging = yes log format = %t %a %m %f %b syslog facility = local3 timeout = 300 [www] path = /usr/local/webapps #看目录是否存在 comment = www auth users = test secrets file = /etc/rsync.pas hosts allow = 172.16.0.0/21 [web] path = /data/www/web auth users = test list = no comment = web secrets file = /etc/rsync.pas hosts allow = 172.16.0.0/21 ``` + 配置说明 ``` [www] #要同步的模块名 path = /usr/local/webapps #要同步的目录 comment = www #这个名称无所谓 read only = no #no 客户端可以上传文件,yes只读 write only = no #no客户端可以下载文件,yes不能下载 list = yes #是否提供列表资源 auth users = test #登录系统使用的用户名,没有设置默认为匿名 hosts allow = 172.16.0.0/21 #本模块允许通过的IP地址 hosts deny = 172.16.7.1 #禁止主机IP secrets file = /etc/rsync.pas #密码文件存放的位置 ``` + 设置rsync服务器端同步秘钥 ``` [root@npc_client /]# vim /etc/rsync.pas [root@npc_client /]# cat /etc/rsync.pas test:test999 [root@npc_client /]# chmod 600 /etc/rsync.pas ``` + 启动服务端Rsync,/usr/local/rsync/bin/rsync --daemon ,监听端口873 ``` [root@npc_client /]# /usr/local/rsync/bin/rsync --daemon [root@npc_client /]# netstat -ntpl | grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 23350/rsync tcp6 0 0 :::873 :::* LISTEN 23350/rsync ``` ## 配置客户端 + 只需要在客户端写入服务端的密码即可 ``` [root@hdss7-210 /]# vim /etc/rsync.pas [root@hdss7-210 /]# cat /etc/rsync.pas test999 [root@hdss7-210 /]# chmod 600 /etc/rsync.pas [root@hdss7-210 /]# mkdir -p /data/www/web [root@hdss7-210 web]# rsync -aP --delete test@172.16.7.203::web /data/www/web --password-file=/etc/rsync.pas ``` + rsync命令常用参数 ``` -v :展示详细的同步信息 -a :归档模式,相当于 -rlptgoD -r :递归目录 -l :同步软连接文件 -p :保留权限 -t :将源文件的"modify time"同步到目标机器 -g :保持文件属组 -o :保持文件属主 -D :和--devices --specials一样,保持设备文件和特殊文件 -z :发送数据前,先压缩再传输 -H :保持硬链接 -n :进行试运行,不作任何更改 -P same as --partial --progress --partial :支持断点续传 --progress :展示传输的进度 --delete :如果源文件消失,目标文件也会被删除 --delete-excluded :指定要在目的端删除的文件 --delete-after :默认情况下,rsync是先清理目的端的文件再开始数据同步;如果使用此选项,则rsync会先进行数据同步,都完成后再删除那些需要清理的文件。 --exclude=PATTERN :排除匹配PATTERN的文件 --exclude-from=FILE :如果要排除的文件很多,可以统一写在某一文件中 -e ssh :使用SSH加密隧道传输 ``` + 同步本地文件 ``` [root@hdss7-210 web]# rsync -avh ./ /tmp/web/ ``` ## Rsync基于ssh同步 除了可以是用rsync秘钥进行同步之外,还有一种比较简单的同步方法就是基于ssh来同步 ``` rsync -aP ./web --delete root@172.16.7.203:/tmp ``` + 实时同步数据,可以配合inotify软件来使用