CentOS下(rsync+crontab) 觸發(fā)式實現(xiàn)服務(wù)器間文件備份同步

背景

  • 隨著時間的推移,即便當初再小的項目乎芳,如今也變得五臟俱全宛逗,尤其是在不斷的更新迭代后,代碼量和文件數(shù)目越來越大年扩,多數(shù)又不止使用了一個服務(wù)器(負載均衡)

  • 此時如果進行功能上線蚁廓,需要依次上傳文件,太過繁雜厨幻,而且容易漏傳相嵌,所以想著找一種方法,只需上傳其中的一臺服務(wù)器况脆,從服務(wù)器自動進行數(shù)據(jù)同步則便捷了許多饭宾,于是找到了 rsync 文件備份的支持.

  • 測試環(huán)境: CentOS 6.5,CentOS 7

【聲明】:文章主要參考來源 -【rsync 實現(xiàn)文件備份同步】格了,然后根據(jù)自己的具體情況進行了實例說明看铆,在此謝謝前輩們的經(jīng)驗指導(dǎo)...

一、概念介紹

(1). 什么是 rsync盛末?

  • rsync 是類 unix系統(tǒng)下的數(shù)據(jù)鏡像備份工具 —— remote sync弹惦。一款快速增量備份工具 Remote Sync,遠程同步 支持本地復(fù)制悄但,或者與其他SSH棠隐、rsync主機同步。

  • 第一次同步時, rsync 會復(fù)制全部內(nèi)容檐嚣,但在下一次只傳輸修改過的文件助泽。rsync在傳輸數(shù)據(jù)的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬。

  • rsync 是用 “ rsync 算法” 提供了一個客戶機和遠程文件服務(wù)器的文件同步的快速方法

(2). rsync 的一些特性

  1. 能更新整個目錄和樹和文件系統(tǒng)
  2. 有選擇性的保持符號鏈鏈嗡贺、硬鏈接隐解、文件屬于、權(quán)限诫睬、設(shè)備以及時間等
  3. 對于安裝來說厢漩,無任何特殊權(quán)限要求
  4. 對于多個文件來說,內(nèi)部流水線減少文件等待的延時
  5. 安全岩臣,能用 rsh、ssh 或直接端口做為傳輸端口宵膨,或者 socket 連接
  6. 支持匿名 rsync 同步文件架谎,是理想的鏡像工具
  7. 免費啊

二、功能分析

  • 配置此功能辟躏,首先明確的是谷扣,在角色上,需要服務(wù)端和客戶端 (1:N)
  • 服務(wù)端捎琐,主要負責(zé)文件的首次上傳会涎,更新操作等
  • 客戶端,會隨著服務(wù)端的文件變化進行同步-(下載瑞凑,更新末秃,刪除等)

在操作上,最簡單的配置比例為【服務(wù)端:客戶端 = 1:1】
例如籽御,本次的實際操作中练慕,我配置了一個服務(wù)端(IP:192.168.1.160),其中的一個客戶端(IP:192.168.1.161)技掏,后期添加了另一個客戶端(IP:192.168.1.150

三铃将、配置操作【重點】

(1). 服務(wù)端配置

①. 安裝 rsync
  • 一般當下的 CentOS 系統(tǒng)都默認安裝了此軟件,建議運行命令 rsync 查看哑梳,一般會有如下的界面:
image
  • 如果沒有出現(xiàn)上述界面劲阎,可自行安裝,如以下命令:
yum install rsync 
②. 進行配置文件的修改【建議 root 用戶下操作
  • rsync 的主要有以下三個配置文件:

rsyncd.conf (主配置文件)鸠真、rsyncd.secrets (密碼文件)悯仙、rsyncd.motd ( rysnc 服務(wù)器顯示信息)

  • 服務(wù)器配置文件( /etc/rsyncd.conf ),該文件默認不存在弧哎,需要創(chuàng)建它
(1). 依次執(zhí)行如下命令:
mkdir /etc/rsyncd
touch /etc/rsyncd/rsyncd.conf #創(chuàng)建 rsyncd.conf雁比,這是 rsync 服務(wù)器的配置文件
ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf
touch /etc/rsyncd/rsyncd.secrets  #創(chuàng)建 rsyncd.secrets ,這是用戶密碼文件
chmod 600 /etc/rsyncd/rsyncd.secrets  #將rsyncd.secrets這個密碼文件的文件屬性設(shè)為root擁有, 且權(quán)限要設(shè)為 600, 否則無法備份成功
touch /etc/rsyncd/rsyncd.motd
(2). 修改 rsyncd.conf
  • rsyncd.conf 是 rsync 服務(wù)器主要配置文件撤嫩。以下為我的文件信息偎捎,可作參考或進行進一步的修改
  • 如下代碼表示,我要備份服務(wù)器上的 /server/ftpfile 目錄,同時想把 /server/ftpfile/file3 目錄排除在外
# Distributed under the terms of the GNU General Public License v2
# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help

# This line is required by the /etc/init.d/rsyncd script
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secrets file = /etc/rsyncd/rsyncd.secrets
motd file = /etc/rsyncd/rsyncd.motd

port = 873 # 指定運行端口茴她,默認是873寻拂,您可以自己指定;
address = 192.168.1.160 #指定服務(wù)端IP地址

# uid = nobody
# gid = nobody

uid = root
gid = root


use chroot = no
read only = yes

#limit access to private LANs
hosts allow=192.168.1.161 192.168.1.150 #以空格分割 客戶端IP
hosts deny=*

max connections = 10

#This will give you a separate log file
log file = /var/log/rsync.log

#This will log every file transferred - up to 85,000+ per user, per sync
transfer logging = yes

log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

[ftpfile]
path = /server/ftpfile
list=yes
ignore errors = true
auth users = root
#auth users 是必須在服務(wù)器上存在的真實的系統(tǒng)用戶丈牢,如果你想用多個用戶以 “,” 號隔開祭钉,比如auth users = moTzxx,root
comment = This is moTzxx-comment #提交信息,便于識別
exclude = file3/
#此處表明己沛,同步文件 除去所有的 file3 目錄慌核,如果以斜杠開頭,則可指定“path = /server/ftpfile”下的任何目錄或文件申尼,例如“/file1/file5/re.log”,指的是文件“/server/ftpfile/file1/file5/re.log”
(3). 設(shè)定密碼文件
  • 密碼文件格式很簡單垮卓,rsyncd.secrets 的內(nèi)容格式為:user:password
  • 例如,我使用的是 **root ** 賬戶师幕,密碼為 root123粟按,則進行下面的命令:
vim /etc/rsyncd/rsyncd.secrets

添加信息:root:root123

  • 修改屬主和修改權(quán)限 (若已經(jīng)是了,就無需修改了)
chown root.root /etc/rsyncd/rsyncd.secrets  
chmod 600 /etc/rsyncd/rsyncd.secrets    
(4). 設(shè)定 rsyncd.motd 文件
  • 它是定義 rysnc 服務(wù)器信息的霹粥,也就是用戶登錄信息灭将。比如讓用戶知道這個服務(wù)器是誰提供的等,其實影響并不大,只是為了便于說明
vim /etc/rsyncd/rsyncd.motd

自定義添加如下:

++++++++++++++++++++++++++++++++++++++++++
      Welcome to moTzxx`s world!
++++++++++++++++++++++++++++++++++++++++++

(2). rsync 服務(wù)器啟動

  • 在此后控,只介紹 讓 rsync 以服務(wù)器模式運行的 daemon 參數(shù)方式庙曙,詳情見附錄。
  • 此時為服務(wù)端操作(IP:192.168.1.160)
  • 如下依然為【root】 權(quán)限下操作
①. 以 root 身份啟動 rsync
/usr/bin/rsync --daemon 
/usr/bin/rsync --daemon  --config=/etc/rsyncd/rsyncd.conf  #--config用于指定rsyncd.conf的位置,如果在/etc下可以不寫
②. 查看相應(yīng)進程
sudo lsof -i :873
image
③. rsync 服務(wù)器和防火墻

注:】如果第二步能獲得 873 進程信息浩淘,這一步?jīng)]必要進行操作矾利,本人在開啟測試前,就關(guān)閉了防火墻

  • Linux 防火墻是用 iptables馋袜,所以我們至少在服務(wù)器端要讓你所定義的rsync 服務(wù)器端口通過男旗,客戶端上也應(yīng)該讓通過。
iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
iptables -L  #查看一下防火墻是不是打開了 873端口
  • 如果你不太懂防火墻的配置欣鳖,可以先用service iptables stop 將防火墻關(guān)掉察皇。當然在生產(chǎn)環(huán)境這是很危險的,可千萬不要這么做泽台!

(3). 客戶端:

①. 安裝 rsync:
yum install rsync 
②. 配置密碼文件 rsyncd.secrets

【注意】:服務(wù)器端的密碼應(yīng)該以 user:password 的形式存放明文密碼什荣,而客戶端的密碼只需要以 password 的明文形式保存
 【執(zhí)行命令】(舉例密碼為 root123):

echo root123> rsyncd.secrets
chmod 600 rsyncd.secrets
③. 主要命令
1). 列出 rsync 服務(wù)器上的所提供的同步內(nèi)容
  • 第一種( 需要密碼):
rsync  --list-only  192.168.1.160::ftpfile 
  • 第二種:
rsync  --list-only  --password-file=/server/rsyncd.secrets 192.168.1.160::ftpfile
2). 文件同步命令
  • 第一種( 需要密碼):
rsync  -avzP  192.168.1.160::ftpfile /server/ftpfile
  • 第二種:
rsync  -avzP  --password-file=/server/rsyncd.secrets 192.168.1.160::ftpfile /server/ftpfile
3). 客戶端上的數(shù)據(jù)要與服務(wù)器端完全一致
  • 第一種( 需要密碼):
rsync  -avzP --delete  192.168.1.160::ftpfile /server/ftpfile
  • 第二種:
rsync  -avzP --delete  --password-file=/server/rsyncd.secrets  192.168.1.160::ftpfile /server/ftpfile

表示客戶端上的數(shù)據(jù)要與服務(wù)器端完全一致,如果 ftpfile 目錄中有服務(wù)器上不存在的文件怀酷,則刪除稻爬。最終目的是讓 ftpfile 目錄上的數(shù)據(jù)完全與服務(wù)器上保持一致;用的時候要小心點蜕依,最好不要把已經(jīng)有重要數(shù)所據(jù)的目錄桅锄,當做本地更新目錄琉雳,否則會把你的數(shù)據(jù)全部刪除

④. 定時更新 實現(xiàn)方法:
(1). 一種方法:直接在 /etc/crontab 中添加命令
  • 找到 crontab 文件所在位置,根據(jù)定時任務(wù)配置規(guī)范添加信息友瘤,以本人為例翠肘,在目錄/etc/crontab
vi /etc/crontab

或者通過 crontab 進行設(shè)定 ,執(zhí)行命令:crontab -e

  • 在后面添加命令(舉例,每分鐘執(zhí)行一次文件同步辫秧,作為測試)
*/1 * * * *  rsync  -avzP --password-file=/server/rsyncd.secrets  192.168.1.160::ftpfile /server/ftpfile
(2). 第二種方法:腳本實現(xiàn)
  • 寫腳本(名字自定義束倍,相當于一個存放定時任務(wù)命令的文件而已)
vim /server/ftp-update-ftpfile.sh #自定義即可
  • 添加代碼
#!/bin/bash
rsync  -avzP --password-file=/server/rsyncd.secrets  192.168.1.160::ftpfile /server/ftpfile
  • 通過 crontab 設(shè)定,讓這個腳本每 1 分鐘(測試)運行一次盟戏。執(zhí)行命令:
crontab -e
  • 輸入以下一行:
*/1 * * * * /server/ftp-update-ftpfile.sh
(3). 上述方法配置好后绪妹,要重啟 crond 服務(wù)器
  • 執(zhí)行如下的命令
killall crond    #注:殺死crond 服務(wù)器的進程;
ps aux |grep crond # 注:查看一下是否被殺死柿究;
/usr/sbin/crond    #注:啟動 crond 服務(wù)器喂急;
(4). 注意/提醒
  1. 個人發(fā)現(xiàn):
  • 使用非腳本命令執(zhí)行的可行性高,期間測試了好多次笛求,當然也有可能是自己的配置存在問題
  • 使用腳本命令,相對而言要方便些糕簿,更改腳本文件信息后探入,不需要每次重啟 crond ,當然希望能正確配置懂诗,那就再好不過了
  • 個人測試而言蜂嗽,腳本命令對于 CentOS6.5 可行,而對于 CentOS7 卻不執(zhí)行
  1. 建議參考文章

附錄:

(1). 說明

(2). 參考文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末植旧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子离唐,更是在濱河造成了極大的恐慌病附,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亥鬓,死亡現(xiàn)場離奇詭異完沪,居然都是意外死亡,警方通過查閱死者的電腦和手機嵌戈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進店門覆积,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人熟呛,你說我怎么就攤上這事宽档。” “怎么了庵朝?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵吗冤,是天一觀的道長又厉。 經(jīng)常有香客問我,道長欣孤,這世上最難降的妖魔是什么馋没? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮降传,結(jié)果婚禮上篷朵,老公的妹妹穿的比我還像新娘。我一直安慰自己婆排,他們只是感情好声旺,可當我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著段只,像睡著了一般腮猖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赞枕,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天澈缺,我揣著相機與錄音,去河邊找鬼炕婶。 笑死姐赡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的柠掂。 我是一名探鬼主播项滑,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涯贞!你這毒婦竟也來了辜纲?” 一聲冷哼從身側(cè)響起默怨,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后羹呵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體或衡,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡书劝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年损痰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片审磁。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡谈飒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出态蒂,到底是詐尸還是另有隱情杭措,我是刑警寧澤,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布钾恢,位于F島的核電站手素,受9級特大地震影響鸳址,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜泉懦,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一稿黍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧崩哩,春花似錦巡球、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至汹押,卻和暖如春矿筝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棚贾。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工窖维, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妙痹。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓铸史,卻偏偏與公主長得像,于是被迫代替她去往敵國和親细诸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,995評論 2 361

推薦閱讀更多精彩內(nèi)容