Home >Operation and Maintenance >Linux Operation and Maintenance >Introduction to the method of real-time synchronization of two servers under Linux

Introduction to the method of real-time synchronization of two servers under Linux

巴扎黑
巴扎黑Original
2017-08-22 13:13:584479browse

Assume the following requirements:

Assume two servers:

192.168.0.1 The source server has the directory /opt/test/

192.168.0.2 The target server has the directory /opt/bak/test/

The purpose of implementation is to maintain real-time synchronization of a certain file directory of the two servers

Implementation method: Achieved through the combination of rsync+inotify-tools

Preparation work:

First of all, you need to add a trust relationship to the two machines. The specific method has been introduced in the previous article

View details: linux adds trust relationship without password login

Need to install software:

1. rsync synchronization software

Needs to be installed on both the source server and target server

Source server: It is an rsync client, not required Configuration

Target server: It is the rsync server. You need to configure the contents in /etc/rsyncd.conf

2. inotify-tools tool

This tool is for real-time file monitoring The tool requires Linux operating system kernel support, and kernel support requires at least version 2.6.13

Check whether the operating system supports it, execute as follows:

uname -r View version

Return:

    2.6.32-358.6.1.el6.x86_64

It means that version 2.6.32 is greater than 2.6.13, and it is supported.

Execution:

    ll /proc/sys/fs/inotify
    total 0
    -rw-r--r-- 1 root root 0 Oct 18 12:18 max_queued_events
    -rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_instances
    -rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_watches

If there are three outputs, it means that inotify is supported by default and you can install the inotify-tools tool.

If it is not supported, you need to use a new version of the linux operating system

If the version meets the requirements, it can be installed.

After installing inotify-tools, the following two files will be generated in the relevant installation directory:

    ll /usr/local/bin/
    total 88
    -rwxr-xr-x 1 root root 44327 Oct 10 15:32 inotifywait
    -rwxr-xr-x 1 root root 41417 Oct 10 15:32 inotifywatch

It means the installation is successful.

Note: It needs to be installed on the source server, and inotify does not need to be installed on the target server.

3. Related scripts:

Create a new script on the source server:

inotify_bak.sh

    #!/bin/bash
    src=/opt/test/
    /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src |  while read file
    do
          /usr/bin/rsync -arzuq $src 192.168.0.1::www/
          echo "  ${file} was rsynced" >>/opt/soft/log/rsync.log 2>&1
    done

Grant execution permissions: chmod +x inotify_bak.sh

Then execute: nohup inotify_bak.sh & Put it in the background for execution

4. About starting

Target server: Start the rsync background service first: / usr/bin/rsync --daemon

Source server: Execute inotify_bak.sh &

5. Test:

Create a new directory and file in the source server directory, inotify_bak. The sh script will detect it and then synchronize it to the relevant directory of the target server

You can view the log file: /opt/soft/log/rsync.log The command is as follows: observe the real-time synchronization situation.

    tail -f  /opt/soft/log/rsync.log

Error resolution:

/usr/local/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0: cannot open shared object file: No such file or directory

This is because the library file cannot be found. Just make a soft connection

ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0

The above is the detailed content of Introduction to the method of real-time synchronization of two servers under Linux. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn