技术改变世界 阅读塑造人生! - shaogx.com

This string was altered by TechBlog\Plugins\Example.; This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.

【Linux Rsync安装配置】

【Linux Rsync3.0  实用版安装】*安装环境:Linux  CentoS  5.3 *安装目的:Linux 各服务器之间同步文件,保持文件的一致性,也可以是群集服务器之间的同步方案。本文讲求简单,易操作,可行性。为初学者提供帮助。一、下载rsync版本;下载当前最新稳定版本:(虽然系统已经安装,我们这里使用下载编译的:)cd  /usr/src 下:... 全文

Linux rsync 配置 linux文件同步 linux 【Linux Rsync安装配置】 linux群集同步

inotify + rsync实现linux文件实时同步

inotify + rsync实现linux文件实时同步,使用触发同步机制公司一套系统的同步使用的donotify,不能实现子目录的实时同步,通过查资料,发现inotify可以实现子目录的实时同步,以下为笔记。一、介绍Inotify 是文件系统事件监控机制,作为 dnotify 的有效替代。dnotify 是较早内核支持的文件监控机制。Inotify 是一种强大的、细粒度的、异步的机制,它满足各种各样的文件监控需要,不仅限于安全和性能。inotify 可以监视的文件系统事件包括:IN_ACCESS,即文件被访问IN_MODIFY,文件被 writeIN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等IN_CLOSE_WRITE,可写文件被 closeIN_CLOSE_NOWRITE,不可写文件被 closeIN_OPEN,文件被 openIN_MOVED_FROM,文件被移走,如 mvIN_MOVED_TO,文件被移来,如 mv、cpIN_CREATE,创建新文件IN_DELETE,文件被删除,如 rmIN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己IN_UNMOUNT,宿主文件系统被 umountIN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)注:上面所说的文件也包括目录。 二、为能在shell下使用inotify特性,需要安装inotify-tools1、inotify-tools:The general purpose of this package is to allow inotify's features to be used from within shell scripts.下载地址:[url]http://inotify-tools.sourceforge.net/[/url]编译安装./configuremakemake install完成后,注意查看manpage,man inotify 、 man inotifywait inotifywait 仅执行阻塞,等待 inotify 事件。您可以监控任何一组文件和目录,或监控整个目录树(目录、子目录、子目录的子目录等等)。在 shell 脚本中使用 inotifywait。 inotifywatch 收集关于被监视的文件系统的统计数据,包括每个 inotify 事件发生多少次。2、inotify的系统相关参数: /proc interfaces       The following interfaces can be used to limit the amount of kernel memory consumed by inotify:       /proc/sys/fs/inotify/max_queued_events              The value in this file is used when an application calls inotify_init(2) to set an upper  limit  on  the number  of  events  that  can be queued to the corresponding inotify instance.  Events in excess of this limit are dropped, but an IN_Q_OVERFLOW event is always generated.       /proc/sys/fs/inotify/max_user_instances              This specifies an upper limit the number of inotify instances that can be created per real user ID.       /proc/sys/fs/inotify/max_user_watches              This specifies a limit the number of watches that can be associated with each inotify instance.3、inotifywait 相关的参数(更多,查看manpage):inotifywaitThis command simply blocks for inotify events, making it appropriate for use in shell scripts. It can watch any set of files and directories, and can recursively watch entire directory trees.-m, --monitor              Instead  of  exiting  after receiving a single event, execute indefinitely.  The default behaviour is to exit after the first event occurs.-r, --recursive              Watch all subdirectories of any directories passed as arguments.  Watches will be set up recursively  to an  unlimited  depth.   Symbolic  links  are  not traversed.  Newly created subdirectories will also be watched.-q, --quiet              If specified ce, the program will be less verbose.  Specifically, it will not state when it  has  completed establishing all inotify watches. -e <event>, --event <event>              Listen for specific event(s) ly.  The events which can be listened for are listed in the  EVENTS  section.  This option can be specified more than ce.  If omitted, all events are listened for. use“,”separate multi events三、使用1.查看是否支持inotify,从kernel 2.6.13开始正式并入内核,RHEL5已经支持。看看是否有 /proc/sys/fs/inotify/目录,以确定内核是否支持inotify[root@RHEL5 Rsync]# ll /proc/sys/fs/inotifytotal 0-rw-r--r-- 1 root root 0 Oct  9 09:36 max_queued_events-rw-r--r-- 1 root root 0 Oct  9 09:36 max_user_instances-rw-r--r-- 1 root root 0 Oct  9 09:36 max_user_watches2.关于递归:inotifywaitThis command simply blocks for inotify events, making it appropriate for use in shell scripts. It can watch any set of files and directories, and can recursively watch entire directory trees.3.使用:#!/bin/shsrc=/opt/webmaildes=/tmpip=192.168.7.192/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f' \ -e modify,delete,create,attrib \${src} \| while read  file        do                rsync -avz --delete --progress ${src} root@${ip}:${des} &&                echo "${file} was rsynced"                echo "---------------------------------------------------------------------------"        done注:当要排出同步某个目录时,为rsync添加--exculde=PATTERN参数,注意,路径是相对路径。详细查看man rsync当要排除都某个目录的事件监控的处理时,为inotifywait添加--exclude或--excludei参数。详细查看man inotifywait另:/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f' \ -e modify,delete,create,attrib \${src} \上面的命令返回的值类似于:10/03/09 15:31 /wwwpic/1这3个返回值做为参数传给read,关于此处,有人是这样写的:inotifywait -mrq -e create,move,delete,modify $SRC | while read D E F;do细化了返回值。说明:当文件系统发现指定目录下有如上的条件的时候就触发相应的指令,是一种主动告之的而非我用循环比较目录下的文件的异动,该程序在运行时,更改目录内的文件时系统内核会发送一个信号,这个信号会触发运行rsync命令,这时会同步源目录和目标目录。--timefmt:指定输出时的输出格式  --format:  '%T %w%f'指定输出的格式,上面的输出类似于:12/10/08 06:34 /opt/webmail/dovecot-1.1.2/src/test/1小脚本,同步到多台主机:  使用rsync+inotify配置触发式(实时)远程同步使用rsync+inotify配置触发式(实时)远程同步 2008-11-01 TsengYia#126.com ################################################################系统环境:RHEL5 [ 2.6.18-8.el5xen ]软件环境:    rsync-2.6.8-3.1    nfs-utils-1.0.9-16.el5    portmap-4.0-65.2.2.1    inotify-tools-3.13.tar.gz        —— [url]http://downloads.sourceforge.net/inotify-tools/inotify-tools-3.13.tar.gz?modtime=1199213676&big_mirror=0[/url] 目标功能:    源主机H1: 192.168.1.11/24    目标主机H2: 192.168.1.12/24        将H1主机中的开发数据(/var/devel/目录),上传同步至H2主机的/backup/devel/h1/目录。——当源数据有文件或目录更新时,即时启动rsync同步进程。[基于安全性考虑,建议只在内部网络中使用] ################################################################    除inotify-tools(需要2.6.13以上内核的inotify功能支持)以外,其他软件均使用RHEL5系统自带的rpm包安装。 一、配置目标主机H2(发布NFS可写共享)    shell> mkdir -p /backup/devel/h1/shell> vi /etc/exports/backup/devel/h1    192.168.1.11(rw,no_root_squash)shell> service portmap startshell> service nfs startshell> chkconfig portmap shell> chkconfig nfs    如有必要,可以结合防火墙规则控制访问权限shell> iptables -I INPUT -p tcp --dport 111 -j DROPshell> iptables -I INPUT -p tcp --dport 111 -s 192.168.1.11 -j ACCEPTshell> iptables -I INPUT -p udp --dport 111 -j DROPshell> iptables -I INPUT -p udp --dport 111 -s 192.168.1.11 -j ACCEPT 二、配置源主机H1(上传备份发起端)     1、安装inotify-tools工具包shell> tar zxvf inotify-tools-3.13.tar.gz -C /usr/src/shell> cd /usr/src/inotify-tools-3.13shell> ./configureshell> makeshell> make install—— 可以使用man inotify、man inotifywait、man inotifywatch查看相关手册页。     2、挂载H2发布的备份目录shell> service portmap startshell> chkconfig portmap shell> mkdir -p /media/h2nfsdir/shell> vi /etc/fstab192.168.0.12:/backup/devel/h1    /media/h2nfsdir    nfs    defaults,noexec    0 0shell> mount /media/h2nfsdir     3、编写触发同步脚本shell> vi /opt/h1-h2_inosync.sh#!/bin/shSRC=/var/devel/DST=/media/h2nfsdir/INWT=/usr/local/bin/inotifywaitRSYNC=/usr/bin/rsync$INWT -mrq -e create,move,delete,modify $SRC | while read D E F ; do    $RSYNC -aHqz --delete $SRC $DSTdoneshell> chkmod +x /opt/h1-h2_inosync.sh     4、每次开机自动运行监控脚本shell> echo "/opt/h1-h2_inosync.sh &" >> /etc/rc.localshell> /opt/h1-h2_inosync.sh & 三、测试实时同步    在源主机H1上,修改/var/devel/目录中的内容(如增、删、改文件,添加、移除目录等),    ——同时在目标主机H2上,观察备份目录/backup/devel/h1/中内容的变化。 ############################## The End ##################################  ... 全文

inotify linux + rsync实现linux文件实时同步 休闲

如何保持Linux服务器间的文件同步(1)

本文详细介绍rsync服务的安装配置以及如何利用rsync保持Linux服务器间的文件同步。服务器之间常常要保持些文件或目录的一致,比如一些大的软件下载网站,它们通常使用多台服务器来提供下载服务。当一台服务器上的文件更新后,其它的服务器也需要更新,而且 在更新的时候应该是只对新增或是修改过的文件进行更新,否则会造成网络带宽和时间的浪费。rsync就是能有效的保持文件及目录的一致的优秀软件。rsync,remote synchronize... 全文

Linux 服务器 文件同步

使用sersync同步Linux服务器上文件

                                             Linux下resync同步文件... 全文

同步 linux sersync

使用rsync同步linux服务器上的文件到windows上

需求:在windows客户端上执行计划任务同步脚本,从linux服务器上同步对应模块下的目录内容到windows客户端的D:\data目录下。 步骤:1. rsync服务端操作略: (百度一下都有文档)1.1 开启873端口1.2 开启rsync服务 ... 全文

同步 rsync linux网络服务

再谈linux中为何没有网卡设备文件

这个问题其实没有什么意思,知道了问题的答案能表明一个人技术水平有多高吗?不能!这个问题有答案以及有意义吗?答案都是没有!那我还为何一直对这个问题死死揪住不放?这类问题可以提高一个人的素质以及了解一段关于网络和unix的历史,正是因为这些都很有趣,才如此值得关注。在unix中,一切io相关的实体都被抽象成了文件,之所以抽象成文件第一是为了接口统一,第二是为了操作统一,第三是为了策略隐藏,比如这样可以向用户屏蔽掉具体设备的细节或者具体文件系统的细节,文件抽象有块抽象和字符抽象,对于块文件,你只需要知道它可以随机读写就可以完成大部分的工作而不用关注底层具体的文件系统,比如ext3,ntfs,jfs之类,对于字符设备文件,你只需要知道他们是串行读写就可以了,而不必关心鼠标的电路安排,打印机的内部机制等等,但是对于网卡,我们看看它是字符设备还是块设备。如果它是块设备,那么它能随机读写吗?看看网卡的特性,它的另一端是另一个世界,它更像是一个管道,它更像是一个字符设备,因为对一个管道进行随机读写是没有意义的,那么它是一个字符设备吗?要知道网络协议多种多样,计算机仅仅负责按照协议加工数据而不对协议本身做任何限制,因此如果将网卡作为字符设备,那么为了支持众多协议以及为了在传输之前绑定一个协议,就必须频繁调用ioctl之类的系统调用,这样用户就必须知道网卡这个设备的更多的细节,否则用户怎么去ioctl这块网卡,这显然违背了unix文件抽象的初衷,另外怎么去同步这个设备,比如多个进程同时需要打开这个设备传输网络数据,怎么能保证它们可以用最高的效率复用这个网卡,这个同步工作应该由谁来做,系统还是用户,如果由系统来做,传统的文件同步接口将在网卡设备文件失效,如果由用户来完成,那么用户必须对网卡像驱动工程师一样熟悉,一个用户弄坏网卡的一个寄存器就会导致整个网卡down掉...第三,如何支持网络协议,难道让用户自己进行协议封装然后write到网卡吗?协议栈在这种情况下必须在用户空间实现,如此一来,效率和健壮性呢?安全性呢?协议栈显然受不到操作系统的内核空间特权级别的保护待遇,这违背了安全原则。综上,网卡不能被抽象成设备文件,因为将之抽象之后得不到任何好处。... 全文

linux unix 网络 网络协议 文件同步 工作

rsync+inotify 文件同步系统

测试系统:centos5.5服务端:192.168.1.210   rsync+inotify客户端:192.168.1.2111、软件安装yum -y install rsynctar zxvf inotify-tools-3.14.tar.gzcd inotify-tools-3.14makemake install  2、配置ssh免密码登陆,作用是rsync传输时不需要输入密码服务端:... 全文

linux 休闲 文件同步 职场 rsync+inotify

sersync 文件同步系统(三) 插件使用说明

先看看相关插件的XML<plugin start="false" name="command"/> </sersync>  <plugin name="command"> <param prefix="/bin/sh" suffix="" ignoreError="true"/>    <filter start="false"> <include expression="(.*)\.php"/> <include expression="(.*)\.sh"/> </filter> </plugin> <plugin name="socket"> <localpath watch="/opt/tongbu"> <deshost ip="192.168.138.20" port="8009"/> </localpath> </plugin> <plugin name="refreshCDN"> <localpath watch="/data0/htdocs/cms.xoyo.com/site/"> <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/> <sendurl base="http://pic.xoyo.com/cms"/> <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/> </localpath> </plugin>  ... 全文

sersync linux 休闲 文件同步 职场

sersync 文件同步系统(二) 高级配置说明

1、filter文件过滤功能 对于sersync监控的文件,会默认过滤系统的临时文件(以“.”开头,以“~”结尾),除了这些文件外,可以自定义其他需要过滤的文件。<filter start="false">         <exclude expression="(.*)\.svn"></exclude>         <exclude expression="(.*)\.gz"></exclude>         <exclude expression="^info/*"></exclude>         <exclude expression="^static/*"></exclude> </filter>  将start设置为 true,在exclude标签中,填写正则表达式,默认给出两个例子分别是过滤以".gz"结尾的文件与过滤监控目录下的info路径(监控路径/info/*),可以根据需要添加,但开启的时候,自己测试一下,正则表达式如果出现错误,控制台会有提示。相比较使用rsync 的exclude功能,被过滤的路径,不会加入监控,大大减少rsync的通讯量。... 全文

sersync linux 休闲 文件同步 职场

rsync同步(定时同步+实时同步)

rsync同步指南(客户端是主服务器,服务端是从服务器)1、rsync:remote sync ,linux自带镜像同步工具,可以镜像保存文件夹和目录树。其传输方式通过ssh、scp等加密传输。2、公钥认证配置:即客户机到服务器不需要密码登陆,使用公钥登录(公钥在服务器上相当于一把锁,私钥在客户端上相当于一把钥匙)。3、生成密钥对:在客户机上输入:ssh-keygen -t rsa ,于是就生成了一对密钥,其中~./ssh/id_rsa.pub是公钥,~/.ssh/id_rsa是私钥。4、将公钥复制到服务器上:在客户端输入:... 全文

服务器 文件夹 linux 客户机 服务端

使用rsync+inotify配置触发式(实时)远程同步

系统环境:CentOS release 6.3  x86_64安装软件:rsync3.xinotify-tools条件:需要实时同步的两台主机: 192.168.1.51 192.168.1.53同步的网站目录: /var/www/html/1、在文件服务器端的配置下载安装inotify-tools: [root@data ~]# cd /usr/src/[root@data src]# wget http://iweb.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz[root@data src]# tar zxvf inotify-tools-3.14.tar.gz[root@data src]# cd inotify-tools-3.14[root@data inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify-tools 检查rsync是否安装 :检查命令: rpm -qa | grep rsync  如果有输出就表示rsync已经安装,不在需要安装,如果没输出则表示没有安装,可以通过源码编译安装或者yum安装,yum 安装的方法 :[root@cqb html]# yum install -y rsync[root@cqb inotify-tools-3.13]# cd /var/www/html/[root@cqb html]# vim rsync.sh     文件服务器安装好rsync后无需配置,也不需要启动。同步脚本如下:#!/bin/bash######################################## system:CentOS 6.x 64bit                    #### Author:wolf                                         #### QQ:1250052800                                         #### E-mail:1250052800@qq.com #### Date:                    21:40 2012-11-28    #### Version: 1.1                                         #### rsync+inotify sync script                ######################################## #define variableshost1=192.168.1.53src=/var/www/htmldst=wwwuser=webuserrsync_passfile=/etc/rsync.passwordinotify_home=/usr/local/inotify-tools/LogFile=/tmp/inotify_sync.log #judgeif [ ! -e "$src" ] \|| [ ! -e "$rsync_passfile" ] \|| [ ! -e "$inotify_home/bin/inotifywait" ] \|| [ ! -e "/usr/bin/rsync" ];then        echo "Check File and Folder"        exit 9fi #sync$inotify_home/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src \| while read filedo        cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host1::$dst --password-file=$rsync_passfile >$LogFile 2>&1done exit 0[root@cqb html]# chmod +x rsync.shecho "/var/www/html/rsync.sh &" /etc/rc.local   将此脚本写入到/etc/rc.local 让系统自动加载即可.脚本相关注解:    -m 是保持一直监听    -r 是递归查看目录    -q 是打印出事件~    -e create,move,delete,modify    监听 创建 移动 删除 写入 事件    rsync -aHqzt $SRC $DST    -a 存档模式    -H 保存硬连接    -q 制止非错误信息    -z 压缩文件数据在传输    -t 维护修改时间    -delete 删除于多余文件当要排出同步某个目录时,为rsync添加--exculde=PATTERN参数,注意,路径是相对路径。详细查看man rsync当要排除都某个目录的事件监控的处理时,为inotifywait添加--exclude或--excludei参数。详细查看man inotifywait另:/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f' \-e modify,delete,create,attrib \${src} \上面的命令返回的值类似于:10/03/09 15:31 /wwwpic/1这3个返回值做为参数传给read,关于此处,有人是这样写的:inotifywait -mrq -e create,move,delete,modify $SRC | while read D E F;do细化了返回值。说明: 当文件系统发现指定目录下有如上的条件的时候就触发相应的指令,是一种主动告之的而非我用循环比较目录下的文件的异动,该程序在运行时,更改目录内的文件时系统内核会发送一个信号,这个信号会触发运行rsync命令,这时会同步源目录和目标目录。--timefmt:指定输出时的输出格式   --format:  '%T %w%f'指定输出的格式二.关于inotify介绍Inotify 是文件系统事件监控机制,作为 dnotify 的有效替代。dnotify 是较早内核支持的文件监控机制。Inotify 是一种强大的、细粒度的、异步的机制,它满足各种各样的文件监控需要,不仅限于安全和性能。inotify 可以监视的文件系统事件包括:IN_ACCESS,即文件被访问IN_MODIFY,文件被 writeIN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等IN_CLOSE_WRITE,可写文件被 closeIN_CLOSE_NOWRITE,不可写文件被 closeIN_OPEN,文件被 openIN_MOVED_FROM,文件被移走,如 mvIN_MOVED_TO,文件被移来,如 mv、cpIN_CREATE,创建新文件IN_DELETE,文件被删除,如 rmIN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己IN_UNMOUNT,宿主文件系统被 umountIN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)注:上面所说的文件也包括目录。[root@cqb html]# vim /etc/rsync.password  创建密码文件12345    这里只要输入密码就可以[root@cqb html]# chmod 600 /etc/rsync.password   给密码文件权限为属主可读可写(必须的)启动脚本 ./rsync.sh &2、客户端的配置 [root@data ~]# vim /etc/rsyncd.conf     创建rsync住配置文件uid = nobody                         ##全局配置开始,指文件传输时模块进程的uid gid = nobody                         ##同上gid use chroot = no                    ##是否让进程离开工作目录 max connections = 4            ##最大并发数 syslog facility = local5 ##记录日志的facility pid file = /var/run/rsyncd.pid    ##pid位置 [www]                                        ##模块配置开始 path = /var/www/html            ##需要备份的目录,必须指定,                 comment = whole ftp area    ##注释 read only = no                     ##客户端是否只读 write only = no                    ##是否只能写 hosts allow = *                    ##允许同步主机 hosts deny = 192.168.1.0/24 ##禁止访问的主机 list = yes                             ##是否允许列出所有模块 uid = root                                gid = root auth users = webuser             ##可以连接该模块的user secrets file = /etc/rsync.password    ##密码文件在哪,需要自己建立[root@data ~]# rsync --daemon    启动主进程[root@cqb html]# vim /etc/rsync.password    创建密码文件webuser:12345[root@cqb html]# chmod 600 /etc/rsync.password     给密码文件权限为属主可读可写(必须的)3、测试查看是否同步[root@cqb html]# cp /etc/passwd /var/www/html/  本文章大部分内容收集于网上,如有问题请联系,51cto博客个人网站本文出自 “平凡的日子” 博客,请务必保留此出处http://wolfchen.blog.51cto.com/2211749/1085142... 全文

linux文件同步 rsync 实时同步 十全十美

Linux文件实时同步

   本文介绍下用法、注意事项、pyinotify多进程实现数据同步    Inotify的出身:    Linux 桌面系统与 MAC 或 Windows 相比有许多不如人意的地方,为了改善这种状况,开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么从而能够更好地管理设备,给用户提供更好的服务。inotify 是一种文件系统的变化通知机制,如文件增加、删除等事件可以立刻让用户态得知,该机制是著名的桌面搜索引擎项目 beagle 引入的,并在 Gamin 等项目中被应用。    Inotify优点:    之前的一种机制:dnotify有很多缺陷,被监视的目录都会导致过多的文件描述符,对于移动存储设备无法umount;监控对象基于目录,对于文件的变化需要缓存更多的stat结构数据。实现接口使用signal不是很友好;    1、Inotify 不需要对被监视的目标打开文件描述符,而且如果被监视目标在可移动介质上,那么在 umount 该介质上的文件系统后,被监视目标对应的 watch 将被自动删除,并且会产生一个 umount 事件。    2、Inotify 既可以监视文件,也可以监视目录    3、Inotify 使用系统调用而非 SIGIO 来通知文件系统事件。    4、Inotify 使用文件描述符作为接口,因而可以使用通常的文件 I/O 操作select 和 poll 来监视文件系统的变化。    Inotify 可以监视的文件系统事件包括:    IN_ACCESS,即文件被访问    IN_MODIFY,文件被 write    IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等    IN_CLOSE_WRITE,可写文件被 close    IN_CLOSE_NOWRITE,不可写文件被 close    IN_OPEN,文件被 open    IN_MOVED_FROM,文件被移走,如 mv    IN_MOVED_TO,文件被移来,如 mv、cp    IN_CREATE,创建新文件    IN_DELETE,文件被删除,如 rm    IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己    IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己    IN_UNMOUNT,宿主文件系统被 umount    IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)    IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)    更多原理部分请参考:http://www.ibm.com/developerworks/cn/linux/l-inotifynew/    官网:https://github.com/rvoicilas/inotify-tools/wiki    查看内核是否支持inotify机制    grep INOTIFY_USER /boot/config-$(uname -r)    输出:CONFIG_INOTIFY_USER=y 表示支持inotify机制    安装部分:yum install inotify-tools (版本为3.13)    inotify-tools包含两个工具inotifywait(监测事件的发生);inotifywatch(事件变化统计)    使用方法:    可以通过man 解决:man inotifywait;man inotifywatch;man inotify    相关参数设置:/proc/sys/fs/inotify/max_queued_events 被监测对象的队列最大数(对于较多文件的情况,适当增大)     /proc/sys/fs/inotify/max_user_instances 被监测对象最大数,默认为8192    官方简单脚本举例:#!/bin/sh  # get the current path  CURPATH=`pwd`  inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' \  -e close_write /tmp/test | while read date time dir file; do         FILECHANGE=${dir}${file}         # convert absolute path to relative         FILECHANGEREL=`echo "$FILECHANGE" | sed 's_'$CURPATH'/__'`         rsync --progress --relative -vrae 'ssh -p 22'  $FILECHANGEREL usernam@example.com:/backup/root/dir && \     echo "At ${time} on ${date}, file $FILECHANGE was backed up via rsync" done    该脚本简单的精妙,但也存在不少不足;    1、脚本执行为单进程,对于含有多个文件的情况需要考虑并发执行    2、wait会产生很多冗余事件;比如对于在文件中写数据,打开文件都会产生临时文件a`或者a.swp  a.swpx 文件,让rsync产生更多的冗余计算;       具体测试文章参考:http://hi.baidu.com/johntech/item/282552cfe6edb735449416e3    3、错误处理机制,脚本出现错误的处理的问题,比如rsync 连接失败,是否隔一段时间重连等?    一款开源工具sersync http://code.google.com/p/sersync/    但为了方便,个人使用了pyinotify 模块实现以上功能:    官方项目地址:https://github.com/seb-m/pyinotify/wiki    代码示例为:    稍后填充!... 全文

linux rsync inotify pyinotify

Linux下使用rsync同步文件

遇到的问题是几台游戏服务器,有一台新的服务器之前已经copy(Linux的scp命令)过文件上去,但在测试的过程中发现还是图片无法正常不显示出来,然后用httpwatch去分析请求的资源,发现有一个图片请求的地址是404(文件不存在),然后ssh登录上去,找到指定目录,发现确实是没有这个文件。。。 ... 全文

linux 休闲 职场

rsync文件同步(linux

一.Server端的配置1. 用的rsync的版本是rsync-2.6.8.tar.gz,可以到原始网站下载:http://rsync.samba.org/ftp/rsync/下载2. 两台服务器的IP如下:Client------------192.168.1.100   (rsync的clent端)Server------------192.168.1.110   (rsync的server端)3. (1)rsync的server端的操作:# tar -zxvf  rsync-2.6.8.tar.gz# cd rsync-2.6.8# ./configure# make# make install说明一点,客户机和服务器都要安装rsync。客户机以客户端方式运行rsync,服务器端以服务器方式运行rsync,它监听873端口(2)# touch /etc/ rsyncd.conf# vi /etc/ rsyncd.conf  (内容如下)#全局配置部分secrets file = /etc/rsyncd.secretsread only = yeslist = yesuid = rootgid = roothosts allow = 192.168.1.100#hosts deny = 10.4.5.0/24use chroot = nomax connections = 10log file = /var/log/rsyncd.logpid file = /var/run/rsyncd.pidlock file = /var/run/rsync.lock#模块配置部分[rsyncd]comment = pag's directory (自己的说明)path = /home/test/software  (要同步server端的目录)auth users = rsync          (用到的用户)secrets file = /etc/rsyncd.secrets(3)生成验证证文件# echo "rsync:rsync" > /etc/rsyncd.secrets  (rsync:rsync为用户和密码,格式为user:passwd)#  chown  root:root  /etc/rsyncd.secrets#  chmod 600  /etc/rsyncd.secrets(4) 最后在server端将rsync以守护进程形式启动命令为: rsync --daemonrsync启动的端口为 873端口最好用ntsysv或者chkconfig将rsync设置为开机自动启动chkconfig --level 35 sync on二.Clent端的配置1.在/etc下面编辑一个rsyncd.secrets的密码存放文件即可# echo "rsync" > /etc/rsyncd.secrets# chmod 600 /etc/rsyncd.secrets2. 执行命令为:rsync -vzurtopg --progress --delete rsync@192.168.1.110::rsyncd /home/test/software --password-file=/etc/rsyncd.secrets参数详解:v 表示详细提示z 表示压缩u 表示只进行更新topg 保持文件原有属性如属主、时间的参数--progress 指显示--delete 指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致root 为用户名@192.168.1.110为服务器IP::后面的rsyncd为认证的模块名/home/test/software 为备份到本地的目录名--password-file=/etc/rsync.secret 制定密码存放位置的地址3. 可以编写脚本 rsync.sh#!/bin/bashrsync -vzurtopg --progress --delete rsync@192.168.1.110::rsyncd /home/test/software --password-file=/etc/rsyncd.secrets然后将该脚本加入到/etc/crontab文件中 定时执行更新4. crontab的设置#  vi  /etc/rc.d/rsync.sh文件内容为:rsync -vzurtopg --progress --delete rsync@192.168.1.110::rsyncd /home/test/software --password-file=/etc/rsyncd.secrets# chmod  755  /etc/rc.d/rsync.sh# crontab -e*/1 * * * * /bin/sh /etc/rc.d/rsync.sh  (每一分钟来同步一次) 本文出自 “才刚上路” 博客,请务必保留此出处http://jlsfwq.blog.51cto.com/818700/165643... 全文

linux rsync 职场 休闲

利用inotify+rsync实现linux文件批量更新

    批量同步、批量更新,这应该是做运维的朋友们经常做的工作,rsync是linux下一款非常强大的同步工具,采用差异同步的方法,只上传文件/文件夹的不同部分,同时可以对上传部分先进行压缩,所以rsync的传输效率是很高的但rsync也有缺点,最大的问题就是每次执行rsync命令都会遍历目标目录,当文件不多时,这没什么问题,一旦文件数到了一定规模,那么每次遍历都会消耗很多资源,如果只对经常改动的目录进行同步,也可以忽略这个问题,如果每次改动的目录多较大,那么就要用到inotify了,Inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,Linux内核从2.6.13起,加入了对Inotify的支持,通过Inotify可以监控文件系统中的添加、删除、修改、移动等各种事件,但inotify只提供了C语言接口,不方便调用,所以我们需要先安装inotify-tools一、系统环境: CentOS_5.7-x86_64 更新源服务器:192.168.9.227 目的服务器:192.168.9.226  192.168.9.228  ... ...... 全文

linux 数据同步 rsync inotify 批量更新

双向同步软件Unison的安装与配置

双向同步软件Unison的安装与配置一、Unison简介 Unison是Windows、Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致。Unison拥有与其它一些同步工具或文件系统的相同的特性,但也有自身的特点: 1.跨平台使用; 2.对内核和用户权限没有特别要求; 3.Unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略; 4.只要是能连通的两台主机,就可以运行unison,可以直接使用socket连接或安全的ssh连接方式,对带宽的要求不高,使用类似rsync的压缩传输协议。二、编译安装Unison Linux下通过源码包编译安装Unison时,需要用到Objective Caml compiler。 通过以下方式安装 [root@server1 ~]# wget http://caml.inria.fr/pub/distrib/ocaml-3.12/ocaml-3.12.0.tar.gz [root@server1 ~]# tar -xzvf ocaml-3.12.0.tar.gz [root@server1 ~]# cd ocaml-3.12.0 [root@server1 ocaml-3.12.0]# ./configure [root@server1 ocaml-3.12.0]# make world opt [root@server1 ocaml-3.12.0]# make install 编译安装Unison [root@server1 ~]# wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.40.63.tar.gz [root@server1 ~]# tar -xzvf unison-2.40.63.tar.gz [root@server1 ~]# cd unison-2.40.63 [root@server1 unison-2.40.63]# make UISTYLE=text [root@server1 unison-2.40.63]# make install 在执行make install的过程中,可能会出现以下错误提示: mv: cannot stat '/root/bin//unison': No such file or directory make: [doinstall] Error 1 (ignored) cp unison /root/bin/ cp: cannot create regular file '/root/bin/': Is a directory make: *** [doinstall] Error 1 出现错误的原因在与Unison默认是将文件Copy到/root/bin目录,但Linux默认是没有该目录的,因此我们需要将生成的可执行文件unison复制到系统的PATH目录。 [root@server1 unison-2.40.63]# cp unison /usr/local/bin 将可执行文件unison上传到远程主机(假设远程主机IP为211.100.1.196) [root@server1 unison-2.40.63]# scp unison root@211.100.1.196:/root/ 通过SSH登陆到远程主机,再将unison复制到server2的PATH目录 [root@server2 ~]#cp unison /usr/local/bin三、配置ssh key信任 建议通过普通用户进行操作,理由是通过root操作本身就危险,免密码登陆的root就更危险了。 在两台服务器上创建unison用户 [root@server1 ~]# useradd -m unison [root@server1 ~]# passwd unison [root@server2 ~]# useradd -m unison [root@server2 ~]# passwd unison 在server1上创建key并配置server2的信任 [root@server1 ~]# su – unison [unison@server1 ~]$ ssh-keygen -t rsa 在提示保存私钥(key)和公钥(public key)的位置时,使用默认值; 在提示是否需要私钥密码(passphrase)时,直接敲回车,即不使用私钥密码。 之后,将生成一对密钥,id_rsa(私钥文件)和id_rsa.pub(公钥文件),保存在/home/unison/.ssh/目录下。 将公钥添加到server2的 authorized_keys 文件中 将文件上传到server2(假设server2主机IP为211.100.1.196) [unison@server1 ~]$ scp ~/.ssh/id_rsa.pub unison@211.100.1.196:/home/unison/ 使用rsync用户SSH到登陆到远程主机,并将公钥添加到 authorized_keys 文件中 [unison@server2 ~]$ mkdir .ssh [unison@server2 ~]$ chmod 700 .ssh [unison@server2 ~]$ mv ~/id_rsa.pub ~/.ssh/authorized_keys 同理,执行以下步骤在server2上创建key并配置server1的信任 [root@server2 ~]# su – unison [unison@server2 ~]$ ssh-keygen -t rsa 将文件上传到server1(假设server1主机IP为211.100.1.197) [unison@server2 ~]$ scp ~/.ssh/id_rsa.pub unison@211.100.1.197:/home/unison/ 使用rsync用户SSH到登陆到server1,并将公钥添加到 authorized_keys 文件中 [unison@server1 ~]$ mv ~/id_rsa.pub ~/.ssh/authorized_keys 重启SSH服务 [root@server1 ~]# /etc/init.d/sshd restart [root@server2 ~]# /etc/init.d/sshd restart四、Unison的配置与使用 在两台服务器上创建test目录,用于测试 [root@server1 ~]# su - unison [unison@server1 ~]$ mkdir test [root@server2 ~]# su - unison [unison@server2 ~]$ mkdir test 在两台服务器上分别执行一次unison,如果出现提示确认,则直接敲回车选择默认值 [unison@server1 ~]$ unison /home/unison/test/ ssh://unison@211.100.1.196//home/unison/test/ [unison@server2 ~]$ unison /home/unison/test/ ssh://unison@211.100.1.197//home/unison/test/ 修改两台服务器的unison配置文件,输入以下内容 [unison@server1 ~]$ vim /home/unison/.unison/default.prf # Unison preferences file root=/home/unison/test root=ssh://unison@211.100.1.196//home/unison/test/ batch=true owner=true group=true perms=-1 fastcheck=false rsync=false sshargs=-C xferbycopying=true log=true logfile=/home/unison/.unison/unison.log... 全文

linux 文件双向同步 unison 运维工程师 fallenleaves

建立同步文件的脚本

为避免一个一个的去修改每一个服务器的配置文件,只需要rsync同步一下就可以搞定#!/bin/bash#rsync.shLOCAL_DIR="/opt/admin"test -n "$hosts" || hosts="xxxx xxxx"REMOTE_DIR="/opt/"RSYNC_LOG="/opt/var/log/rsync.log"for host in $hosts;doecho ${host}RSYNC_RUN="/usr/bin/rsync -vzrtopg --progress --stats --delete -e ssh ${LOCAL_DIR} ${host}:${REMOTE_DIR}";${RSYNC_RUN} >>${RSYNC_LOG} 2>&1;done#end rsync.sh用上面的脚本就可以同步每一台机子的文件了,是不是方便了不少本文出自 “自动化rolin” 博客,请务必保留此出处http://luoguoling.blog.51cto.com/1568501/1095418... 全文

linux rsync ssh

rsync加inotify实现无间隔文件同步

 一: 工具简介 rsync  它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送文件的变化部分,而不是每次都整体传送,因此速度相当快。 inotyify... 全文

linux rsync inotify

rsync+inotify实现无间隔文件同步

1. 工具简介     1) rsyncrsync能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输。rsync中一项与其他大部分类似程序或协议中所未见的重要特性是镜像对每个目标只需要一次发送。rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。其默认监听端口为873/tcp,在Centos中,其服务由xinetd代为监听。2) inotyify... 全文

应用程序 计算机 客户端 Linux 监控

1 2