Linux基礎14-NTP網路時間協議、Rsync+inotify實時同步
NTP網路時間協議
NTP(Network Time Protocol)網路時間協議基於UDP,用於網路時間同步的協議,使網路中的計算機時鐘同步到UTC(世界統一時間),再配合各個時區的偏移調整就能實現精準同步對時功能。
chrony是網路時間協議NTP的實現方式, Chrony是一個開源的自由軟體 ,在RHEL7/CentOS7作業系統已經是預設安裝服務,它能保持系統時間與NTP時間伺服器的時間保持同步,讓時間始終保持同步。
軟體包:chrony(預設安裝)
服務名:chronyd
命令程式:chronyc
配置檔案:/etc/chrony.conf
配置檔案介紹:
vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#配置NTP時間伺服器
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
# Record the rate at which the system clock gains/losses time.
#記錄系統時鐘獲得/丟失時間的速率至drift檔案中
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
# 預設情況下,chronyd通過減慢或加快時鐘速度來逐漸調整時鐘。如果時鐘與實際時間偏差太大,則需要很長時間才能糾正錯誤。這種方法叫做步進時鐘(時間跳變)。
# 此處表示如果調整值大於1000秒,則這將使系統時鐘步進,但僅在前10個時鐘更新中。
makestep 1000 10
# Enable kernel synchronization of the real-time clock (RTC).
# 啟用RTC(實時時鐘)的核心同步
rtcsync
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# Allow NTP client access from local network.
# 只允許192.168.網段的客戶端進行時間同步
#allow 192.168.0.0/16
# Serve time even if not synchronized to a time source.
# NTP伺服器不可用時,採用本地時間作為同步標準
#local stratum 10
# Specify file containing keys for NTP authentication.
# 指定包含NTP驗證金鑰的檔案
#keyfile /etc/chrony.keys
# Specify directory for log files.
# 指定日誌檔案的目錄
logdir /var/log/chrony
# Select which information is logged.
#將對系統增益或損耗率的估計值以及所做的任何轉換記錄的更改記錄到名為的檔案中tracking.log
#log measurements statistics tracking
常用命令:
檢視時間同步源:chronyc sources -n
立刻手動同步時間:chronyc -a makestep
檢查時間是否同步:chronyc tracking
案例需求:搭配一臺NTP伺服器,同步阿里雲時間,當阿里雲時間不可用時,使用本地時間,其他伺服器同步這臺伺服器的時間,確保時間一致
修改服務端配置檔案:
vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# 註釋其他server開頭的配置,新增阿里雲NTP公共時間同步伺服器
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#新增阿里NTP服務
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
#允許所有網段客戶端進行時間同步
allow 0.0.0.0/0
#NTP伺服器不可用時,採用本地時間作為同步標準
local stratum 10
修改客戶端配置檔案:
vim /etc/chrony.conf
# 註釋其他server開頭的配置,新增本地NTP公共時間同步伺服器
server 192.168.0.24 iburst
rsync遠端同步
可實現本地或遠端主機資料同步與增量備份的工具
軟體安裝:原始碼安裝、二進位制RPM安裝
本地同步語法:
命令格式1:rsync 選項 本地目錄A 本地目錄B #同步整個目錄
命令格式2:rsync 選項 本地目錄A/ 本地目錄B #只同步目錄下的資料
常用選項:
-n #測試同步過程,不做實際修改
--delete #刪除目標目錄下多餘的文件
-v #顯示詳細操作資訊
-z #傳輸過程中啟用壓縮/解壓縮
-a #遞迴同步。包含目錄/子目錄及所有檔案、保留符號連結檔案、保留檔案許可權、時間標記、保留檔案的屬主/屬組標記、保留裝置檔案及其他特殊檔案
遠端同步語法:
命令格式1:rsync 本地目錄 使用者名稱@對方IP地址:/目標目錄 #同步源目錄本身
命令格式2:rsync 本地目錄/ 使用者名稱@對方IP地址:/目標目錄 #同步源目錄下內容
rsnyc+inotify實現同步
inotify是Linux核心用於通知使用者空間的程式檔案系統變化的機制,如檔案增加、刪除等事件可以立刻讓使用者得知
inotify使用方式
命令格式:inotify 選項 目標檔案
常用選項
-m #持續監控,捕獲一個事件後不退出
-r #遞迴監控,包括子目錄
-q #減少螢幕輸出資訊
-e #指定監控項:modify(修改)、move(移動)、create(建立)、delete(刪除)、attrib(許可權)
實時監控指令碼
實現從本地到遠端的web目錄推送,源目標:/var/www/html
#!/bin/bash
FROM_DIR="/var/www/html"
RSNYC_CMD="rsnyc -za --delete $FROM_DIR root@IP:/var/www/html"
while inotify -rqq -e modify,move,create,delete,attrib $FROM_DIR #q不顯示輸出
do
$RSNYC_CMD
done &