这个文章主要是保存一份inotifywait+rsync同步文件的例子。
#!/bin/sh
host=16
src=/data/www/project_path/
des=/data/www/project_path/
user=ubuntu
inotifywait -mrq --format '%Xe %w%f' -e modify,create,delete,move $src | while read files
do
INO_EVENT=$(echo $files | awk '{print $1}')
INO_FILE=$(echo $files | awk '{print $2}')
filepath=$(dirname ${INO_FILE})/
#此版本只进行更新,新增同步其他不管,删除暂时不管
if [ $INO_EVENT == "CREATE" ] || [ $INO_EVENT == "MODIFY" ] || [ $INO_EVENT == "CLOSE_WRITE" ] || [ $INO_EVENT == "MOVED_TO" ];then
rsync -avzc $filepath ${user}@${host}:$filepath
fi
#服务器需要的文件权限跟本地不一样,因为这个脚本没有做权限同步
if [ ! -d $INO_FILE ];then
ssh $user@$host "sudo chmod 666 $INO_FILE"
else
ssh $user@$host "sudo chmod 775 $INO_FILE"
fi
#打日志
echo "${INO_FILE} was rsynced" >> /tmp/logs/project_path/rsync.log
done