1、什麼是rsyncmysql
rsync,remote synchronize是一款實現遠程同步功能的軟件,它在同步文件的同時,能夠保持原來文件的權限、時間、軟硬連接等附加信息。rsync是用 「rsync算法」提供了一個客戶機和遠程文件服務器的文件同步的快速方法,並且能夠經過ssh方式來傳輸文件,這樣其保密性也很是好,另外它仍是免費的軟件。算法
2、rsync特色sql
一、能更新整個目錄和樹和文件系統;
二、有選擇性的保持符號鏈鏈、硬連接、文件屬於、權限、設備以及時間等;
三、對於安裝來講,無任何特殊權限要求;
四、對於多個文件來講,內部流水線減小文件等待的延時;
五、能用rsh、ssh 或直接端口作爲傳輸入端口;
六、支持匿名rsync 同步文件,是理想的鏡像工具;shell
3、搭建rsync服務器:vim
備份服務器信息:bash
server:192.168.1.161服務器
系統環境:CentOS release 6.5 (Final)ssh
內核版本:2.6.32-431.el6.x86_64工具
客戶端信息測試
rhel:192.168.1.162
系統環境:Red Hat Enterprise Linux Server release 6.5 (Santiago)內核版本:2.6.32-431.el6.x86_64
須要備份的目錄:將客戶端/backup中的內容備份到備份服務器的/backup中
一、數據同步rsync
二、本地打包腳本實現
三、配置定時任務
備份服務器的配置
# yum -y install rsync
rsync版本:rsync.x86_64 0:3.0.6-12.el6
配置文件
rsync的主要有如下三個配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密碼文件)、rsyncd.motd(rysnc服務器信息)
服務器配置文件(/etc/rsyncd.conf),該文件默認不存在,請建立它。
具體步驟以下:
# touch /etc/rsyncd.conf #建立rsyncd.conf,這是rsync服務器的配置文件。
# touch /etc/rsyncd.secrets #建立rsyncd.secrets ,這是用戶密碼文件。
# chmod 600 /etc/rsyncd.secrets #將rsyncd.secrets這個密碼文件的文件屬性設爲root擁有, 且權限要設爲600, 不然沒法備份成功!
# touch /etc/rsyncd.motd
編輯/etc/rsyncd.conf文件
# vim /etc/rsyncd.conf
pid file = /tmp/rsyncd.pid
port = 873
address = 192.168.1.161
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow=192.168.1.0/24
hosts deny=*
max connections = 5
motd file = /etc/rsyncd.motd
log format = %t %a %m %f %b
syslog facility = local3
log file = /tmp/rsync.log
transfer logging = yes
timeout = 300
[mysqldate]
path = /backup
list=no
ignore errors
auth users = root
secrets file = /etc/rsyncd.secrets
comment = zhushi
編輯/etc/ rsyncd.secrets文件
# vim rsyncd.secrets
root:fanjinbao
編輯/etc/rsyncd.motd文件
裏面內容想寫啥就寫啥
啓動rsync的服務
# /usr/bin/rsync -–daemon --config=/etc/rsyncd.conf
--daemon參數方式,是讓rsync以服務器模式運行
--config用於指定rsyncd.conf的位置,若是在/etc下能夠不寫
客戶端配置:
客戶端基本不用配置,直接備份就ok啦
# rsync -azP --delete /backup root@192.168.1.161:/
常見的選項:
-a,--archive(存檔) 歸檔模式,表示以遞歸的方式傳輸文件,而且保持文件屬性,等同於加了參數-rlptgoD
-z , --compress 表示壓縮傳輸
-P 顯示傳輸進度
--delete 刪除那些目標位置有而原始位置沒有的文件
具體選項及參數說明:
rsync有六種不一樣的工做模式:
一、拷貝本地文件;當SRC和DES路徑信息都不包含有單個冒號":"分隔符時就啓動這種工做模式。
二、使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號":"分隔符時啓動該模式。
三、使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號":"分隔符時啓動該模式。
四、 從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啓動該模式。
五、從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含"::"分隔符時啓動該模式。
六、列遠程機的文件列表。這相似於rsync傳輸,不過只要在命令中省略掉本地機信息便可。
-a 以archive模式操做、複製目錄、符號鏈接 至關於-rlptgoD
rsync中的參數
-r 是遞歸;
-l 是連接文件,意思是拷貝連接文件;-p 表示保持文件原有權限;
-L 複製軟連接文件的原文件
-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 至關於塊設備文件;
-z 傳輸時壓縮;
-P 傳輸進度;
-v 傳輸時的進度等信息,和-P有點關係,本身試試。能夠看文檔;
-e ssh的參數創建起加密的鏈接。
-u只進行更新,防止本地新文件被重寫,注意二者機器的時鐘的同時
--progress是指顯示出詳細的進度狀況
--delete是指若是服務器端刪除了這一文件,那麼客戶端也相應把文件刪除,保持真正的一致
--exclude不一樣步的文件
--password-file=/password/path/file來指定密碼文件,這樣就能夠在腳本中使用而無需交互式地輸入驗證密碼了,這裏須要注意的是這份密碼文件權限屬性要設得只有屬主可讀。
4、使用ssh密鑰實現無交互備份。作成腳本,將rhel上的數據,按期備份到server上。
在rhel上生成密鑰對
# ssh-keygen
查看生成的公鑰和私鑰:
[root@rhel backup]# ls /root/.ssh/
id_rsa id_rsa.pub known_hosts
將公鑰上傳到server數據源
# ssh-copy-id root@192.168.1.161
或者
# scp /root/.ssh/id_rsa.pub root@192.168.1.161:/root/.ssh/authorized_keys
注:若是使用scp命令必須兩臺機器均可以用scp命令,不然不能使用
5、配置rsync+inotify實現實時同步
inotify概述:
Linux內核從2.6.13版本開始提供了inotify通知接口,用來監控文件系統的各類變化狀況,如文件存取、刪除、移動等。利用這一機制,能夠很是方便地實現文件異動告警、增量備份,並針對目錄或文件的變化及時做出響應。
使用rsync工具與inotify機制相結合,能夠實現觸發式備份(實時同步),只要原始位置的文檔發生變化,則當即啓動增量備份操做,不然處於靜態等侍狀態,這樣一來,就避免了按固定週期備份進存在的延遲性、週期過密等問題。
安裝inotify-tools-3.13.tar.gz
# tar zxvf inotify-tools-3.13.tar.gz
# cd inotify-tools-3.13
./configure --prefix=/usr/local/inotify-tools
# make
# make install
設置inotify-tools的環境變量
# vim .bash_profile
加入imotify的路徑/usr/local/inotify-tools/bin
# source .bash_profile
執行監控:
# inotifywait -mrq -e create,move,delete,modify /backup
報錯:
error while loading shared libraries: libinotifytools.so.0
解決辦法:
# ln -sv /usr/local/inotify-tools/lib/libinotify* /usr/lib/
# ln -s /usr/local/inotify-tools/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
# cp /usr/lib/libinotifytools.so.0 /usr/local/lib
而後在執行監控
# inotifywait -mrq -e create,move,delete,modify /backup
就能夠了
同步腳本:
# vim backup.sh
#!/bin/bash
inotifywait -mrq -e create,move,delete,modify /backup | while read a b c
do
rsync -azP --delete /backup root@192.168.1.161:/
done
# chmod 755 backup.sh
./backup.sh &
6、利用服務方式同步數據
編輯服務端的配置文件
# vim /etc/rsyncd.conf不用懷疑就用這個命令,沒有就增長
添加以下內容:
port=8730
log file=/var/log/rsync.log
pid file=/var/run/rsync.pid
[fanjinbao]
path=/backup
use chroot=true
max connection=4
read only=yes
list=yes
uid=root
gid=root
auth users=root
secrets file=/etc/rs.passwd
hosts allow=192.168.1.162
注意:修改文件後不須要重啓服務
建立密碼文件:
# vim /etc/rs.passwd
# chmod 400 /etc/rs.passwd
啓動服務:
# rsync --daemon
去客戶端測試:
# rsync -avzP --port 8730 test@192.168.1.161::test/ .
在客戶端指定密碼文件,無交互同步數據
# vim /etc/rsync_passwd編輯密碼文件
# chmod 400 /etc/rsync_passwd設置爲只讀
# rsync -avzP --port 8730 --password-file=/etc/rsync_passwd test@192.168.1.161::test/ .