與傳統的cp、
tar備份方式相比,
rsync
具有安全性高、備份迅速、支援增量備份等優點,通過
rsync
可以解決對實時性要求不高的資料備份需求,例如定期的備份檔案伺服器資料到遠端伺服器,對本地磁碟定期做資料映象等。
隨著應用系統規模的不斷擴大,對資料的安全性和可靠性也提出的更好的要求,
rsync
在高階業務系統中也逐漸暴露出了很多不足,首先,
rsync
同步資料時,需要掃瞄所有檔案後進行比對,進行差量傳輸。如果檔案數量達到了百萬甚至千萬量級,掃瞄所有檔案將是非常耗時的。而且正在發生變化的往往是其中很少的一部分,這是非常低效的方式。其次,
rsync
不能實時的去監測、同步資料,雖然它可以通過
linux
守護程序的方式進行觸發同步,但是兩次觸發動作一定會有時間差,這樣就導致了服務端和客戶端資料可能出現不一致,無法在應用故障時完全的恢復資料。基於以上原因,
rsync+inotify
組合出現了!
inotify
是乙個2.6.13
的核心版本)
rsync是類unix系統下的資料映象備份工具——remote sync。一款快速增量備份工具remote sync,遠端同步支援本地複製,或者與其他ssh、rsync主機同步
環境描述
配置環境:centos 6.5
rsync版本:rsync-3.0.6
inotify版本:inotify-tools-3.13
伺服器端:192.168.1.3
客戶端:192.168.1.4
1、安裝rsync服務端
yum install rsync xinetd
2、編輯配置檔案,設定開機啟動
rsync
vi /etc/xinetd.d/rsync #
將disable
後的引數改為no3
、建立rsyncd.conf
配置檔案
vi /etc/rsyncd.conf
use chroot=no #
預設為true
,修改為
no,增加對目錄檔案軟連線的備份
max connections=4 #
最大連線數字
4pid file=/var/run/rsyncd.pid #pid
檔案的存放位置
log file=/var/log/rsyncd.log #
日誌檔案的位置
lock file=/var/run/rsync.lock #
支援max connections
引數的鎖檔案
[roothome]#
自定義名稱
uid=root #
設定rsync
執行許可權為
root
gid=root #
設定rsync
執行許可權為
root
path=/var/roothome #rsync
服務端資料目錄路徑
comment=roothome #
模組名稱與自定義名稱相同
ignore errors=yes ·# rsyncd
在判斷是否執行傳輸時的刪除操作時忽略
server
上的io
錯誤,一般來說
rsync
在出現io
錯誤時將將跳過
--delete
操作,以防止因為暫時的資源不足或其它
io錯誤導致的嚴重問題
read only=no #
設定是否允許客戶上載檔案。如果為
yes那麼任何上載請求都會失敗,如果為
no並且伺服器目錄讀寫許可權允許那麼上載是允許的。預設值為
yeslist=no#
使用者請求列出可使用的模組列表時,該模組是否被列出
auth users=root#
指定由空格或逗號分隔的使用者名稱列表,只有這些使用者才允許連線該模組
這裡的使用者和系統使用者沒有任何關係
。如果"auth users"
被設定,那麼客戶端發出對該模組的連線請求以後會被
rsync
請求challenged
進行驗證身份這裡使用的
challenge/response
認證協議。使用者的名和密碼以明文方式存放在
"secrets file"
選項指定的檔案中。預設情況下無需密碼就可以連線模組
(也就是匿名方式
)secrets file=/etc/roothome.pass#
指定乙個包含定義使用者名稱
:密碼對的檔案。只有在
"auth users"
被定義時,該檔案才有作用。檔案每行包含乙個
username:passwd
對。一般來說密碼最好不要超過
8個字元。沒有預設的
secures file
名,需要限式指定乙個
(例如:
/etc/rsyncd.passwd)
。注意:該檔案的許可權一定要是
600,否則客戶端將不能連線伺服器
4、建立使用者認證檔案
vi /etc/rsync.pass
root:1.q1.q
5、設定檔案許可權
chmod 600 /etc/rsyncd.conf #
設定檔案所有者讀取、寫入許可權
chmod 600 /etc/roothome.pass #
設定檔案所有者讀取、寫入許可權
6、啟動
rsync
/etc/init.d/xinetd start #
啟動service xinetd stop #
停止service xinetd restart #
重新啟動
安裝rsync
客戶端yum install rsync xinetd
編輯配置檔案,設定開機啟動
rsync
vi /etc/xinetd.d/rsync #
將disable
後的引數改為
no建立密碼認證檔案(客戶端只需要存在密碼)
vi /etc/roothome.txt
1.q1.q
測試客戶端是否可以向伺服器上傳資料
最小2.6.13
核心安裝
inotify-tools
yum install make gcc gcc-c++ #
安裝編譯工具
tar zxvf inotify-tools-3.13.tar.gz #
解壓cd inotify-tools-3.13#
進入解壓目錄
./configure --prefix=/usr/local/inotify #
配置make #
編譯make install #
安裝設定系統環境變數,新增軟連線
echo "path=/usr/local/inotify/bin:$path" >>/etc/profile.d/inotify.sh
source /etc/profile.d/inotify.sh #
使設定立即生效
echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf
ln -s /usr/local/inotify/include /usr/include/inotify
修改inotify
預設引數(
inotify
預設核心引數值太小)
修改引數:
sysctl -w fs.inotify.max_queued_events="99999999"
sysctl -w fs.inotify.max_user_watches="99999999"
sysctl -w fs.inotify.max_user_instances="65535"
vi /etc/sysctl.conf #
新增以下**
fs.inotify.max_queued_events=99999999 #inotify
佇列最大長度
fs.inotify.max_user_watches=99999999 #
要同步的檔案包含多少目錄
fs.inotify.max_user_instances=65535 #
每個使用者建立
inotify
例項最大值
Linux下Redis下安裝
redis安裝 檢查是否安裝redis ps ef grep redis2.檢查gcc服務是否安裝成功 rpm qa grep gcc注 安裝成功則顯示 mkdir redis5.解壓redis安裝包 tar zxvf redis 2.8.17 tar.gz c usr local redis 解壓...
Linux下程式設計
windows下我的環境為 windows10 vs2015 opencv3.4.0 opencv3.4.0 contrib python linux下我的環境為 ubuntu16004 也有ubuntu1804 opencv3.4.0 opencv3.4.0 contrib python gnu ...
linux下萬用字元
萬用字元是一類鍵盤字元,有星號 和問號 當查詢檔案呀資料夾時,可以使用它來代替乙個或多個真正字元 當不知道真正字元或者不想建入完整名字時,常常使用萬用字元代替乙個或多個真正字元。星號 可以使用星號代替0個或多個字元。如果正在查詢以aew開頭的乙個檔案,但不記得檔名其餘部分,可以輸入aew,查詢以ae...