Environment Description: Existing two servers, to achieve real-time synchronization of MP3 files. You can use rsync to do synchronization, but not real time, in order to achieve real-time synchronization, we use INotify to monitor the changes that need to be synchronized, INotify is just a module in the kernel to monitor the changes in files, provides the API to monitor file changes, and to connect to this API, The Inotify-tools tool needs to be installed. Can achieve the new file, delete, modify, change attributes, etc., the function is very powerful. Now need a server as the content publishing side, to change the file, through rsync real-time synchronization to the content server.
==========================================
Content Server: 1.1.1.1 (Ubuntu 12.04 x86-64)
Publisher: 1.1.1.2 (Ubuntu 12.04 x86-64)
==========================================
First, configure Content Server 1.1.1.1
Install Rsync
# sudo apt-get install rsync
Provide rsync configuration files
# mkdir/etc/rsyncd/
# vim/etc/rsyncd/rsyncd.conf
# section 1:global settings
port = 873
uid = root
gid = root with
chroot = yes
Read Only = no
max Connections = 7
pid file =/var/run/rsyncd.pid
log file =/var/log/rsyncd.log
hosts allow = *
transfer lo gging = yes
log format =%t%a%m%f%b
syslog facility = local3 timeout
=
# section 2:directory To is synced
[MP3]
path =/data/mp3
list = False
Ignore errors = yes
auth users = Syncuser
s Ecrets file =/etc/rsyncd/rsyncd.pass
Provides the password file/etc/rsyncd/rsyncd.pass specified by Secrets file, which resembles the following:
Syncuser:iamok
This column more highlights: http://www.bianceng.cnhttp://www.bianceng.cn/Servers/zs/
Where the colon before the user name, after the colon is the corresponding user's password. This file cannot be accessed by any other user, so you can modify it with the following command:
# chmod 600/etc/rsyncd/rsyncd.pass
Start the Rsync service
#/usr/bin/rsync--daemon--config=/etc/rsyncd/rsyncd.conf
Verify that the service is an account
root@node1:/etc/rsyncd# NETSTAT-NUTLP | grep:873
TCP 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2357/rsync
Join power-on Boot
# echo "/usr/bin/rsync--daemon--config=/etc/rsyncd/rsyncd.conf" >>/etc/rc.local
Second, configure the publishing server 1.1.1.2
Installing Rsync and Inotify-tools
# sudo apt-get install rsync inotify-tools
# mkdir/etc/rsyncd/
# Vim/etc/rsyncd/rsyncd.pass
Iamok
Set up automatic synchronization scripts, use Inotifywait Monitor directory, call rsync sync changed files when monitoring directory changes
# vim/var/tmp/auto_sync.sh
#!/bin/bash
#
desthost=1.1.1.1
desthostdir=/data/mp3/
srcdir=/data/mp3/
INOTIFYWAIT-MR-- Timefmt '%d/%m/%y%h:%m--format '%T%w%f '-e close_write,modify,delete,create,attrib $SRCDIR | While read DATE time DIR FILE; Do
filechange=${dir}${file}
rsync-avz--password-file=/etc/rsyncd/rsyncd.pass $FILECHANGE syncuser@${ Desthost}::mp3 &>/dev/null && \
echo "at ${time} on ${date}, file $FILECHANGE is backed up via rsync" >>/var/log/mp3sync.log Done
chmod u+x/var/tmp/auto_sync.sh
#/var/tmp/auto_sync.sh &
Boot Auto Run
# echo '/var/tmp/auto_sync.sh & ' >>/etc/rc.local
Summary: The above can achieve real-time synchronization of files, if the two ends of the file inconsistencies, it is recommended to use rsync to do a full synchronization, because the method written in this article, only to change the file synchronization, and not to scan the entire directory.
If you want to monitor multiple directory changes on the same machine, inotifywait is also supported, with multiple directories separated by spaces. Synchronization, but also can sync to more than one server, the script to write more than rsync on it.
This article comes from "Acridine a Pooh" blog, please be sure to keep this source http://gm100861.blog.51cto.com/1930562/916246