真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

inotify+rsync實現(xiàn)實時同步的方法

1.1 什么是實時同步:如何實現(xiàn)實時同步

在長洲等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作專業(yè)公司,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都營銷網(wǎng)站建設(shè),外貿(mào)網(wǎng)站建設(shè),長洲網(wǎng)站建設(shè)費用合理。

要利用監(jiān)控服務(wù)(inotify),監(jiān)控同步數(shù)據(jù)服務(wù)器目錄中信息的變化

發(fā)現(xiàn)目錄中數(shù)據(jù)產(chǎn)生變化,就利用rsync服務(wù)推送到備份服務(wù)器上

1.2 實現(xiàn)實時同步的方法

inotify+rsync 方式實現(xiàn)數(shù)據(jù)同步

sersync 方式實現(xiàn)實時數(shù)據(jù)同步 詳情參照:sersync實現(xiàn)數(shù)據(jù)實時同步的方法

1.2.1 實時同步原理介紹

inotify+rsync實現(xiàn)實時同步的方法

1.3 inotify+rsync 方式實現(xiàn)數(shù)據(jù)同步

1.3.1 Inotify簡介

Inotify是一種強大的,細粒度的。異步的文件系統(tǒng)事件監(jiān)控機制,linux內(nèi)核從2.6.13起,加入了 Inotify支持,通過Inotify可以監(jiān)控文件系統(tǒng)中添加、刪除,修改、移動等各種事件,利用這個內(nèi)核接口,第三方軟件就可以監(jiān)控文件系統(tǒng)下文件的各種變化情況,而 inotify-tools 正是實施這樣監(jiān)控的軟件。國人周洋在金山公司也開發(fā)了類似的實時同步軟件sersync。

提示信息:

sersync軟件實際上就是在 inotify軟件基礎(chǔ)上進行開發(fā)的,功能要更加強大些 ,多了定時重傳機制,過濾機制了提供接口做 cdn,支持多線程橾作。

Inotify實際是一種事件驅(qū)動機制,它為應(yīng)用程序監(jiān)控文件系統(tǒng)事件提供了實時響應(yīng)事件的機制,而無須通過諸如cron等的輪詢機制來獲取事件。cron等機制不僅無法做到實時性,而且消耗大量系統(tǒng)資源。相比之下,inotify基于事件驅(qū)動,可以做到對事件處理的實時響應(yīng),也沒有輪詢造成的系統(tǒng)資源消耗,是非常自然的事件通知接口,也與自然世界事件機制相符合。

inotify的實現(xiàn)有幾款軟件:

inotify-tools,sersync,lrsyncd

1.3.2 inotify+rsync使用方式

inotify 對同步數(shù)據(jù)目錄信息的監(jiān)控

rsync 完成對數(shù)據(jù)信息的實時同步

利用腳本進行結(jié)合

1.4 部署inotify軟件的前提

需要2.6.13以后內(nèi)核版本才能支持inotify軟件。2.6.13內(nèi)核之后版本,在沒有安裝inotify軟件之前,應(yīng)該有這三個文件。

[root@backup ~]# ll /proc/sys/fs/inotify/
total 0
-rw-r--r-- 1 root root 0 Oct 17 10:12 max_queued_events
-rw-r--r-- 1 root root 0 Oct 17 10:12 max_user_instances
-rw-r--r-- 1 root root 0 Oct 17 10:12 max_user_watches

1.4.1 三個重要文件的說明

文件
默認值
作用說明
max_user_watches
8192
設(shè)置inotifywait或inotifywatch命令可以監(jiān)視的文件數(shù)量(單進程)
max_user_instances
128
設(shè)置每個用戶可以運行的inotifywait或inotifywatch命令的進程數(shù)
max_queued_events
16384
設(shè)置inotify實例事件(event)隊列可容納的事件數(shù)量

1.4.3 【官方說明】三個重要文件1.4.2 【服務(wù)優(yōu)化】可以將三個文件的數(shù)值調(diào)大,監(jiān)聽更大的范圍

[root@nfs01 ~]# man proc
/proc/sys/fs/inotify (since Linux 2.6.13)
 This directory contains files max_queued_events,
 max_user_instances, and max_user_watches, that can be used
 to limit the amount of kernel memory consumed by the inotify interface. 
for further details, see inotify(7).

通過man手冊的第7級別中查到 inotify的默認文件的詳細說明。

[root@nfs01 ~]# man 7 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 on the number of inotify
 instances that can be created per real user ID.

/proc/sys/fs/inotify/max_user_watches
 This specifies an upper limit on the number of watches
 that can be created per real user ID.

1.5 inotify軟件介紹及參數(shù)說明

1.5.1 兩種安裝方式

1) yum install -y inotify-tools

2) 手工編譯安裝

注:

YUM 安裝需要有epel源

http://mirrors.aliyun.com

手工編譯安裝方式需要到github上進行下載軟件包

inotify軟件的參考資料鏈接:

https://github.com/rvoicilas/inotify-tools/wiki

1.5.2 inotify主要安裝的兩個軟件

inotifywait: (主要)

在被監(jiān)控的文件或目錄上等待特定文件系統(tǒng)事件(open close delete等)發(fā)生,執(zhí)行后處于阻塞狀態(tài),適合在shell腳本中使用

inotifywatch:

收集被監(jiān)控的文件系統(tǒng)使用的統(tǒng)計數(shù)據(jù),指文件系統(tǒng)事件發(fā)生的次數(shù)統(tǒng)計。

說明:在實時實時同步的時候,主要是利用inotifywait對目錄進行監(jiān)控

1.5.3 inotifywait命令參數(shù)說明

參數(shù)
含義
-m, --monitor
(重要參數(shù))
Keep listening for events forever. Without this option, inotifywait will exit after one event is received.
始終保持事件監(jiān)聽。
-d, --daemon
111
-r, --recursive
(重要參數(shù))
Watch all subdirectories of any directories passed as arguments.
遞歸監(jiān)控目錄數(shù)據(jù)信息變化
-o, --outfile
Print events to rather than stdout.
打印事件到文件中,相當(dāng)于標準正確輸出
-s, --syslog
Output errors to syslog(3) system log module rather than stderr.
發(fā)送錯誤到syslog相當(dāng)于標準錯誤輸出
-q, --quiet
(重要參數(shù))
If specified once, the program will be less verbose. Specifically, it will not state when it has completed establishing all inotify watches.
輸出信息少(只打印事件信息)
--exclude
Exclude all events on files matching the extended regular expression .
排除文件或目錄
--excludei
Like --exclude but case insensitive.
排除文件或目錄時,不區(qū)分大小寫
--timefmt
(重要參數(shù))
Print using a specified printf-like format string; read the man page for more details.
指定時間輸出格式
--format
(重要參數(shù))
Print using a specified printf-like formatstring; read the man page for more details.
打印使用指定的輸出類似格式字符串;即實際監(jiān)控輸出內(nèi)容
-e
(重要參數(shù))
Listen for specific event(s). If omitted, all events are listened for.
指定監(jiān)聽指定的事件,如果省略,表示所有事件都進行監(jiān)聽
以上的信息可以通過 inotifywait --help 獲得

1.5.4 -e[參數(shù)] 可以指定的事件類型
事件名稱
事件說明
access
file or directory contents were read
文件或目錄內(nèi)容被讀取
modify
file or directory contents were writterv
文件或目錄內(nèi)容被寫入
attrib
file or directory attributes changed
文件或目錄屬性改變
close_write
(重要參數(shù))
file or directory closed, after being opened in writeable mode.
文件或目錄關(guān)閉,在寫入模式打開之后關(guān)閉的。
close_nowrite
file or directory closed, after being opened in read-only mode.
文件或目錄關(guān)閉,在只讀模式打開之后關(guān)閉的
close
file or directory closed, regardless of read/write mode
文件或目錄關(guān)閉,不管讀或是寫模式
open
file or directory opened
文件或目錄被打開
moved_to
file or directory moved to watched directory
文件或目錄被移動到監(jiān)控的目錄中
moved_from
file or directory moved from watched directory
文件或目錄被移動從監(jiān)控的目錄中
move
(重要參數(shù))
file or directory moved to or from watched directory
文件或目錄不管移動到或是移出監(jiān)控目錄都觸發(fā)事件
create
(重要參數(shù))
file or directory created within watched directory
文件或目錄創(chuàng)建在監(jiān)控目錄中
delete
(重要參數(shù))
file or directory deleted within watched directory
文件或目錄被刪除在監(jiān)控目錄中
delete_self
file or directory was deleted
文件或目錄被刪除,目錄本身被刪除
unmount
file system containing file or directory unmounted
以上的信息可以通過 inotifywait --help 獲得

1.5.4.1 【實例】inotifywait監(jiān)控中的事件測試

1、創(chuàng)建事件

[root@nfs01 data]# touch test2.txt
[root@nfs01 ~]# inotifywait -mrq /data --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件信息: %e" -e create
17-10-17 11:19 /data/test2.txt 事件信息: CREATE

2、刪除事件

[root@nfs01 data]# \rm -f test1.txt
[root@nfs01 ~]# inotifywait -mrq /data --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件信息: %e" -e delete
17-10-17 11:28 /data/test1.txt 事件信息: DELETE

3、修改事件

[root@nfs01 data]# echo "132" > test.txt
[root@nfs01 ~]# inotifywait -mrq /data --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件信息: %e" -e close_write
17-10-17 11:30 /data/test.txt 事件信息: CLOSE_WRITE,CLOSE

4、移動事件 moved_to

[root@nfs01 data]# mv /etc/hosts .
[root@nfs01 ~]# inotifywait -mrq /data --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件信息: %e" -e moved_to
17-10-17 11:33 /data/hosts 事件信息: MOVED_TO

5、移動事件 moved_from

[root@nfs01 data]# mv ./hosts /tmp/
[root@nfs01 ~]# inotifywait -mrq /data --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件信息: %e" -e moved_from
17-10-17 11:34 /data/hosts 事件信息: MOVED_FROM

1.5.5 inotifywait 參數(shù) --format 格式定義參數(shù)

命令參數(shù)
參數(shù)說明
%w(重要參數(shù))
事件出現(xiàn)時,監(jiān)控文件或目錄的名稱信息
%f(重要參數(shù))
事件出現(xiàn)時,將顯示監(jiān)控目錄下觸發(fā)事件的文件或目錄信息,否則為空
%e(重要參數(shù))
顯示發(fā)生的事件信息,不同的事件信息用逗號進行分隔
%Xe
顯示發(fā)生的事件信息,不同的事件信息有x進行分隔,可以修改X為指定分隔符
%T(重要參數(shù))
輸出時間格式中定義的時間格式信息,通過 --timefmt option 語法格式指定時間信息
這個格式是通過strftime函數(shù)進行匹配時間格式信息的
以上的信息可以通過 inotifywait --help獲得

1.5.6 inotifywait 參數(shù)--timefmt 時間格式參數(shù)

命令參數(shù)
參數(shù)說明
%d(重要參數(shù))
The day of the month as a decimal number(range 01 to 31)
每月的第幾天,顯示倍息為十進制數(shù)(范圍是 01-31 )
%m(重要參數(shù))
The month as a decimal number (range 01 to 12).
顯示月份,顯示信息為十進制(范圍 01-12 )
%M
The minute as a decimal number (range 00 to 59).
顯示分鐘,顯示信息為十進制(范圍 00-59 )
%y(重要參數(shù))
The year as a decimal number without a century (range 00 to 99).
年份信息,顯示信息為十進制,并且沒有世紀信息
%Y
The year as a decimal number including the century.
年份信息,顯示信息為十進制,并且包含世紀信息
%H
The hour as a decimal number using a 24-hour clock (range 00 to 23).
小時信息,顯示信息為十進制,使用 24小時制(范圍 00-23 )
說明:以上信息可以通過 man strftime信息獲取

1.5.6.1 修改輸出的日期格式

[root@nfs01 ~]# inotifywait -mrq /data --timefmt "%d/%m/%y %H:%M" --format "%T %w%f"
17/10/17 11:12 /data/test1.txt

1.5.7 -e[參數(shù)] 重要監(jiān)控事件參數(shù)匯總表:

重要事件
包含事件
備注說明
close
close_write
close_nowrite
文件或目錄關(guān)閉,不管讀或是寫模式
即包含寫關(guān)閉與讀關(guān)閉
close_write
create
包含文件創(chuàng)建事件,但不包含目錄創(chuàng)建事件
move
moved_to
moved_from
文件或目錄不管移動到或是移動出監(jiān)控目錄都觸發(fā)事件
即包含信息移入或移出監(jiān)控目錄事件
重要參數(shù)匯總:根據(jù)以上說明,在實際使用時,只要監(jiān)控以下事件即可
create 創(chuàng)建、 delete 刪除、 movedjto 移入、 close_write 修 改
inotifywait -mrq /data --format "%w%f" -e create,delete,moved_to,close_write

1.6 對inotifywait命令的測試

對inotifywait命令測試的說明:

需要打開兩個連接窗口

1窗口運行inotifywait

2窗口對文件夾進行操作,可在一窗口中查看出inotifywait的監(jiān)控記錄

1.6.1 、創(chuàng)建文件的邏輯↓

[root@nfs01 ~]# inotifywait /data
Setting up watches.
Watches established.
/data/ CREATE test1.txt
/data/ OPEN test1.txt
/data/ ATTRIB test1.txt
/data/ CLOSE_WRITE,CLOSE test1.txt
創(chuàng)建文件,inotifywait顯示創(chuàng)建文件的過程↑
[root@nfs01 data]# touch test1.txt

1.6.2 創(chuàng)建目錄邏輯↓

[root@nfs01 data]# mkdir testdir
[root@nfs01 ~]#
/data/ CREATE,ISDIR testdir

1.6.3 監(jiān)控子目錄下的文件↓

[root@nfs01 data]# touch testdir/test01.txt
[root@nfs01 ~]# inotifywait -mrq /data 
/data/testdir/ OPEN test01.txt
/data/testdir/ ATTRIB test01.txt
/data/testdir/ CLOSE_WRITE,CLOSE test01.txt

1.6.4 sed命令修改邏輯

[root@nfs01 data]# sed 's#132#123#g' test.txt -i

[root@nfs01 ~]# inotifywait -mrq /data --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件信息: %e" -e moved_from
 /data/test.txt 事件信息: OPEN
 /data/sedDh6R8v 事件信息: CREATE
 /data/sedDh6R8v 事件信息: OPEN
 /data/test.txt 事件信息: ACCESS
 /data/sedDh6R8v 事件信息: MODIFY
 /data/sedDh6R8v 事件信息: ATTRIB
 /data/sedDh6R8v 事件信息: ATTRIB
 /data/test.txt 事件信息: CLOSE_NOWRITE,CLOSE
 /data/sedDh6R8v 事件信息: CLOSE_WRITE,CLOSE
 /data/sedDh6R8v 事件信息: MOVED_FROM
 /data/test.txt 事件信息: MOVED_TO

sed命令替換邏輯 :

01. 創(chuàng)建臨時文件

02. 將原文件內(nèi)容放置到臨時文件中,修改替換臨時文件中的內(nèi)容,原有文件不做改動

03. 重命名臨時文件,覆蓋原文件

1.6.5 inotifywait監(jiān)控中 -e 的參數(shù)使用

inotifywait -mrq /data --timefmt "%d/%m/%y %H:%M" --format "%T %w%f 事件信息: %e" -e create

說明:表示只監(jiān)聽create事件

inotifywait -mrq /data --timefmt "%d/%m/%y %H:%M" --format "%T %w%f 事件信息: %e"

說明:不指定-e參數(shù),表示監(jiān)聽所有事件

02. 刪除事件delete

# inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f 事件信息: %@e" -e delete
2017-10-17 11:28 /data/02.txt 事件信息: DELETE
2017-10-17 11:28 /data/03.txt 事件信息: DELETE
2017-10-17 11:28 /data/04.txt 事件信息: DELETE

03. 修改事件close_write

# inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f 事件信息: %@e" -e delete,close_write
 2017-10-17 11:30 /data/oldgirl.txt 事件信息: CLOSE_WRITE@CLOSE
 2017-10-17 11:30 /data/.oldgirl.txt.swx 事件信息: CLOSE_WRITE@CLOSE
 2017-10-17 11:30 /data/.oldgirl.txt.swx 事件信息: DELETE
 2017-10-17 11:30 /data/.oldgirl.txt.swp 事件信息: CLOSE_WRITE@CLOSE
 2017-10-17 11:30 /data/.oldgirl.txt.swp 事件信息: DELETE
 2017-10-17 11:30 /data/.oldgirl.txt.swp 事件信息: CLOSE_WRITE@CLOSE
 2017-10-17 11:30 /data/.oldgirl.txt.swp 事件信息: DELETE

04. 移動事件moved_to

inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f 事件信息: %@e" -e delete,close_write,moved_to
2017-10-17 11:34 /data/hosts 事件信息: MOVED_TO

1.7 實時同步命令參數(shù)示意圖

inotify+rsync實現(xiàn)實時同步的方法

第2章 inotify+rsync實時同步服務(wù)部署

2.1 第一個里程碑:部署rsync服務(wù)

2.1.1 rsync服務(wù)端部署

1)軟件是否存在

[root@backup ~]# rpm -qa |grep rsync
rsync-3.0.6-12.el6.x86_64

需求:查詢到某個命令非常有用。但是不知道屬于哪個軟件包

yum provides rysnc

provides Find what package provides the given value 

2)進行軟件服務(wù)配置

[root@backup ~]# vim /etc/rsyncd.conf 
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup
[nfsbackup]
comment = "nfsbackup dir by hzs"
path = /nfsbackup

3)創(chuàng)建rsync管理用戶

[root@backup ~]# useradd -s /sbin/nologin -M rsync

4)創(chuàng)建數(shù)據(jù)備份儲存目錄,目錄修改屬主

[root@backup ~]# mkdir /nfsbackup/
[root@backup ~]# chown -R rsync.rsync /nfsbackup/

5)創(chuàng)建認證用戶密碼文件并進行授權(quán)600

echo "rsync_backup:clsn123" >>/etc/rsync.password
chmod 600 /etc/rsync.password

6)啟動rsync服務(wù)

rsync --daemon

至此服務(wù)端配置完成

[root@backup ~]# ps -ef |grep rsync 
root 2076 1 0 17:05 ? 00:00:00 rsync --daemon
root 2163 1817 0 17:38 pts/1 00:00:00 grep --color=auto rsync

2.1.2 rsync客戶端配置

1)軟件是否存在

[root@backup ~]# rpm -qa |grep rsync
rsync-3.0.6-12.el6.x86_64

2)創(chuàng)建安全認證文件,并進行修改權(quán)限600

echo "clsn123" >>/etc/rsync.password
chmod 600 /etc/rsync.password

3) 測試數(shù)據(jù)傳輸

[root@nfs01 sersync]# rsync -avz /data rsync_backup@172.16.1.41::nfsbackup --password-file=/etc/rsync.password
sending incremental file list
data/
data/.hzs
data/.tar.gz
data/.txt

2.2 第二個里程碑:部署inotify服務(wù)

首先先確認是否有epel源用來安裝inotify-tools軟件

[root@nfs01 ~]# yum repolist
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
repo id repo name   status
base CentOS-6 - Base - mirrors.aliyun.com 6,706
epel Extra Packages for Enterprise Linux 6 - x86_64 12,401
extras CentOS-6 - Extras - mirrors.aliyun.com 46
updates CentOS-6 - Updates - mirrors.aliyun.com 722
repolist: 19,875

2.2.1 安裝inotify軟件

兩種安裝方式

1) yum install -y inotify-tools

2) 手工編譯安裝

注:

手工編譯安裝方式需要到github上進行下載軟件包

inotify軟件的參考資料鏈接:

https://github.com/rvoicilas/inotify-tools/wiki

2.2.2 查看inotify安裝上的兩個命令(inotifywait,inotifywatch)

[root@nfs01 ~]# rpm -ql inotify-tools
/usr/bin/inotifywait #主要
/usr/bin/inotifywatch

2.2.2.1 inotifywait和inotifywatch的作用:

一共安裝了2個工具(命令),即inotifywait和inotifywatch

inotifywait : 在被監(jiān)控的文件或目錄上等待特定文件系統(tǒng)事件(open close delete等)發(fā)生,

執(zhí)行后處于阻塞狀態(tài),適合在shell腳本中使用

inotifywatch :收集被監(jiān)控的文件系統(tǒng)使用的統(tǒng)計數(shù)據(jù),指文件系統(tǒng)事件發(fā)生的次數(shù)統(tǒng)計。

說明:yum安裝后可以直接使用,如果編譯安裝需要進入到相應(yīng)軟件目錄的bin目錄下使用

#命令 man手冊說明
# man inotifywait
inotifywait - wait for changes to files using inotify

使用inotify進行監(jiān)控,等待產(chǎn)生變化的文件信息

# man inotifywatch
inotifywatch - gather filesystem access statistics using inotify
使用inotify進行監(jiān)控,收集文件系統(tǒng)訪問統(tǒng)計佶息

2.3 第三個里程碑:編寫腳本,實現(xiàn)rsync+inotify軟件功能結(jié)合

2.3.1 rsync服務(wù)命令:

rsync -avz --delete /data/ rsync_backup@172.16.1.41::nfsbackup --password-file=/etc/rsync.password

2.3.2 inotify服務(wù)命令:

inotifywait -mrq /data -format "%w%f" -e create,delete,move_to,close_write

2.3.3 編寫腳本:

[root@nfs01 sersync]# vim /server/scripts/inotify.sh
#!/bin/bash
inotifywait -mrq /data --format "%w%f" -e create,delete,moved_to,close_write|\
while read line
do
 rsync -az --delete /data/ rsync_backup@172.16.1.41::nfsbackup --password-
file=/etc/rsync.password
done

腳本說明:

for循環(huán)會定義一個條件,當(dāng)條件不滿足時停止循環(huán)

while循環(huán):只要條件滿足就一直循環(huán)下去

2.3.4 對腳本進行優(yōu)化

#!/bin/bash

Path=/data
backup_Server=172.16.1.41

/usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete /data | while read line 
do
 if [ -f $line ];then
 rsync -az $line --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password
 else
 cd $Path &&\
 rsync -az ./ --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password
 fi

done

2.4 第四個里程碑:測試編寫的腳本

2.4.1 讓腳本在后臺運行

在/data 目錄先創(chuàng)建6個文件

[root@nfs01 data]# sh /server/scripts/inotify.sh &
[root@nfs01 data]# touch {1..6}.txt

在backup服務(wù)器上,已經(jīng)時候同步過去了6個文件。

[root@backup ~]# ll /nfsbackup/
total 8
-rw-r--r-- 1 rsync rsync 0 Oct 17 12:06 1.txt
-rw-r--r-- 1 rsync rsync 0 Oct 17 12:06 2.txt
-rw-r--r-- 1 rsync rsync 0 Oct 17 12:06 3.txt
-rw-r--r-- 1 rsync rsync 0 Oct 17 12:06 4.txt
-rw-r--r-- 1 rsync rsync 0 Oct 17 12:06 5.txt
-rw-r--r-- 1 rsync rsync 0 Oct 17 12:06 6.txt

2.5 利用while循環(huán)語句編寫的腳本停止方法(kill)

01. ctrl+z暫停程序運行,kill -9殺死

02. 不要暫停程序,直接利用殺手三劍客進行殺進程

說明:kill三個殺手不是萬能的,在進程暫停時,無法殺死;kill -9 (危險)

2.5.1 查看后臺都要哪些程序在運行

[root@nfs01 data]# jobs
[1]+ Running sh /server/scripts/inotify.sh &

2.5.2 fg將后臺的程序調(diào)到前臺來

[root@nfs01 data]# fg 1
sh /server/scripts/inotify.sh

2.6 進程的前臺和后臺運行方法:

fg-- 前臺

bg-- 后臺

2.6.1 腳本后臺運行方法

01. sh inotify.sh &
02. nohup sh inotify.sh &
03. screen實現(xiàn)腳本程序后臺運行 
sh /server/scripts/inotify.sh &
nohup
nohup sh inotify.sh &

2.7 screen實現(xiàn)腳本程序后臺運行

2.7.1 經(jīng)過yum查找發(fā)現(xiàn)screen命令屬于screen包

[root@test ~]# yum provides screen
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base    | 3.7 kB 00:00 
epel    | 4.3 kB 00:00 
extras    | 3.4 kB 00:00 
updates    | 3.4 kB 00:00 
screen-4.0.3-19.el6.x86_64 : A screen manager that supports multiple logins on
  : one terminal
Repo : base
Matched from:

2.7.2 安裝screen軟件

[root@test ~]# yum install -y screen

2.7.3 screen命令的參數(shù)

在shell中輸入 screen即可進入screen 視圖

[root@test ~]# screen

Screen實現(xiàn)后臺運行程序的簡單步驟:

screen -ls :可看screen會話

screen +a d :退出當(dāng)前的screen,保持其后臺運行

screen -r ID :指定進入哪個screen會話

Screen命令中用到的快捷鍵

Ctrl+a c :創(chuàng)建窗口

Ctrl+a w :窗口列表

Ctrl+a n :下一個窗口

Ctrl+a p :上一個窗口

Ctrl+a 0-9 :在第0個窗口和第9個窗口之間切換

Ctrl+a K(大寫) :關(guān)閉當(dāng)前窗口,并且切換到下一個窗口 ,

(當(dāng)退出最后一個窗口時,該終端自動終止,并且退回到原始shell狀態(tài))

exit :關(guān)閉當(dāng)前窗口,并且切換到下一個窗口

(當(dāng)退出最后一個窗口時,該終端自動終止,并且退回到原始shell狀態(tài))

Ctrl+a d :退出當(dāng)前終端,返回加載screen前的shell命令狀態(tài)

Ctrl+a " : 窗口列表不同于w

以上這篇inotify+rsync實現(xiàn)實時同步的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。


當(dāng)前題目:inotify+rsync實現(xiàn)實時同步的方法
當(dāng)前鏈接:http://weahome.cn/article/pjhscs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部