rsync是远程自动同步工具,同时也能实现本地文件的复制,能够实现cp ,scp的功能,但是在远程同步上rsync要scp高效,因为scp能实现增量传输,每次都得全量传输,如果传输大文件时会很消耗网络带宽(虽然scp可以进行限速传输【scp  -l 】), rsync可以实现增量同步传输,在第一次全量同步后,可以设定定时同步任务进行增量同步。

  

  一般场景下,通过rsync可以结合crontab实现按时自动备份,在远程自动同步的场景下,rsync 需要以守护进程的方式来运行,本文记录实现异地自动备份的过程。

生产服务器主机A的地址:192.168.214.190  :centos7.4

备份数据主机B的地址:192.168.214.187     :centos6.9

  客户端和服务端都要安装rsync,安装完后有些系统不会生成rsyncd.conf,需要自己创建在 /etc/rsync.d/rsyncd.conf

【在centos7.4上安装rsync会默认生成/etc/rsyncd.conf文件,但是在centos6.9上安装后则不会生成,并且,如果在要自己定义文件位置,以守护进程方式启动,那么任然要在/etc/下新建一个rsyncd.conf的文件,否则无法启动。】

  服务端安装rsync:

[root@localhost ~]#yum install rsync -y
 

  创建配置文件

[root@yufu ~]# mkdir -p /etc/rsync.d
[root@yufu ~]# touch /etc/rsync.d/rsyncd.conf
[root@yufu ~]# chmod /etc/rsync.d/rsync.conf

  编辑配置文件内容

vim /etc/rsync.d/rsyncd.conf

log file = /var/log/rsyncd.log     #设置日志文件路径
pid file = /var/run/rsyncd.pid   #设置pid进程位置
lock file = /var/run/rsync.lock   #锁文件存放位置 [bak]                   #定义一个模块
path=/opt/server            #要同步文件的位置
uid = root               #运行rsync的用户
gid = root               #运行rsync的用户组
ignore = errors            #忽略一些非关键的错误
read only = no             #no表示允许可读可写,yes表示客户端只能读,
write only = no            #no表示允许客户端可以下载文件,设置yes则不能下载
host allow = *             #允许连接的主机, ‘*’ 表示允许任何主机连接,或者定义一个网段
max connections =           #设置允许连接到主机的最大连接数
host deny = 192.168.22.21      #禁止连接的服务器
list = false              #禁止显示列表模块
auth users = feng           #连接该模块的用户,多个用户用空格或逗号分开
secrets file = /etc/rsync.d/server.pass    #创建并指定一个包含“用户名:密码”格式的文件,用户名就是auth users定义的用户,
该用户与linux系统用户无关,文件名称,位置自定义设置,

添加备份用户的用户密码文件,并修改文件权限

echo 'filebak:filebak' > /etc/rsync.d/server.pass
chmod server.pass

  服务端的rsync安装配置好后就可启动了,rsync是以守护进程的方式启动:

[root@localhost ~]#rsync --daemon --config=/etc/rsync.d/rsyncd.conf 

[root@localhost ~]#ps -ef | grep rsync
root : ? :: rsync --daemon --config=/etc/rsync.d/rsyncd.conf
root : pts/ :: grep --color=auto rsync

  到此服务端的的设置完成,接着安装客户端,在备份主机上不用做任何设置,只要安装rsync服务和设置crontab任务计划就可以, 为了在同步的过程中不用输入密码,因此需要在备份主机上创建一个secrets 文件,该文件内容是服务端的rsyncd.conf中“auth users”指定的用户的密码;这个文件名和路径随意指定,只要在执行同步指令时指定即可。

  安装rsync

yum install rsync -y

  向客户端添加同步用户的密码

[root@yufu ~]# echo 'fsz...' > /etc/rsync.d/feng.pass

[root@yufu ~]# chmod  /etc/rsync.d/feng.pass 

在客户端执行同步

[root@yufu ~]# rsync -arzvtopg --delete feng@192.168.214.190::bak /opt/app/ --password-file=/etc/rsync.d/feng.pass
rsync: failed to connect to 192.168.214.190: No route to host ()
rsync error: error in socket IO (code ) at clientserver.c() [receiver=3.0.]

执行报错:原因是服务端的防火墙没有放行策略,关闭防火墙;

[root@localhost ~]#systemctl stop firewalld

再执行:

[root@yufu ~]# rsync -arzvtopg --delete feng@192.168.214.190::bak /opt/app/ --password-file=/etc/rsync.d/feng.pass
receiving incremental file list
./
install-lnmp.sh sent bytes received bytes 990.00 bytes/sec
total size is speedup is 2.37
[root@yufu ~]# cd /opt/app/ && tree
.
└── install-lnmp.sh directories, file
[root@yufu app]# ls
install-lnmp.sh

  客户端设置定时备份:添加crontab任务计划,每天定时同步文件

[root@yufu ~]# crontab -l
*/ * * * * /usr/bin/rsync -arzvtopg --delete feng@192.168.214.190::bak /opt/app/ --password-file=/etc/rsync.d/feng.pass
设置定时同步,作为测试,设置每分钟同步一次

  服务端测试文件更新脚本

#!/bin/bash
dir=/opt/server
cd $dir
for i in $(seq )
do
touch file$i
sleep
done

  测试脚本执行结束后再查看服务端和客户端的目录情况

[root@yufu app]# ls   #客户端
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 install-lnmp.sh tess [root@localhost server]#ls #服务端
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 install-lnmp.sh tess

rsyn远程自动同步的更多相关文章

  1. 使用Clion优雅的完全远程自动同步和远程调试c++

    摘要:在linux上用vim写C++的时候,通常用gdb进行调试,不能随心所欲的看代码和跳转代码以及加watch(也有可能是因为我还没有get正确的使用方法).为此我发现Clion可以做到自动同步本场 ...

  2. LINUX安装SVN+添加自动同步+远程下载最新代码

    LINUX安装SVN+添加自动同步+远程下载最新代码---------------------1. 新建一个用户:svnroot ,以下操作非特别说明皆为root用户操作--------------- ...

  3. Pycharm专业版配置远程服务器并自动同步代码

    一.使用场景 如果每次都在本机上面写代码,然后传到服务器上面,在服务器上面运行就太麻烦了.这样的方式十分繁琐,效率很低. 因此,希望可以像下面一样操作: 可以直接在本机上码代码 自动将代码同步到远程服 ...

  4. Windows远程数据同步工具cwRsync

    1. cwRsync简介cwRsync是Rsync在Windows上的实现版本,Rsync通过使用特定算法的文件传输技术,可以在网络上传输只修改了的文件.cwRsync主要用于Windows上的远程文 ...

  5. Linux下svn提交文件后自动同步更新到网站目录

    有时,对于多文件需要上传到服务器的时候将会很麻烦,但是如果使用svn的钩子脚本就容易实现本地提交svn后,自动同步代码文件到远程服务器的网站目录下,而不必手动上传了. 首先,在网站目录下checkou ...

  6. unison+inotify实现文件双向自动同步

    nfs适合存小图片和小文件,有一个致命的缺点,就是其中一台web服务挂掉之后,会直接导致web页面无法访问,动态的那种数据, 而且数据量很大的数据不适合nfs Unison是一款跨平台(window, ...

  7. 利用svn自动同步更新到网站服务器 -- 网摘

    首先在服务器上安装VisualSVN Server ,根据提示选好安装的路径,一路确定.安装好后运行VisualSVN Server ,在Repositories上点击右键,选择create New ...

  8. 开源API集成测试工具 Hitchhiker v0.3更新 - 自动同步

    Hitchhiker 是一款开源的 Restful Api 集成测试工具,支持Schedule, 数据对比,压力测试,可以轻松部署到本地,和你的team成员一起管理Api. 详细介绍请看: http: ...

  9. [sersync+rsync] centos6.5 远程文件同步部署记录

    针对本地文件的修改,自动同步到远程文件夹,远程备份很方面.研究了下大家的主流同步方案一般是 rsync+inotify和rsync+sersync, 我这里使用sersync的方案,当然大部分都是参照 ...

随机推荐

  1. Django - 回顾(1)- 模型层的Meta选项详解

    一.模型层的Meta选项详解 Django模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.使用方法及参数解释如下: class Book(models.Model): nid ...

  2. python大战机器学习——模型评估、选择与验证

    1.损失函数和风险函数 (1)损失函数:常见的有 0-1损失函数  绝对损失函数  平方损失函数  对数损失函数 (2)风险函数:损失函数的期望      经验风险:模型在数据集T上的平均损失 根据大 ...

  3. myeclipse-9.0安装svn客户端插件

    SVN插件配置到MyEclipse中的步骤 听语音 | 浏览:20471 | 更新:2015-01-09 10:26 | 标签:myeclipse 1 2 3 4 5 6 7 分步阅读 MyEclip ...

  4. myeclipse非正常关闭处理办法

    myeclipse正常或非正常关闭后,再次运行,不显示启动时的logo和读条,进入主页面后程序基本就卡死,无法正常运行,解决办法. 方法一:修改工作空间在刚启动Myeclipse的时候会有一个选择工作 ...

  5. C 碎片三 运算符与表达式

    一.算术运算符 算术运算符:+. -. *. /. %等 加:+ 减: - 乘: * 除: /     除数不能为0 模:%    参与模运算的数据不能为小数 二.赋值运算符 赋值运算符:= 作用: ...

  6. Go 微服务实践

    http://www.open-open.com/lib/view/open1473391214741.html

  7. hibernate课程 初探单表映射3-5 hibernate增删改查

    本节简介: 1 增删改查写法 2 查询load和查询get方法的区别 3 demo 1 增删改查写法 增加 session.save() 修改 session.update() 删除 session. ...

  8. 会话跟踪之Cookie

    一:简介 Cookie主要用来存储用户信息,追踪用户会话.web客户端访问服务端直接采用的协议是Http,Http协议是一种无状态协议,无状态表现在不能够保留用户访问状态,无法记录用户信息.每一次的请 ...

  9. js技巧-使用reduce实现更简洁的数组对象去重和数组扁平化

    Array.prototype.reduce()方法介绍: 感性认识reduce累加器: const arr = [1, 2, 3, 4]; const reducer = (accumulator, ...

  10. Oracle Form个性化案例(一)

    业务场景: 现有Form A,需通过A中的菜单栏中调用另一Form B,需将某值作为参数传入Form B中: