Home >Backend Development >PHP Tutorial >Design and implementation of real-time file synchronization scheme between two servers under Linux

Design and implementation of real-time file synchronization scheme between two servers under Linux

WBOY
WBOYOriginal
2016-07-30 13:31:281152browse

Original address http://blog.csdn.net/5iasp/article/details/13630927

Design and implementation of real-time file synchronization scheme for two servers under Linux


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 keep a certain file directory of the two servers synchronized in real time


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


Need to install software:

1. rsync synchronization software


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


Source server: It is an rsync client, not Need to configure

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


After installation, you need to create a new configuration file: /etc/rsyncd.conf

The configuration file is in: /etc/


The content of the file is as follows:

uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file=/var/run/rsyncd.pid
lock file=/var/run/ rsyncd.lock
log file= =/var/run/rsyncd.log

[www]
path= /opt/bak/test
comment= analyze
read only = false
hosts allow = *


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-220.4.1.el6.x86_64


means that version 2.6.32 is greater than 2.6.13, so 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

There are three outputs, which means inotify is supported by default and the inotify-tools tool can be installed.


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

means the installation is successful.

Note: Inotify 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.2::www/

echo " ${file} was rsynced" >>/opt/soft/log/rsync.log 2>&1

done


Note : The www here is the module name configured in the target server/etc/rsyncd.conf: [www]

Give execution permissions: chmod +x inotify_bak.sh

Then execute: 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 in the source server directory and files, the inotify_bak.sh script will detect it and 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

The above introduces the design and implementation of the real-time synchronization scheme of files between two servers under Linux, including various aspects. I hope it will be helpful to friends who are interested in PHP tutorials.

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