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
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:
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
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.
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
Target server: Start the rsync background service first: / usr/bin/rsync --daemon
Source server: Execute inotify_bak.sh &
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
/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!