源碼包的安裝、rsync同步、inotify監測

1、源碼包的安裝git

  1.源碼包的做用:yum 使用的是rpm包,rpm包安裝的不能指定安裝位置
github

          源碼包能夠按需選擇/定製,及時修復bug ,適用於各類平臺shell

  二、大體過程:源碼包——>make gcc將源碼包變成可執行的程序---->運行安裝bash

  3.這就要求make,gcc軟件支持,yum 下安裝make 和gccapp

  四、下載源碼包 wget  http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gzdom

  5 、解壓源碼包:[root@localhost ~]# tar -xf inotify-tools-3.14.tar.gz -C /opt/ssh

  解壓完能夠在解壓目錄下查看:ide

[root@localhost ~]# ls /opt
inotify-tools-3.14  rh
[root@localhost ~]# ls /opt/inotify-tools-3.14
aclocal.m4  ChangeLog     config.h.in  configure     COPYING  INSTALL     libinotifytools  Makefile.am  man      NEWS    src
AUTHORS     config.guess  config.sub   configure.ac  depcomp  install-sh  ltmain.sh        Makefile.in  missing  README

  六、./configure配置{目的就是爲了指定安裝目錄和功能模塊 而且此條命令能夠檢測是否以及安裝了gcc }測試

    可是必定要注意,該配置是源碼在哪就在哪操做,即要cd 到剛解壓到的目錄中去ui

[root@localhost ~]# cd /opt/inotify-tools-3.14 #cd 不能忘
[root@localhost inotify-tools-3.14]# ls
aclocal.m4  ChangeLog     config.h.in  configure     COPYING  INSTALL     libinotifytools  Makefile.am  man      NEWS    src
AUTHORS     config.guess  config.sub   configure.ac  depcomp  install-sh  ltmain.sh        Makefile.in  missing  README

  使用./configure --prefix =指定的安裝目錄位置

  (好比這裏指定/mnt/myrpm,可是此條命令結束,/mnt/myrpm並不會生成,這裏只是指定)

  若gcc未裝,則會報相似gcc--->no 的錯誤

[root@localhost inotify-tools-3.14]# ./configure --prefix=/mnt/myrpm
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make sets $(MAKE)... (cached) yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o

  7.make編譯,生成可執行的二進制文件

  #make  命令便可

  八、make install 安裝 將編譯好的文件複製到安裝目錄,這裏才真正生成 以前指定的安裝文件

  查看一下:

 

[root@localhost inotify-tools-3.14]# ls /mnt/myrpm/
bin  include  lib  share
[root@localhost inotify-tools-3.14]# ls /mnt/myrpm//bin
inotifywait  inotifywatch

2、rsync同步

  rsync [選項] 源目錄 目標目錄

複製:徹底拷貝到目標文件下

同步:增量拷貝,只傳輸傳輸變化過的數據

選項:-n : 測試同步過程不作實際修改

   --delete:刪除目標文件夾中多餘的文檔

   -a :歸檔模式

   -v:顯示詳細的操做信息

   -z: 傳輸過程當中啓用壓縮/解壓

1. 本地同步:  rsync 本地目錄 1   本地目錄2     (同步整個文件夾)

      rsync 本地目錄1/     本地目錄2      (同步目錄下的文件)

如:

[root@localhost ~]# mkdir -p /haha/happy /xixi

[root@localhost ~]# rsync -av /haha /xixi
sending incremental file list
haha/
haha/happy/
haha/happy/1.txt

sent 165 bytes received 47 bytes 424.00 bytes/sec
total size is 6 speedup is 0.03
[root@localhost ~]# ls /xixi
haha

這裏/haha 時把目錄haha 也同步了

[root@localhost ~]# rsync -av /haha/ /xixi
sending incremental file list
./
happy/
happy/1.txt

sent 152 bytes received 46 bytes 396.00 bytes/sec
total size is 6 speedup is 0.03

[root@localhost ~]# ls /xixi
haha happy

這裏用了/haha/ 則只同步了haha下的內容,通常狀況下都是這樣的同步

  2.遠程同步:

  上行: rsync  [選項] user@host:遠程目錄   本地目錄

  下行:rsync   [選項] 本地目錄  user@host:遠程目錄

[root@localhost ~]# rsync -av /haha/ root@192.168.142.138:/haha
root@192.168.142.138's password:
sending incremental file list
created directory /haha
./
happy/
happy/1.txt

sent 156 bytes received 74 bytes 5.17 bytes/sec
total size is 6 speedup is 0.03
[root@localhost ~]#

能夠看出來,遠程同步時須要密碼驗證,這裏可使用公鑰和私鑰來作到免密碼的同步

只要同步一方A的私鑰和另外一方握有A公鑰的B 實現公鑰和私鑰的匹配,便可免密

這裏ssh-keygen 來生成公鑰私鑰

[root@localhost ~]# ssh-keygen
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:
SHA256:8boQ5FfByR1t/kwWvsg5L70YqIOxNHy4xXLEdbfykrQ root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| o.o.o 
| +o..oo |
| . o o .oo o|
| o * o.oo|
| + S . o B=.|
| X * .E oo|
| o % . .= |
| = o. .oo |
| ... ....|
+----[SHA256]---

使用ssh-copy-id root@B的IP來將A的公鑰發送給B

公鑰私鑰的生成位置爲/root/.ssh

B中的/root/.ssh/authorized-keys 爲公鑰存在位置

[root@localhost ~]# ssh-copy-id root@192.168.142.138

此時,再使用同步就不須要密碼了

[root@localhost ~]# rsync -av /haha/ root@192.168.142.138:/haha
sending incremental file list

sent 93 bytes received 13 bytes 70.67 bytes/sec
total size is 6 speedup is 0.06

3、實時監測

同步以後,要作到只源文檔內容發生變化,那麼同步的文檔也必須實時改變,至於怎麼樣知道文檔內容改變了,這就須要inotify來進行監測

通常會將inotify這個包放在/usr/local下,把源碼下載時的inotify的包cp 到/usr/local下,而後再通過./configure   make   make install便可

這也是在A下操做的

[root@localhost ~]# ls /usr/local/bin
inotifywait inotifywatch

觀察到inotifywait就是成功了,inotifywait 是監測目錄變化所用的程序

好比在/haha下再新建一個目錄(另開一個終端操做),能夠看到inotifywait 下發生了變化

[root@localhost local]# inotifywait -rq /haha/
/haha/ CREATE,ISDIR xixixi

################################################################################

目前只是監測成功了,如何作到一監測到目錄下的變化就自動同步,這裏須要藉助shell腳原本實現

shell腳本所在位置:/root/rsync.sh

#!/bin/bash
 while inotifywait -rqq /haha/
  do
    rsync -a --delete /haha/ root@192.168.142.138:/haha/
  done

[root@localhost ~]# ls -ld /root/rsync.sh
-rw-r--r--. 1 root root 112 9月 18 14:54 /root/rsync.sh
[root@localhost ~]# chmod +x /root/rsync.sh
[root@localhost ~]# ls -ld /root/rsync.sh
-rwxr-xr-x. 1 root root 112 9月 18 14:54 /root/rsync.sh

要給腳本執行權限

這個時候運行這個腳本[root@localhost ~]# /root/rsync.sh

再開一個終端改變A裏的/haha B中的/haha 緊接着改變

相關文章
相關標籤/搜索