Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能_Linux

来源:脚本之家  责任编辑:小易  

rsync和ssh是两个单独命令。rsync语法:rsync[OPTION].SRC[SRC].DESTor rsync[OPTION].SRC[SRC].[USER@]HOST:DESTor rsync[OPTION].SRC[SRC].[USER@]HOST:DESTor rsync[OPTION].SRC[SRC].rsync:/[USER@]HOST[:PORT]/DESTor rsync[OPTION].[USER@]HOST:SRC[DEST]or rsync[OPTION].[USER@]HOST:SRC[DEST]or rsync[OPTION].rsync:/[USER@]HOST[:PORT]/SRC[DEST]〔options〕我只给你列出-e的参数。e,rsh=COMMAND specify the remote shell to usersync-path=PROGRAM specify the rsync to run on the remote machineexisting skip creating new files on receiverignore-existing skip updating files that already exist on receiverremove-source-files sender removes synchronized files(non-dirs)del an alias for-delete-duringdelete delete extraneous files from destination dirsdelete-before receiver deletes before transfer,not duringdelete-during receiver deletes during transfer(default)delete-delay find deletions during,delete afterdelete-after receiver deletes after transfer,not duringdelete-excluded also delete excluded files from destination dirsignore-errors delete even if there are I/O errorsforce force deletion of directories even if not emptymax-delete=NUM don't delete than NUM filesmax-size=SIZE don't transfer any file larger than SIZEmin-size=SIZE don't transfer any file smaller than SIZEpartial keep partially transferred filespartial-dir=DIR put a partially transferred file into DIRdelay-updates put all updated files into place at transfer's endssh语法:ssh[-1246AaCfgKkMNnqsTtVvXxY][-b bind_address][-c cipher_spec][-D[bind_address:]port][-e escape_char][-F configfile][-i identity_file][-L[bind_address:]port:host:hostport][-l login_name][-m mac_spec][-O ctl_cmd][-o option][-p port][-R[bind_address:]port:host:hostport][-S ctl_path][-w local_tun[:remote_tun]][user@]hostname[command]www.zgxue.com防采集请勿采集本网。

0x0 测试环境

a)Linux可以再正在远行的系统中还原系统,如果当前启动无法启动,可以通过live cd来启动并执行恢复操作 b)操作如下 tar xcpfz backup.tar.gz-C/ c)需要额外创建目录 i. mkdir proc ii. mkdir lost+found

总部生产服务器与分部备份服务器要求实现异地数据备份,环境如下

rsync有六种不同的工作模式: 1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号\":\"分隔符时就启动这种工作模式。如:rsync-a/data/backup 2)使用一个远程shell程序(如rsh、ssh)来实现将

**centos 6.5**

192.168.36.206:/ 改成 192.168.36.206:/

生产服务器目录: /home/zytest/files

语法: rsysnc[options]source path destination path 示例:1-启用压缩 [root@localhost/]#rsync-zvr/home/aloft/backuphomedir rsync命令可以用来备份linux。你可以在cron中使用rsync安排备份。

备份服务器目录: /home/zytest/files

没有比文档更详细的了http://linux.die.net/man/1/rsync 如果只是想做简单的文件(夹)同步,使用 rsync-az/you/file/path root@11.22.33.44:/rsync/file/to/path 其他一些常用rsync命令可以参考

用户 / 密码: zytest / zytest

0x1 生产服务器环境搭建

0x1.1 安装gcc编译器和rsync

yum install gcc rsync -y

0x1.2 拷贝inotify到服务器并解压

cd /root

tar xfvz inotify-tools-3.13.tar.gz

0x1.3 进入inotify 目录安装

cd inotify-tools-3.13 ./configure make make install /usr/local/bin/inotifywait ##检查是否安装成功

0x2 备份服务器环境搭建

0x2.1 安装 xinetd 和 rsync

yum install xinetd rsync -y

0x3 以下内容两台服务器同步操作

useradd -u 600 zytest passwd zytest zytest su - zytest -c 'mkdir /home/zytest/files' ##创建同步目录

0x4 备份服务器上配置rsyncd

0x4.1 编辑/etc/xinetd.d/rsync按照以下内容修改

disable = yes ==> disable= noflags = IPv6 ==> flags= IPv4server_args = --daemon ==> server_args = --daemon --config=/etc/rsyncd.conf

0x4.2 编辑/etc/rsyncd.conf 并添加以下脚本信息

uid = rootgid = rootuse chroot = nomax connections = 1000strict mode = yesport = 873pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log# following for user "zytest", change for other users[zytest]path = /home/zytestignore errorsauth users =zytestsecrets file = /home/rsync-dst.psread only = nolist = false

Ps: rsyncd 配置文件在 xinetd上,所以备份服务器安装xinetd

0x4.3 把密码写入调用的密码文件并赋予权限

echo zytest:zytest >> /home/rsync-dst.pschmod 600 /home/rsync-dst.ps

0x4.4 通过xinetd启动rsync

/etc/rc.d/init.d/xinetd restart

0x5 主服务器上配置inosync脚本文件

0x5.1 ** ##编辑/root/inosync添加脚本代码**

#!/bin/sh#chkconfig: 3 78 10#This file exist from compileif [ ! -f /usr/local/bin/inotifywait ]then echo "cannot start. file inotifywait NOT exist!" exitfi#This file is runnable shell scriptif [ ! -f /usr/local/bin/inosync.so.1 ]then echo "contact administrator. inosync.so.1 NOT exist!" exitficase "$1" in 'start') /usr/local/bin/inosync.so.1 &;;'stop') pid=`ps -ef | grep -v grep | grep "inotifywait" | awk '{print $2}'` kill -9 $pid 2>&1;;'restart') $0 stop $0 start;;esac

0x5.2 赋予脚本权限,设置开机启动

chmod a+x /root/inosync cp /root/inosync /etc/rc.d/init.d

0x5.3 配置调用的主脚本文件 /root/inosync.so.1

rhost=**备份服务器IP**user=zytestsrc=/home/zytest/filesdst=zytest#dst corresponding to [zytest] in file /etc/rsyncd.conf on dst serverlog=/root/inosync.log/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M:%S' --format '%T %w%f %e' -e close_write,create,move,delete,attrib $src | while read files do echo == rsync begin == >> $log rsync -avP --password-file=/home/rsync-src.ps --delete $src $user@$rhost::$dst >> $log 2>&1 echo -- rsyncd -- >> $log date >> $log echo "${files} was rsynced " >> $log 2>&1 done

PS: %T后面有空格 %f和%e之间也有空格

0x5.4 赋予inosync.so.1脚本权限,拷贝到/usr/local/bin

chmod a+x /root/inosync.so.1cp /root/inosync.so.1 /usr/local/bin

0x5.5 把密码写入调用的密码文件并赋予权限

echo zytest >> /home/rsync-src.ps chmod 600 /home/rsync-src.ps

0x6 目标服务器设置inosync自动启动并开启inosync服务

chkconfig --level 3 inosync on/etc/rc.d/init.d/inosync start

0x7 测试 END

在生产服务器/home/zytest/files目录下创建文件和文件夹,查看备份存储是否也同步了文件和文件夹,同步即成功。

过程可通过日志查看

tail -f /root/inosync.log

总结

到此这篇关于Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能的文章就介绍到这了,更多相关rsync+inotify实现远程实时同步内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一详细说明在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。Rsync的命令格式可以为以下六种:rsync[OPTION].SRC DESTrsync[OPTION].SRC[USER@]HOST:DESTrsync[OPTION].[USER@]HOST:SRC DESTrsync[OPTION].[USER@]HOST:SRC DESTrsync[OPTION].SRC[USER@]HOST:DESTrsync[OPTION].rsync:/[USER@]HOST[:PORT]/SRC[DEST]对应于以上六种命令格式,rsync有六种不同的工作模式:1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync-a/data/backup2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsyncavz*.c foo:src3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsyncavz foo:src/bar/data4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含":"分隔符时启动该模式。如:rsync-avroot@172.16.78.192:www /databack5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含":"分隔符时启动该模式。如:rsync-av/databackroot@172.16.78.192:www6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsyncv rsync:/172.16.78.192/wwwrsync参数的具体解释如下:v,verbose 详细模式输出q,-quiet 精简输出模式c,-checksum 打开校验开关,强制对文件传输进行校验a,-archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoDr,-recursive对子目录以递归模式处理R,-relative 使用相对路径信息b,-backup创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用-suffix选项来指定不同的备份文件前缀。backup-dir 将备份文件(如~filename)存放在在目录下。suffix=SUFFIX 定义备份文件前缀u,update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)l,-links 保留软链结L,-copy-links 想对待常规文件一样处理软链结copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结safe-links 忽略指向SRC路径目录树以外的链结H,-hard-links 保留硬链结p,-perms保持文件权限o,-owner 保持文件属主信息g,-group 保持文件属组信息D,-devices保持设备文件信息t,-times 保持文件时间信息S,-sparse 对稀疏文件进行特殊处理以节省DST的空间n,dry-run现实哪些文件将被传输W,-whole-file 拷贝文件,不进行增量检测x,-one-file-system不要跨越文件系统边界B,-block-size=SIZE 检验算法使用的块尺寸,默认是700字节e,-rsh=COMMAND指定使用rsh、ssh方式进行数据同步rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息C,cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件existing仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件delete 删除那些DST中SRC没有的文件delete-excluded 同样删除接收端那些被该选项指定排除的文件delete-after 传输结束以后再删除ignore-errors 及时出现IO错误也进行删除max-delete=NUM 最多删除NUM个文件partial保留那些因故没有完全传输的文件,以是加快随后的再次传输force 强制删除目录,即使不为空numeric-ids不将数字的用户和组ID匹配为用户名和组名timeout=TIME IP超时时间,单位为秒I,-ignore-times不跳过那些有同样的时间和长度的文件size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0T-temp-dir=DIR在DIR中创建临时文件compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份P 等同于-partialprogress 显示备份过程z,-compress 对备份的文件在传输时进行压缩处理exclude=PATTERN指定排除不需要传输的文件模式include=PATTERN 指定不排除而需要传输的文件模式exclude-from=FILE排除FILE中指定模式的文件include-from=FILE 不排除FILE指定模式匹配的文件version 打印版本信息address 绑定到特定的地址config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件port=PORT 指定其他的rsync服务端口blocking-io 对远程shell使用阻塞IOstats给出某些文件的传输状态progress 在传输时现实传输过程log-format=formAT 指定日志文件格式password-file=FILE 从FILE中得到密码bwlimit=KBPS 限制I/O带宽,KBytes per secondh,-help 显示帮助信息内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • inotify+rsync实现实时同步的方法
  • linux系统中rsync+inotify实现服务器之间文件实时同步
  • linux系统中通过rsync+inotify实现网页自动同步
  • inotify-tools+rsync实时同步文件的配置方法
  • linux下获取文件的创建时间与实战教程
  • 详解在linux上部署带有jar包的java项目
  • linux对文件解压或打包压缩的方法
  • ubuntu 系统中文显示乱码的问题解决
  • linux给用户添加root权限方法总结
  • centos桌面环境中网卡启动失败的解决方法
  • linux中各种锁机制的使用与区别详解
  • linux 中删除文本中的回车字符的方法
  • ubuntu制作本地源的实现方法
  • 关于linux安装mysql默认配置文件位置详解
  • Linux下rsync命令用法
  • linux中的rsync命令
  • 如何用rsync命令从windows上传输一个文件到linux上.
  • Linux命令rsync的疑问
  • 如何使用 rsync 将 Windows 上的文件备份到 Linux 服务器上
  • linux rsync的运行模式包括哪些?rsync dryrun是什么?
  • linux使用rsync是出现的命令
  • 如何在Linux下使用rsync
  • linux中如何使用rsync进行两台linux的文件同步,求详解。
  • linux rsync+crontab不同步了是怎么回事
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全星外虚拟主机华众虚拟主机linuxwin服务器ftp服务器dns服务器tomcat nginxzabbix云和虚拟化服务器其它首页服务器linuxinotify+rsync实现实时同步的方法linux系统中rsync+inotify实现服务器之间文件实时同步linux系统中通过rsync+inotify实现网页自动同步inotify-tools+rsync实时同步文件的配置方法linux下获取文件的创建时间与实战教程详解在linux上部署带有jar包的java项目linux对文件解压或打包压缩的方法ubuntu 系统中文显示乱码的问题解决linux给用户添加root权限方法总结centos桌面环境中网卡启动失败的解决方法linux中各种锁机制的使用与区别详解ubuntu制作本地源的实现方法关于linux安装mysql默认配置文件位置详解apache开启.htaccess及.htaccessservice temporarily unavailabllinux下实现免密码登录(超详细)apache rewrite url重定向功能的linux下用cron定时执行任务的方法apache性能测试工具ab使用详解centos 6.4安装配置lamp服务器(acentos+nginx+php+mysql详细配置apache you don""t have permissflume环境部署和配置详解及案例大使用kubeadm在centos7.2上部署kubernetes在apache服务器上安装ssl支持的教程centos7 下安装telnet服务的实现方法详解lamp环境搭建linux centos6.5编译安装虚拟机linux桥接模式下设置静态ip详解详解linux tail命令显示最后n行apche 多端口配置及网站指向非apche默认的centos配置mutt和msmtp实现邮件发送vim学习高级技巧之序列的生成方法详解linux环境使用g++编译c++方法总结
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved