`
wjjbfq
  • 浏览: 82169 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux redhat rsync inotify 配置

阅读更多
rsync工具简介
 
    rysnc是一个数据镜像及备份工具,具有可使本地和远程两台主机的文件,目录之间,快速同步镜像,远程数据备份等功能。在同步过程中,rsync是根据自己独特的算法,只同步有变化的文件,甚至在一个文件里只同步有变化的部分,所以可以实现快速的同步数据的功能。
 
下面所讲的简单的rsync同步方法,依赖于SSH服务。一般rsync,ssh软件包都会默认安装的。检查方法:rpm -qa|grep -i rsync
 
注意:在实行备份方案前请用其他目录进行测试以防错误,切记!!
 
[root@mailsvr ~]# rsync -aSvH /home/* root@192.168.1.2:/home/
 
提示输入192.168.1.2机器的root用户密码,输入即可开始同步。
 
参数解释:
a 等同于 -rlptgoD 归档模式,就是保持文件所有属性、权限不变
S 有效的处理零散文件
v verbose模式
H 保持hard links
 
上面这个表示 将本机的/home目录下所有的文件,同步到192.168.1.2机器的/home目录下。。
上面红色标记是源文件位置 蓝色标记是目的位置
 
如果想每次同步之后,两边的文件保持一致,需要添加参数--delete,添加这个参数时,一定要注意测试,否则会造成严重后果,删除了数据。
 
[root@mailsvr ~]# rsync -aSvH --delete /home/* root@192.168.1.2:/home/

 
[root@mailsvr ~]# rsync -aSvH root@192.168.1.2:/home/* /home/
上面这条表示,将远程机器192.168.1.2机器上的/home目录下所有的文件,同步到本地的/home目录下,同步的时候注意源和目的,前面的是源文件位置,后面的目的文件位置
 
上面的命令,执行的时候,需要输入192.168.1.2机器的root用户密码,这样很烦,可以两台机器做个ssh信任,省去每次输入密码,在添加crontab自动执行。自动同步数据。
 

比如要从node A上的abc用户, ssh到host B 上的def用户
那就要在A上的abc用户下面
#ssh-keygen -t rsa

把生成的 id_rsa.pub  放到B上def下的authorized_keys里
最好是 >> 而不是cp,这样不会抹掉之前的记录
如:cat  id_rsa.pub >> authorized_keys

know_hosts 表示当前机器和其他多少机器建立了信任,能直接登录。


下面是2台主机建立ssh信任
A机器 192.168.1.1
B机器 192.168.1.2
 
[root@mailsvr ~]# ssh-keygen -t rsa      创建证书
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
65:4a:68:cc:6c:23:2b:04:1a:3c:ee:d7:af:e7:e3:8d
root@mailsvr
[root@mailsvr ~]#
然后把公匙传到B机的/root/.ssh中:
[root@mailsvr .ssh]# scp /root/.ssh/id_rsa.pub
root@192.168.1.2:/root/.ssh/authorized_keys
root@192.168.1.2's password:
id_rsa.pub                            100%  219     0.2KB/s  
00:00
[root@mailsvr .ssh]#
 
验证一下,ssh登陆到B机,是否不需要输入密码,如果不用则建立成功
[root@mailsvr .ssh]# ssh 192.168.1.2
Last login: Fri Jun  6 09:59:28 2008 from 192.168.1.1
[root@mailsvr ~]#
 

rsync可以直接通过873端口的tcp连接传文件,也可以通过22端口的ssh来进行文件
传递,但你也可以通过下列命令改变它的端口:  

rsync --port 8730 otherhost::  
或者  
rsync -e 'ssh -p 2002' otherhost:




 
下面是rsync的另一种方法,服务器端和客户端使用。
 
两台机器都需要安装软件包,这里不罗嗦了。
 
服务器端配置:

 

 

 
接下来编辑配置文件
[root@mailsvr ~] # cat /etc/rsyncd.conf
uid = root   #root用户访问
gid = root   #root组用户访问
use chroot = no     #不能使用chroot
max connections = 9  #最大连接数
list = yes   #允许列出文件清单
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
hosts allow  = 192.168.1.2   #只允许这个主机访问
 
[data]     #发布项
path = /home/data/     #发布的路径
ignore errors
read only = yes   #只读
auth users = root   #认证用户为root
secrets file = /etc/sery.pass    #密码文件
------------------------------------------------------------------------------------
下面是密码文件
[root@mailsvr ~] # cat /etc/sery.pass
root:123456
权限为600
 
服务器端配置完成,客户端只需要安装rsync包即可
接下来创建密码文件
[root@mailsvr ~] # cat /etc/sery.pass
123456        #这里只需要输入服务器端密码文件中定义的密码即可。
 
使用命令开始同步
 
[root@mailsvr ~] #  rsync -aSvH --password-file=/etc/sery.pass root@192.168.1.2::data  /home/
 
解释:
--password-file=/etc/sery.pass  这段是密码文件,如果不加这段,需要手动输入服务器端定义好的密码。
root@192.168.1.2::data   这里的:data是服务器端的发布项。
 
如果文件比较大,可以使用nohup将进城放在后台执行,
[root@mailsvr ~] #  nohup rsync -aSvH --password-file=/etc/sery.pass root@192.168.1.2::data  /home/ >rsync.log &
 
上面的表示将远程机器192.168.1.2机器上发布的data目录,同步到本地机器的/home/目录下。
 
 
 
 
 
inotify 使用
引用:
    Inotify 是文件系统事件监控机制,计划包含在即将发布的 Linux 内核中作为 dnotify 的有效替代。dnotify 是较早内核支持的文件监控机制。Inotify一种强大的、细粒度的、异步的机制,它满足各种各样的文件监控需要,不仅限于安全和性能。下面让我们一起学习如何安装 inotify 和如何构建一个示例用户空间应用程序来响应文件系统事件。
    文件系统事件监控对于从文件管理器到安全工具的各种程序都是必要的,但是 dnotify(早期内核中的标准)存在一些局限性,这使我们期待出现一种更加完善的机制。抱着这种期待,我们发现了 inotify,一种更加现代化的文件系统事件监控替代品。
    为什么使用 inotify?
    使用 inotify 取代 dnotify 的原因有很多。第一个原因是,dnotify 需要您为每个打算监控是否发生改变的目录打开一个文件描述符。当同时监控多个目录时,这会消耗大量的资源,因为有可能达到每个进程的文件描述符限制。
    除此之外,文件描述符会锁定目录,不允许卸载(unmount)支持的设备,这在存在可移动介质的环境中会引发问题。在使用 inotify 时,如果正在监控被卸载的文件系统上的文件,那么监控会被自动移除并且您会接收到一个卸载事件。
    dnotify 不如 inotify 的第二个原因是 dnotify 有点复杂。注意,使用 dnotify 基础设施的简单文件系统监控粒度只停留于目录级别。为了使用 dnotify 进行更细粒度的监控,应用程序编程人员必须为每个受监控的目录保留一个 stat 结构的缓存。该用户空间的 stat 结构缓存需要用来明确确定当接收到通知信号时目录发生了什么变化。当获得通知信号时,生成 stat 结构列表并与最新的状态相比较。显而易见,这种技术是不理想的。
    inotify 的另一个优点是它使用文件描述符作为基本接口,使应用程序开发者使用 select 和 poll 来监控设备。这允许有效的多路 I/O 和与 Glib 的 mainloop 的集成。相反,dnotify 所使用的信号常常使程序员头疼并且感觉不太优雅。
    inotify 通过提供一个更优雅的 API 解决了这些问题,该 API 使用最少的文件描述符,并确保更细粒度的监控。与 inotify 的通信是通过设备节点提供的。基于以上原因,对于监控 Linux 2.6 平台上的文件,inotify 是您最明智的选择。
    linux/l-inotify.html#N10081">http://www-128.ibm.com/developerworks/cn/linux/l-inotify.html#N10081
    正文:
    sotfware: inotify-tools-3.13.tar.gz
    OS:       ubuntu server 8.10
    server1:  192.168.6.2
    server2:  192.168.6.3
    需求 server1 目录 /home/ludy/rsync 时时同步 server2 /home/ludy
    安装步骤:
    1.首先确认你的内核支持inotify,如果不支持对内核打补丁,一般情况内核在 2.6.3以上的都支持的。你可以确认下运行
    ludy@server1:~$ls -l /proc/sys/fs/inotify/
    总用量 0
    -rw-r--r-- 1 ludy ludy 0 2008-12-16 14:40 max_queued_events
    -rw-r--r-- 1 ludy ludy 0 2008-12-16 14:40 max_user_instances
    -rw-r--r-- 1 root root 0 2008-12-16 09:07 max_user_watches
    如果没有的话,呵呵安装inotify~
    2.安装软件 inotify-tools-3.13.tar.gz
   
ludy@server1:~$ tar zxvf inotify-tools-3.13.tar.gz
    ludy@server1:~$ cd inotify-tools-3.13
    ludy@server1:~$ ./configure --prefix=/usr/local/inotify
   
ludy@server1:~$ make
   
ludy@server1:~$ make install
    2.生成SSH KEY 让 server1 ssh访问 server2不需要密码~
   
ludy@server1:~$ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/ludy/.ssh/id_rsa):   //输入回车
    Enter passphrase (empty for no passphrase):                //输入密码回车
    Enter same passphrase again:                               //再输入确认后回车
    Your identification has been saved in /home/ludy/.ssh/id_rsa.
    Your public key has been saved in /home/ludy/.ssh/id_rsa.pub.
    The key fingerprint is:
    f1:35:4e:88:11:f1:c4:5a:7a:c9:2a:90:d3:5e:0a:6f
ludy@ludy
    The key's randomart image is:
    +--[ RSA 2048]----+
    |        ++.      |
    |         =o.     |
    |     o  o=o.+    |
    |    = . +o++ .   |
    |     * oSo. .    |
    |      E .        |
    |     . .         |
    |                 |
    |                 |
    +-----------------+
    3.然后把你用户目录下的 .ssh/id_rsa.pub 拷贝到 server2 的root下(我作的测试所以用的root,你最好不要用root很危险~)
    ludy@server1:~/.ssh$ scp id_rsa.pub root@192.168.6.3:~/.ssh
    拷贝过去后,进入server2 id_rsa.pub 把 名字改为 authorized_keys
   
root@server2:~/.ssh$  mv id_rsa.pub authorized_keys
   
root@server2:~/.ssh$ shown root:root authorized_keys     //改变使用者 root
   
root@server2:~/.ssh$ chmod 600  authorized_keys          //改变权限
    4.在server1编写shell脚本
    cat inosync.sh
    #!/bin/sh
    SRC=/home/ludy/rsync/
   
DST=root@192.168.6.3:/home/ludy
    INWT=/usr/local/inotify/bin/inotifywait
    RSYNC=/usr/bin/rsync
    $INWT -mrq -e create,move,delete,modify $SRC | while read D E F;do
            rsync -aHqzt $SRC $DST
    done
    我解释一下
    $INWT -mrq -e create,move,delete,modify $SRC | while read D E F;do
            rsync -aHqzt --delete $SRC $DST
    -m 是保持一直监听
    -r 是递归查看目录
    -q 是打印出事件~
    -e create,move,delete,modify
    监听 创建 移动 删除 写入 事件
    rsync -aHqzt $SRC $DST
    -a 存档模式
    -H 保存硬连接
    -q 制止非错误信息
    -z 压缩文件数据在传输
    -t 维护修改时间
    -delete 删除于多余文件
    5.测试
    ludy@server1:~$ ./inosync.sh &
    ludy@server1:~$ cd rsync
    ludy@server1:~/rsync$ touch asdfa
    在server2 机器查看
    root@server2:/home/ludy$ ls
    asdfa
    注意,可能第一次SSH 连接的时候需要输入一次密码,以后就不需要输入了~
 
  6 删除进程:
  pkill inotifywait
查看进程:ps -ef|inotifywa
另外一个例子
inotify 工具的下载地址
分享到:
评论

相关推荐

    redhat8 inotify-tools(x86-64)

    EPEL 8 for x86_64 RPM resource inotify-tools(x86-64) Inotify,它是在内核 2.6.13 版本中...http://www.rpmfind.net/linux/rpm2html/search.php?query=inotify-tools%28x86-64%29&submit=Search+...&system=&arch=

    redhat9 inotify-tools(x86-64)

    EPEL 9 for x86_64 RPM resource inotify-tools(x86-64) Inotify,它是在内核 2.6.13 版本中...http://www.rpmfind.net/linux/rpm2html/search.php?query=inotify-tools%28x86-64%29&submit=Search+...&system=&arch=

    Linux下rsync安装配置使用教程.doc

    本教程将详细介绍如何在Redhat AS4系统上安装、配置及使用rsync。 首先,我们来看看服务器端的配置: 1. **安装rsync**:通过`rpm -q rsync`命令来查询rsync是否已经安装,如果没有,则需要使用`yum install rsync...

    linux_rsync的配置与使用[定义].pdf

    《Linux Rsync的配置与使用详解》 Rsync是一款强大的文件同步工具,广泛应用于Linux环境中,无论是本地文件备份还是跨主机数据迁移,它都能高效、灵活地完成任务。本文将详细介绍如何在Linux系统中安装、配置和使用...

    linux下tomcat+JDK+redhat配置文档+安装软件

    linux下tomcat+JDK+redhat配置文档+安装软件linux下tomcat+JDK+redhat配置文档+安装软件linux下tomcat+JDK+redhat配置文档+安装软件linux下tomcat+JDK+redhat配置文档+安装软件linux下tomcat+JDK+redhat配置文档+...

    RedHat Linux RHEL6配置本地YUM源

    ### RedHat Linux RHEL6配置本地YUM源详解 #### YUM简介 YUM(Yellowdog Updater Modified)是一款在Linux环境下使用的包管理工具。它最初由Yellow Dog Linux的开发者们设计并实现,名为yup(Yellowdog Updater)。...

    linux redhat5.0 lamp环境配置

    ### Linux RedHat 5.0 LAMP环境配置详解 #### 一、概述 在Linux RedHat 5.0操作系统上构建LAMP(Linux + Apache + MySQL + PHP)环境是一项常见而重要的任务,尤其是在Web服务器搭建过程中。本文将详细介绍如何在...

    rhel5之rsync服务配置

    为了启用rsync服务,我们需要编辑/etc/xinetd.d/目录下的rsync配置文件。找到`disable = yes`这一行,并将其改为`disable = no`,以启动rsync服务。 然而,rsync服务还需要一个配置文件——`rsyncd.conf`,默认情况...

    RedHat Linux9.0安装和配置步骤

    RedHat Linux 9.0 安装和配置步骤 RedHat Linux 9.0 安装和配置步骤主要包括安装前的准备、确认安装方式、安装 RedHat Linux 9.0 等几个方面。 一、安装前的准备 在安装 RedHat Linux 9.0 之前,需要检查硬件支持...

    linux redhat8.4.txt

    linux redhat8.4

    linux redhat4配置dns

    Linux RedHat4 配置 DNS Linux 作为目前最流行的操作系统之一,在网络服务配置与管理中扮演着重要的角色,而 DNS(Domain Name System)是互联网的基础设施之一,用于将域名解析为 IP 地址。本文将着重介绍基于 ...

    linux redhat5下安装oracle11g

    标题:Linux Redhat5 下安装 Oracle11g 描述:本文将根据作者的实际安装经验,提供一步步的安装指导,旨在帮助读者顺利地安装 Oracle 11g 在 Redhat 5 操作系统下。 标签:Linux Redhat5 Oracle 安装 VMware 安装...

    RedHat9.0网络配置DNS服务器

    RedHat9.0配置DNS服务器RedHat9.0网络配置DNS服务器RedHat9.0网络配置DNS服务器RedHat9.0网络配置DNS服务器RedHat9.0网络配置DNS服务器RedHat9.0网络配置DNS服务器RedHat9.0网络配置DNS服务器RedHat9.0网络配置DNS...

    服务器目录实时同步部署手册_rsync.docx

    - 编辑rsync配置文件`/etc/rsyncd.conf`,添加从服务器的访问配置,包括用户、密码、欢迎信息等。 **从服务器配置** 1. 启动rsync服务:`systemctl start rsyncd` 2. 将rsync服务设置为开机启动:`systemctl ...

    linuxserver1RedHat Linux服务器配置与应用视频

    linux server RedHat Linux服务器配置与应用视频,包括RHCE的大部分实验...

    redhat linux 网路配置(图)

    在Red Hat Linux操作系统中,网络配置是系统管理的重要部分,特别是在服务器环境中,正确的网络设置对于系统的功能和可访问性至关重要。本教程将详细介绍如何在Red Hat Linux上进行基本的网络配置,尤其是通过桥接...

    linux redhat enterprise5.4+oracle10g安装过程以及vnc服务配置

    ### Linux RedHat Enterprise 5.4 安装与Oracle 10g及VNC服务配置详解 #### 第一部分:Linux RedHat Enterprise 5.4 的安装及其问题解决 Linux RedHat Enterprise 5.4 是一款稳定且功能强大的企业级操作系统。在...

    RedHat Linux环境下防火墙配置初级入门

    RedHat Linux环境下防火墙配置初级入门

    基于Linux平台(RedHat)安装配置实现Web服务器.doc

    基于Linux平台(RedHat)安装配置实现Web服务器 本文档主要讲述了基于Linux平台(RedHat)安装配置实现Web服务器的过程。以下是相关知识点: 1. Apache Server概述 Apache Server是Apache软件基金会的一个开放源码的...

    基于Linux平台(RedHat)安装配置实现Web服务器

    基于Linux平台(RedHat)安装配置实现Web服务器

Global site tag (gtag.js) - Google Analytics