sersync+rsync实现文件自动同步

这篇具有很好参考价值的文章主要介绍了sersync+rsync实现文件自动同步。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、rsync介绍

rsync是类unix系统下的数据备份工具。其首先通过对数据文件进行块划分(通常512字节为一个数据块),然后计算每一个数据块的校验码(有两个校验码:一强一弱,弱校验码用来证明不同,强校验码用来证明相同),远程主机记录每次同步后各数据块的校验码,在下次同步时进行校验码的比较,依此来实现真正的增量备份。rsync的增量同步算法原理可参考下面这篇博客,里边有很详细的介绍。

rsync算法原理和工作流程分析 - 骏马金龙 - 博客园​www.cnblogs.com/f-ck-need-u/p/7226781.html​编辑

rsync有多种工作模式:

1)借用ssh推送或拉取文件(和scp的用法差不多),示例如下:

# 将本机/opt/test/目录下的所有内容同步至远程主机的/opt/test/目录下,但是rsync只支持向下创建一层目录
# 如果/opt/目录存在,则会在远程主机向下创建test目录,如果/opt/目录不存在,则会直接报错
rsync  -av /opt/test/ root@192.168.10.1:/opt/test/

2)作为客户端,拉取远程rsync服务test模块监控目录下的文件到本机的/opt/backup/test目录下,实例如下:

/usr/bin/rsync --port=8100 -avz --delete --password-file=/opt/rsync.pass iparking@192.168.10.1::test /opt/backup/test/

3)作为服务端(服务的搭建见下文),接收远程主机推送其/opt/source/test目录下的文件至test模块监控的目录下,实例如下:

/usr/bin/rsync -avz --delete /opt/source/test/ --port=8100 iparking@192.168.10.1::test  --password-file=/opt/rsync.pass

2、sersync介绍

sersync是借用inotify对文件系统的操作监控和rsync工具,实现文件的远程实时同步。

先简单介绍一下inotify,它是一个Linux的内核特性,通过inode实现对文件系统的监控,常见的事件监听类型有:

  • access:读取文件或目录内容
  • modify:修改文件或目录内容
  • attrib:文件或目录的属性改变
  • close_write:修改真实文件内容
  • close_nowrite:文件或目录关闭,在只读模式打开之后关闭的
  • close:文件或目录关闭,不管读或是写模式
  • open:文件或目录被打开
  • moved_to:文件或目录移动到
  • moved_from:文件或目录从移动
  • move:移动文件或目录移动到监视目录
  • create:在监视目录下创建文件或目录
  • delete:删除监视目录下的文件或目录
  • delete_self:文件或目录被删除,目录本身被删除

检验Linux内核是否支持inotify,通过以下命令:

grep CONFIG_INOTIFY_USER /boot/config-xxx
# 如果返回【CONFIG_INOTIFY_USER=y】,则代表支持inotify

sersync就是通过inotify机制实现对指定目录的实时监控,然后借用rsync客户端推送文件到指定的rsync服务端,实现文件的自动同步。

安装包下载地址:https://code.google.com/archive/p/sersync/downloads

3、实践操作

假设有A(192.168.10.1)、B(192.168.10.2)两台主机,A作为源文件存储主机,B作为备份主机。需要在B主机启动一个rsync服务,在A主机配置sersync。下面开始配置(均用root):

主机B配置(备份目录为/opt/backup_data,rsync服务根目录为/opt/rsync):

# 0、进入服务根目录,没有就创建
cd /opt/rsync
# 1、将用户名和密码写入密码文件,该文件权限必须是600
echo abc:123456 > rsyncd.secrets
chmod 600 rsyncd.secrets
# 2、完善配置文件(可参考/etc/rsyncd.conf)
cat >rsyncd.conf<<EOF
#数据传输所使用的用户,普通用户启动时不用指定
uid = root
#数据传输所使用的用户组,普通用户启动时不用指定
gid = root
#若为yes,需要用root权限进行chroot设置,将根映射到path参数路径下
use chroot = no
#并发连接数
max connections = 4
#进程号保存文件
pid file = /opt/rsync/rsyncd.pid
#日志文件
log file = /opt/rsync/rsyncd.log
#监听端口
port = 8100
#IP地址
address = 192.168.10.2
#是否允许客户端上传数据,yes表示不允许
read only = no
#允许连接服务器的账户,即密码文件中的用户
auth users = abc
#密码验证文件,仅在设置auth users后有效
secrets file = /opt/rsync/rsyncd.secrets
#允许同步主机列表
hosts allow =  192.168.10.1
#拒绝列表
hosts deny =  *
[test]
# test模块所监控的目录
path = /opt/backup_data
EOF
# 3、启动服务,可以查看8100端口是否启用判断服务是否启动成功
/usr/bin/rsync --daemon --config=/opt/rsync/rsyncd.conf

主机A配置(待同步目录为/opt/source_data,sersync服务根目录为/opt/sersync):

# 0、进入根目录,没有则创建
cd /opt/sersync
# 1、将至前下载的安装包解压至该目录(安装包中两个文件:sersync2和confxml.xml)
# 2、创建B主机rsync服务的密码文件,权限同样必须是600
echo 123456 > rsync.pass
chmod 600 rsync.pass
# 3、修改配置文件confxml.xml,替换<sersync>标记内的内容如下
<sersync>
        <!--指定本地待同步目录及远程rsync服务地址及模块名-->
        <localpath watch="/opt/source_data">
            <remote ip="192.168.10.2" name="test"/>
        </localpath>
        <rsync>
            <commonParams params="-artuz"/>
            <!--指定密码文件及端口号-->
            <auth start="true" users="abc" passwordfile="/opt/sersync/rsync.pass"/>
            <userDefinedPort start="true" port="8100"/>
            <timeout start="false" time="100"/>
            <ssh start="false"/>
        </rsync>
        <!--同步失败后,日志存放文件,每60分钟重试一次-->
        <failLog path="/opt/sersync/rsync_fail_log.sh" timeToExecute="60"/>
        <crontab start="false" schedule="600">
            <crontabfilter start="false">
            <exclude expression="*.php"></exclude>
            <exclude expression="info/*"></exclude>
            </crontabfilter>
        </crontab>
        <plugin start="false" name="command"/>
    </sersync>
# 4、启动服务
/opt/sersync/sersync2 -r -d -o /opt/sersync/confxml.xml

至此,就可以实现当A主机/opt/source_data目录下的文件发生变化时,实时将变化同步至B主机的/opt/backup_data目录下。

同样,也可以在A主机搭建rsync服务,在B主机启动sersync,实现A、B主机的双向实时同步。文章来源地址https://www.toymoban.com/news/detail-804869.html

到了这里,关于sersync+rsync实现文件自动同步的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Rsync实现windows文件同步

    服务端:本机 ip:192.168.182.1 客户端:虚拟机 ip:192.168.182.130 安装rsync 下载地址:https://gitee.com/buchengfeng/cwRsync?_from=gitee_search 下载内容如下 cwRsyncServer_4.0.5_Installer.zip 为服务端软件 cwRsync_4.0.5_Installer.zip为客户端软件 服务端安装 一路next,然后到安装目录中配置conf文件 需要关注下

    2024年02月11日
    浏览(36)
  • 【Linux】企业实战项目rsync+inotify实现实时同步(inotify安装及介绍、rsync + inotify 实现实时同步、rsync + inotify实现开机自启 )

    rsync与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。 随着应用系统规模的不断扩大,对数据的安全性和可

    2024年02月04日
    浏览(44)
  • 从小白到大神之路之学习运维第59天--------inotify+rsync同步和实时同步(单台同步和多台同步)

    第三阶段基础 时  间:2023年7月13日 参加人:全班人员 内  容: inotify+rsync同步和实时同步 目录 一、rsync远程同步 二、源端到发起端同步 安装部署: 源端(服务端): (单台客户端)发起端进行同步: 发现源更新数据自动触发更新 三、单台源端,多台客户端同步 1、rsy

    2024年02月16日
    浏览(46)
  • 如何在Linux机器上使用ssh远程连接Windows Server服务器并使用rsync同步文件

       当前在研究goploy自动化开源部署工具,该工具部署在linux机器上,而要部署服务的目标服务器有一部分是windows server服务器,goploy自动化部署,使用rsync部署方式,底层依赖于ssh远程连接目标服务器,所以,要实现自动化部署,必须先实现ssh远程连接目标windows server服务器

    2024年02月05日
    浏览(68)
  • Rsync 文件同步(四):实时同步 Rsync + Lsyncd

    Lsyncd 使用文件系统事件接口(inotify 或 fsevents)来监视对本地文件和目录的更改 默认同步方法是 rsync 整理文件系统时事件性能好,会以1个或者多个进程同步到目标服务器的文件系统中 是一种轻量级的实时镜像解决方案 官网地址:https://lsyncd.github.io/lsyncd/ 开源许可证:GPLv

    2024年01月16日
    浏览(35)
  • 【Linux】Rsync远程同步及备份工具(Rsync简介、Rsync安装、rsync认证方式)

    rsync(Remote synchronization)是Liunx/Unix下的一个 远程数据同步工具 。 它可通过LAN/WAN(局域网/广域网) 快速同步多台主机间的文件和目录 ,并适当利用rsync算法(差分编码)以减少数据的传输。 rsync算法并不是每一次都整份传输,而是 只传输两个文件的不同部分 ,因此其传输

    2024年02月13日
    浏览(38)
  • Linux服务器同步Windows目录同步-rsync

    最近需要,Linux的服务器同步Windows的一个目录。查了下,大概有三种方法:网盘同步;rsync同步;挂载目录。 网盘同步,可以选择搭建一个Nextcloud 。但是问题在于,我需要的是,客户端和服务端的同步,而不是客户端和客户端的同步。服务端没有界面,安装客户端的网盘软件

    2024年02月11日
    浏览(60)
  • Rsync 文件同步(一):系统基本操作

    Rsync (remote sync) UNIX 及类 UNIX 平台下一款数据镜像备份软件 很神奇 不同于 FTP 或其他文件传输服务进行全量备份,它可以根据数据的变化进行差异备份 可以使用它进行本地数据或远程数据的复制 可以使用 SSH 安全隧道进行加密数据传输 Rsync 服务端定义源数据,客户端仅在

    2024年02月02日
    浏览(43)
  • 使用rsync一直同步阿里云的文件

    要使用 rsync 实时同步阿里云服务器上的文件,你可以遵循以下步骤: 确保本地计算机和阿里云服务器都安装了 rsync 。如果没有安装,请在 Linux 系统上使用以下命令安装: 对于基于 RPM 的 Linux 发行版(例如 CentOS ),使用以下命令安装: 生成 SSH 密钥对,以便在本地计算机和

    2024年02月11日
    浏览(40)
  • Linux服务器与群晖rsync同步,linux服务器通过rsync的方式备份数据到群晖

    准备需要备份linux服务器的配置,安装rsync即可 1.登录群晖服务器,点击套件中心  2.点击红色框框,跳转到套件界面 3.点击Active Backup for Business 4.点击文件服务器-添加服务器-选择rsync服务器-下一步 5.填写远程服务器信息 6.在群晖系统上创建备份任务 打开群晖的Active Backup fo

    2024年02月10日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包