CENTOS7 下部署RSync
作者:nango
阅读:1551次
来源:原创
时间:2016-11-11 17:24
**RSync** 是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息, 它可以快速安全的传输数据,并且支持增量更新,传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽,另外它还是免费的软件。 然后说下我为什么要部署这个玩意呢:),其实我只想在虚拟机中更改完代码之后,然后就随意的敲这么一行代码,就可以静静的看着代码嗖嗖的同步到服务器了,省去了我再打开FTP再上传;这里另一个好处是,RSync是增量更新,它会对比你的文件,只同步那些不存在的或者更改过的文件,很是节约带宽,也解决了你忘记修改了哪些文件,应该上传哪些文件的烦恼。:) ++正题:++ 我是在centos7下部署,因为centos7已经内置了该工具,所以我们就省去了安装,其他没有的版本可以自行安装。接下来看下配置步骤: ### 服务端配置 1,通常centos默认已安装rsyncd,如果没安装请自行安装 ``` yum install rsyncd ``` 2,服务端配置文件 ``` vi /etc/rsyncd.conf #创建配置文件rsyncd.conf ``` 配置内容如下: ``` uid=nango #//运行rsync守护进程的用户(系统中必须存在的用户) gid=nango #//运行rsync守护进程的组 use chroot = no #//不使用chroot max connections = 10 #//最大连接数,0为不限制 pid file = /var/run/rsyncde.pid #//pid文件存放位置 lock file = /var/run/rsync.lock #//锁文件存放位置 log file = /var/log/rsyncd.log #//日志记录文件的存放位置 Timeout = 300 Log format = %t %a %m %f %b ignore errors #//可以忽略一些无关的IO错误 read only = false #//该选项设定是否允许客户上传文件 list = no #//不允许列文件 auth users = nango #//认证的用户名 secrets file = /etc/rsyncd.secrets #//秘密文件(下面定义) hosts allow = 127.0.0.1 #//允许主机或网段 hosts deny = 0.0.0.0/0 #//禁止主机 [test] #这里是认证的模块名,在client端需要指定 path=/home/test/ #//需要做镜像的目录 [blog] #支持多模块 path=/home/blog/ ``` 3,创建服务端密码文件 ``` vi /etc/rsyncd.secrets #创建密码文件 #密码内容: nango:nango #用户名和密码设置,一行一个用户,用户名:密码 ``` 4,更改密码文件权限(此步省略可能导致不能运行RSync) ``` chmod 600 /etc/rsyncd.secrets #更改密码文件权限(可读写不可执行) ``` 5,启动RSync服务 ``` systemctrl start rsyncd #启动服务,默认在873端口监听(可以自己修改) ``` 6,开放873端口(否则客户端无法访问到服务端) ``` firewall-cmd —add-port=873/tcp —permanent #开启端口 —permanent参数为永久开启 firewall-cmd —reload #重启防火墙 ``` ### 客户端配置 1,配置密码文件 ``` vi /etc/rsyncd.secrets #这里也是创建密码文件,文件名字自定义,内容需要填目标服务授权密码 nango #这里是服务端rsync服务授权密码 ``` 2,更改密码文件权限 ``` chmod 0600 /etc/rsyncd.secrets #更改文件权限 ``` 客户端只需要配置下密码文件即可,到这里我们就配置好了RSync了,接下来可以简单测试下了 ### 简单用法: ``` 拉取服务端数据:rsync [OPTION…] [USER@]HOST::MODULE[:SRC] [DEST] 推送本地数据 :rsync [OPTION…] SRC… [USER@]HOST:DEST 在服务端/home/test目录下新建test.txt文件,然后我们在客户端这样访问: ``` ``` rsync -vzrtopg —progress —password-file=/etc/rsyncd.secrets nango@ip::test /home/test ``` 结果如下: ``` receiving incremental file list created directory /home/test ./ test.txt 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2) sent 77 bytes received 150 bytes 12.97 bytes/sec total size is 0 speedup is 0.00 证明我们已经同步成功; ``` 如果要同步本地的文件到服务端,只需要这样(修改下test.txt文件): ``` rsync -vzrtopgu —password-file=/etc/rsyncd.secrets /home/test/ nango@ip::test ``` ``` sending incremental file list ./ test.txt sent 92 bytes received 30 bytes 0.65 bytes/sec total size is 6 speedup is 0.05 ``` 证明我们已经部署成功,可以实现代码的同步工作了。对我来说,我可以抛弃FTP了:) > 特别说明: 服务端的配置文件中用户必须在系统中是存在的 服务端要同步的文件对于授权用户必须是可读写的,最好所属用户为授权用户;如果授权用户对该文件没有读写权限,则在同步过程中会报错rsync error: some files/attrs were not transferred /home/test/ 和 /home/test 同步的文件不相同,不带‘/’则会连带test目录一块同步上去,带上则只会同步test目录下的内容 如果你的目录结构很深,而你只想同步指定目录怎么办?! RSync可以同步指定的目录,比如我的项目中更改了public/template/blog/css/中的文件,而我也只想同步这个文件夹到服务器中,示例如下: ``` rsync -rvztopgu —password-file=/etc/rsyncd.secrets /public/template/blog/css/ rsync://nango@ip:/test/public/template/blog/css ``` *这里的rsync://不能省略,否则会按照ssh(22端口)方式连接服务端进行传输,通常会报错,所以这里要指定;ip(根据你的实际指定)后跟‘/test’,test是你服务端配置的模块名,test后边的路径是以你服务端指定的path的相对路径。* RSync的功能很强大,参数也很多,有兴趣的同学可以系统的学习下,这里就不陈述了。 (以上配置参照网上搜索的技术文章,整理、实验而成,在centos7下亲测可用)
NANGO
首 页
编程
聊天室
简介:
欢迎大家光临nango的博客,该博客由NoneCms搭建而成。
文章分类
PHP
js
centos
Python
MySQL
Laravel
最新文章
NoneCms 重大bug更新
docker compose编排的php开发环境
NoneCms 基于workerman的聊天室具体使用
centos7 + sendmail + php mail()函数实现邮件发送
文章归档
2018-12 (2)
2018-09 (1)
2018-01 (1)
2017-10 (1)
2017-07 (2)
2017-06 (2)
2017-03 (1)
2017-02 (2)
2017-01 (2)
2016-11 (4)
2016-10 (5)
2016-09 (3)
您的浏览器不支持 canvas.
© Nango
NANGO
文章分类