Home >Operation and Maintenance >Linux Operation and Maintenance >How to implement real-time file synchronization between two servers under Linux

How to implement real-time file synchronization between two servers under Linux

黄舟
黄舟Original
2017-06-07 10:31:002583browse

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 file directory on the two servers

Implementation method: through rsync+inotify -Tools combination to achieve

Preparation work:

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

View details: linuxAdd trust relationship and log in without password

RequiresInstallationsoftware:

1. rsync synchronization software

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

Source server: It is an rsync client, no configuration is required

Target server: It is an rsync server, it needs to be configured in /etc/rsyncd.conf Content

2. inotify-tools tool

This tool is a real-time file monitoring tool that requires Linux operating system kernel support. 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

If version 2.6.32 is greater than 2.6.13, 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: first Start the rsync background service: /usr/bin/rsync --daemon

Source server: Execute inotify_bak.sh &

5. Test:

Create a new file in the source server directory Directories and files, the inotify_bak.sh script will detect them and then synchronize them to the relevant directories 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 How to implement real-time file synchronization between 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