linux使用Rsync实现文件同步

参考文章
https://blog.csdn.net/bugouyonggan/article/details/21970867


一、介绍

Rsync(remote synchronize) 是一个远程数据同步工具,可以使用“Rsync算法”同步本地和远程主机之间的文件。rsync的好处是只同步两个文件不同的部分,相同的部分不在传递。类似于增量备份,这使的在服务器传递备份文件或者同步文件,比起scp工具要省好多时间。


二、正文

操作系统:Ubuntu 18.04
服务器ip:192.168.43.1
客户端ip:192.168.43.2


2.1、配置服务器

2.1.1、开机启动rsync服务

Ubuntu 18.04 是默认安装了rsync的,但rsync服务默认不是启动的,我们要修改文件sudo vi /etc/default/rsync

RSYNC_ENABLE=true   #将false改true

2.1.2、修改配置文件

先复制一下配置文件到etc目录下,方便修改

sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc

修改配置文件

sudo vi /etc/rsyncd.conf

修改成如下信息:

在这里插入图片描述
注意:这个path同步目录如果没有的话,需要自己创建


具体说明配置文件的意思:

# sample rsyncd.conf configuration file

# GLOBAL OPTIONS

#motd file=/etc/motd 			#登录欢迎信息
#log file=/var/log/rsyncd 		#日志文件
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
pid file=/var/run/rsyncd.pid

#指定rsync发送日志消息给syslog时的消息级别,常见的消息级别是:uth, authpriv, cron, daemon, ftp, 
#kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, 
#local5, local6和local7。默认值是daemon。
#syslog facility=daemon

#自定义tcp选项,默认是关闭的
#socket options=

#以下是模块信息,我们可以创建多个模块
# MODULE OPTIONS

[ftp]

        comment = public archive 		#模块描述
        path = /var/www/pub 			#需要同步的路径
        
        #默认是yes|true,如果为true,那么在rsync在传输文件以前首先chroot到path参数指定的目录下。
        #这样做的原因是实现额外的安全防护,但是缺点是需要root权限,并且不能备份指向外部的符号连接指向的目录文件。
        use chroot = yes 			
        	
#       max connections=10 				#最大连接数
        lock file = /var/lock/rsyncd 	#指定支持max connections参数的锁文件。
# the default for read only is yes...
        read only = yes 				#只读选项
        list = yes 						#客户请求时可用模块时是否列出该模块
        uid = nobody 					#设定该模块传输文件时守护进程应该具有的uid
        gid = nogroup 					#设定该模块传输文件时守护进程应具有的gid,此项与uid配合可以确定文件的访问权限

#用来指定多个由空格隔开的多个模式列表,并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,
#不过配置文件中指定的exlude模式不会传递给客户端,而仅仅应用于服务器。一个模块只能指定一个exlude选项,但是可以在模式
#前面使用"-"和"+"来指定是exclude还是include。这个我的理解是排除目录中不需同步的文件
#       exclude = 

#       exclude from = 				#可以指定一个包含exclude模式定义的文件名
#       include = 					#与exclude相似
#       include from = 				#可以指定一个包含include模式定义的文件名

#该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。
#如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的 challenge/response认证协议。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。
#默认情况下无需密码就可以连接模块(也就是匿名方式)
#       auth users = 

#该文件每行包含一个username:password对,以明文方式存储,只有在auth users被定义时,此选项才生效。
#同时我们需要将此文件权限设置为0600
#       secrets file = /etc/rsyncd.secrets 

#该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,
#其他任何用户不可以访问该文件。默认值为true
        strict modes = yes 
        
#       hosts allow = 				#允许的主机
#       hosts deny = 				#拒绝访问的主机
        ignore errors = no 			#设定rsync服务器在运行delete操作时是否忽略I/O错误
        ignore nonreadable = yes 	#设定rysnc服务器忽略那些没有访问文件权限的用户
        transfer logging = no 		#使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中
#       log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. 	#设定日志格式
        timeout = 600 				#超时设置(秒)
        refuse options = checksum dry-run 	#定义一些不允许客户对该模块使用的命令选项列表
        
#告诉rysnc那些文件在传输前不用压缩,默认已设定压缩包不再进行压缩
        dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz 
        

日志格式选项列表:
%h:远程主机名
%a:远程IP地址
%l:文件长度字符数
%p:该次rsync会话的进程id
%o:操作类型:"send""recv"、”del.”
%f:文件名
%P:模块路径
%m:模块名
%t:当前时间
%u:认证的用户名(匿名时是null)
%b:实际传输的字节数
%c:当发送文件时,该字段记录该文件的校验码

2.1.3、创建密码文件

创建密码文件:sudo vi /etc/rsyncd.secrets。内容如下:

hadoop:123456 #格式必须要为 用户名:密码

说明:这里的用户名与密码是客户端的用户名与密码,别搞错了

给密码文件赋予0600权限:sudo chmod 0600 /etc/rsyncd.secrets


2.1.4、启动resync

sudo /etc/init.d/rsync start

2.2、配置客户端

2.2.1、创建密码文件

创建密码文件:sudo vi /etc/rsyncd.secrets。内容如下:

123456    #写入客户端密码即可

给密码文件赋予0600权限:sudo chmod 0600 /etc/rsyncd.secrets


三、测试

在客户端中,输入如下如下命令

下载:

rsync -vzrtopg --progress [email protected]::data test 

解释:将服务器中data模块指定的path,下载到本机的test目录中。类似于git的pull的作用


上传:

rsync -avzP hello.txt  [email protected]::data --password-file=/etc/rsyncd.secrets

解释:将本机的hello.txt文件上传到服务器的data模块指定的path中,这里用了密码文件,能够进行免密上传。类似于git的push


总结:
运用好rsync服务,能搭建一个属于自己的git仓库

猜你喜欢

转载自blog.csdn.net/lendsomething/article/details/109134717