服务器文件双向、多向同步rsync+sersync

简介:

服务器文件双向、多向同步rsync+sersync

  1. 安装前的准备(各同步服务器都配置)

    # 因为这会降低服务器异常报警的级别,所以记得添加报警机制
    # SELINUX=disabled(完全不验证)
    vim /etc/sysconfig/selinux
    
    SELINUX=permissive
    
    ESC
    :wq
    
    getenforce
    setenforce 0
    getenforce
  2. 安装rsync(各同步服务器都装)

    yum install rsync -y
  3. 配置rsyncd.conf(各服务器都配置)

    # uid、gid决定被同步过来的文件所属用户所属组
    # []中是一个自己指定的同步计划的名字(字母数字下划线)
    # path是被同步文件的存放位置
    # hosts allow这里注意,每一台服务器都只写其它服务器IP
    # hosts allow、hosts deny格式
        # *(所有IP)
        # 192.168.0.2/24(IP段)
        # 192.168.0.2 192.168.0.3(指定多个IP)
    
    vim /etc/rsyncd.conf
    
    uid = www
    gid = www
    use chroot = yes
    max connections = 0
    log file = /tmp/rsyncd.log
    motd file = /tmp/rsyncd.motd
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsyncd.lock
    secrets file = /etc/rsyncd.pswd
    
    [tongbu1]
        path = /www/file1
        comment = xoyo video files
        ignore errors = yes
        read only = no
        hosts allow = 192.168.0.x 192.168.0.x
        hosts deny = *
    
    [tongbu2]
        path = /www/file2
        comment = xoyo video files
        ignore errors = yes
        read only = no
        hosts allow = 192.168.0.x 192.168.0.x
        hosts deny = *
    
    ESC
    :wq
  4. 配置密码文件

    vim /etc/rsyncd.pswd
    
    root:**************
    
    ESC
    :wq
    
    chmod 600 /etc/rsyncd.pswd
    
    vim /etc/sersyncd.pswd
    
    **************
    
    ESC
    :wq
  5. 创建同步目录(各服务器都创建)

    useradd www
    mkdir /www
    mkdir /www/file1
    mkdir /www/file2
    chown -R www:www /www/file1
    chown -R www:www /www/file2
  6. 启动rsync(各服务器都启动)

    rsync --daemon
  7. 查看占用的端口号

    netstat –apn|grep rsync
  8. 开启端口

    yum install firewalld -y
    systemctl enable firewalld
    systemctl start firewalld
    firewall-cmd --zone=public --permanent --add-port=873/tcp
    firewall-cmd --reload
  9. 创建单元文件(如果是用yum装的的rsync,则跳过该步骤)

    # 进入单元文件目录,创建rsync单元文件
    cd /etc/systemd/system
    vim rsyncd.service
    
    [Unit]
    Description=Start rsync on boot.
    After=default.target network.target
    
    [Service]
    User=root
    Group=root
    Type=forking
    PIDFile=/var/run/rsyncd.pid
    ExecStart=/usr/bin/rsync --daemon
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=false
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    ESC
    :wq
    
    # 修改文件权限为只有root用户可以编辑该文件
    chown -R root:root /etc/systemd/system/rsyncd.service
    chmod -R 644 /etc/systemd/system/rsyncd.service
    systemctl daemon-reload
  10. 启动并设置开机启动

    systemctl enable rsyncd
    systemctl start rsyncd
  11. 安装sersync(各服务器都装)

    # 源码
    https://code.google.com/archive/p/sersync/
    # 百度云
    https://pan.baidu.com/s/1qrwTM40aJ8ckmT84PpiNjg
    # 64位最新
    https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sertongbu2.5.4_64bit_binary_stable_final.tar.gz
    # 32位最新
    https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sertongbu2.5_32bit_binary_stable_final.tar.gz
    # 下载安装
    wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sertongbu2.5.4_64bit_binary_stable_final.tar.gz
    tar -zxvf sertongbu2.5.4_64bit_binary_stable_final.tar.gz
    mv GNU-Linux-x86/ /usr/local/sersync
  12. 配置sersync(各服务器都执行)

    cd /usr/local/sersync
    cp /usr/local/sersync/confxml.xml /usr/local/sersync/tongbu1.xml
    cp /usr/local/sersync/confxml.xml /usr/local/sersync/tongbu2.xml
    
    vim /usr/local/sersync/tongbu1.xml
    
    <sersync>
        <localpath watch="/www/file1">
            <!--这里注意,每一台服务器都只写其它服务器IP-->
            <remote ip="192.168.0.2" name="tongbu1"/>
            <remote ip="192.168.0.3" name="tongbu1"/>
            <remote ip="192.168.0.4" name="tongbu1"/>
        </localpath>
        <rsync>
            <commonParams params="-artuz"/>
            <!--如果设置了密码,则密码文件的路径、内容必须正确 start="true"-->
            <auth start="true" users="root" passwordfile="/etc/sersyncd.pswd"/>
            <userDefinedPort start="false" port="874"/>
            <timeout start="false" time="100"/>
            <ssh start="false"/>
        </rsync>
        <!--60分钟进行一次同步失败文件重新同步-->
        <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/>
        <!--600分钟进行一次全目录同步-->
        <crontab start="true" schedule="600">
            <crontabfilter start="false">
                <exclude expression="*.php"></exclude>
                <exclude expression="info/*"></exclude>
            </crontabfilter>
        </crontab>
        <!--因为这里start="false" 所以下面plugin的配置无需关心-->
        <plugin start="false" name="command"/>
    </sersync>
    
    ESC
    :wq
    
    vim /usr/local/sersync/tongbu2.xml
    
    <sersync>
        <localpath watch="/www/file2">
            <!--这里注意,每一台服务器都只写其它服务器IP-->
            <remote ip="192.168.0.2" name="tongbu2"/>
            <remote ip="192.168.0.3" name="tongbu2"/>
            <remote ip="192.168.0.4" name="tongbu2"/>
        </localpath>
        <rsync>
            <commonParams params="-artuz"/>
            <!--如果设置了密码,则密码文件的路径、内容必须正确 start="true"-->
            <auth start="false" users="root" passwordfile="/etc/sersyncd.pswd"/>
            <userDefinedPort start="false" port="874"/>
            <timeout start="false" time="100"/>
            <ssh start="false"/>
        </rsync>
        <!--60分钟进行一次同步失败文件重新同步-->
        <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/>
        <!--600分钟进行一次全目录同步-->
        <crontab start="true" schedule="600">
            <crontabfilter start="false">
                <exclude expression="*.php"></exclude>
                <exclude expression="info/*"></exclude>
            </crontabfilter>
        </crontab>
        <!--因为这里start="false" 所以下面plugin的配置无需关心-->
        <plugin start="false" name="command"/>
    </sersync>
    
    ESC
    :wq
  13. 启动sersync(各服务器都执行)

    /usr/local/sersync/sertongbu2 -d -r -o /usr/local/sersync/tongbu1.xml
    /usr/local/sersync/sertongbu2 -d -r -o /usr/local/sersync/tongbu2.xml
  14. 测试

    # 在任意一台服务器执行
    su www
    cd /www/file1
    echo test > test.txt
    ls
    # 然后在其他每台服务器执行
    cd /www/file1
    ls
    # 如果结果中包含
    test.txt
    # 并且文件内容为'test'
    # 即表示安装成功
  15. 配置开机启动rsync、sersync

    # 开机启动rsync
    systemctl enable rsyncd
    systemctl start rsyncd
    
    # 开机启动sersync
    vim /etc/rc.local
    
    /usr/local/sersync/sertongbu2 -d -r -o /usr/local/sersync/tongbu1.xml
    /usr/local/sersync/sertongbu2 -d -r -o /usr/local/sersync/tongbu2.xml
    
    ESC
    :wq
    
    chmod +x /etc/rc.d/rc.local
  16. 关于日志中部分提示的说明

    # 文件同步时会有如下提示
    # connect from UNKNOWN (192.168.0.3)
    # rsync to tongbu1/ from unknown (192.168.0.3)
    # connect from UNKNOWN (192.168.0.4)
    # rsync to tongbu1/ from unknown (192.168.0.4)
    
    # 虽然提示连接到未知ip,实际上只是因为没有加
    # 虚拟域名映射,完全不会影响rsync功能的使用。
    # 如果一定要处理的话,可以修改/etc/hosts文件
    # 这样unknown就会变成你设置的虚拟域名了
    vim /etc/hosts
    
    192.168.0.2 file2
    192.168.0.3 file3
    192.168.0.4 file4
    
    ESC
    :wq
目录
相关文章
|
2月前
|
存储 UED Windows
Windows服务器上大量文件迁移方案
Windows服务器上大量文件迁移方案
105 1
|
3月前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
85 5
|
26天前
|
Python
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
这篇博客文章是关于如何使用Flask框架上传特征值数据到服务器端,并将其保存为txt文件的教程。
28 0
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
|
20天前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
51 4
|
3月前
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
152 1
Linux 服务器下载百度网盘文件
|
3月前
|
存储 安全 文件存储
【服务器数据恢复】Apple苹果Xsan文件系统卷宗误操作导致文件丢失数据恢复案例
客户因误操作删除了macOS服务器上的重要图片和视频文件,需紧急恢复。Xsan文件系统作为苹果专为高负载环境设计的64位簇文件系统,在未有专门恢复工具的情况下,常规RAW恢复仅能提取小部分连续存储的小文件,且无目录结构。通过专业的数据恢复流程,包括安全挂载、阵列重组,并使用专用工具解析文件系统以恢复目录结构,最终成功恢复丢失的文件。此案例突显了Xsan文件系统的特点及其恢复难度。
32 1
|
3月前
|
数据可视化 Python
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
61 0
|
3月前
|
Java
Java模拟文件发送给服务器,服务器将文件转发给其他用户,并保存到服务器本地,其他用户可以接收,并保存到本地磁盘,支持各种文件格式,并解决通信中服务器怎么区分客户端发来的文件类型
Java模拟文件发送给服务器,服务器将文件转发给其他用户,并保存到服务器本地,其他用户可以接收,并保存到本地磁盘,支持各种文件格式,并解决通信中服务器怎么区分客户端发来的文件类型
|
3月前
|
Linux
Linux——服务器时间不同步
Linux——服务器时间不同步
42 0