一、認識
Rsync(remote synchronize)是一個遠程數據同步工具,可經過LAN/WAN快速同步多臺主機間的文件。Rsync使用所謂的「Rsync算法」來使本地和遠 程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不一樣部分,而不是每次都整份傳送,所以速度至關快
Rsync支持大多數的類Unix系統,不管是Linux、Solaris仍是BSD上都通過了良好的測試
此外,它在windows平臺下也有相應的版本,如cwRsync和Sync2NAS等工具
算法
二、原理
Rsync原本是用於替代rcp的一個工具,目前由rsync.samba.org維護,因此rsync.conf文件的格式相似於samba的主配 置文件;Rsync能夠經過rsh或ssh使用,也能以daemon模式去運行
在以daemon方式運行時Rsync server會打開一個873 端口,等待客戶端去鏈接。鏈接時,Rsync server會檢查口令是否相符,若經過口令查覈,則能夠開始進行文件傳輸。第一次連通完成時,會把整份文件傳輸一次,之後則就只需進行增量備份
shell
三、特色
一、能夠鏡像保存整個目錄樹和文件系統;
二、能夠很容易作到保持原來文件的權限、時間、軟硬連接等;
三、無須特殊權限便可安裝;
四、優化的流程,文件傳輸效率高;
五、可使用rsh、ssh等方式來傳輸文件,固然也能夠經過直接的socket鏈接;
六、支持匿名傳輸
七、相似與scp,cp ls rm命令
windows
四、能夠實現:
可實現Windows Linux unix 等不一樣平臺的全量及增量的本地或者全程數據同步備份的優秀工具
centos
-H 保留源文件的硬連接文件 -r 遞歸模式,包含目錄及子目錄的全部信息 -z 在傳輸文件的同時進行壓縮 -v 顯示同步過程的信息 -t 保留文件的時間標記 -o 保留文件的屬主標記 -p 保留了文件的權限標記 -D 保留了設備文件和一些特殊的文件 -S 對零散文件的處理 -g 保留了文件的屬組信息 --version 查看rsync版本
1.支持拷貝普通文件與特殊文件,如:符號連接,塊設備,字符設備等
2.支持同步時的排除功能
3.支持保持權限等全部屬性拷貝(如 cp -p)
4.支持增量同步,只同步發生變化的數據,傳輸效率高
安全
本地複製文件: rsync /etc/hosts /opt/
服務器
本地複製目錄( -r ) rsync -r /etc /opt/
架構
刪除目錄下的文件(須要建立一個/null 的空目錄): rsync -r --delete /null/ /tmp/
ssh
null 解釋 --- 其實就是讓 一個空目錄與有文件的目錄進行同步. 讓有文件的目錄與空文件保持同步socket 這樣有文件的目錄通過同步也會成爲空目錄,這就是rsync刪除的原理ide |
rsync複製文件到遠程服務器: scp -rp /etc/hosts 10.0.0.4/tmp ##----須要輸入遠程服務器的密碼
複製目錄到遠程服務器: [root@chenleilei ~]# rsync /etc/hosts 10.0.0.4:/tmp
root@10.0.0.4's password:
複製目錄: rsync -r /etc /tmp 複製文件 rsync -a /etc/hosts /tmp
rsync /etc/hosts 10.0.0.4:/tmp
[root@chenleilei ~]# rsync chenleilei/123.txt -rw-r--r-- 0 2018/05/03 21:35:51 123.txt
1.建立一個空目錄 chenleilei 2.rsync --delete -r 123/ chen/
關於這個rm功能的說明: 能作到rm刪除的效果僅僅是因額外rsync的同步功能,他會把一個目錄
中的內容與另外一個目錄進行主動同步,使得被同步目錄與同步目錄保持一致,若是同步的目錄爲空
那麼它被同步的目錄也會成爲空,固然,若是須要同步的中有一個文件,那麼同步成功後主動同步的
目錄就會替換掉被同步內容.
全量備份會對服務器進行總體備份,通常第一次啓動rsync的時候會進行一次全量備份
增量備份只會對新增或者修改的文件進行備份 centos6之後的增量備份原理是:檢查源數據與目標數據的差別,檢查到有差別的文件當即備份到目標服務器,也就是邊比對,邊同步
經過soket(進程方式) 傳輸文件和數據(服務端客戶端) ----重點掌握
使用rcp,rsh,ssh等方式來配合進行隧道加密傳輸文件(rsync不會對是數據進行加密)
支持匿名或認證(匿名:無需系統用戶)的進程模式傳輸,實現方便安全的進行數據備份
1.利用定時任務+rsync方式進行數據同步[內部員工使用場景]
2.利用實時任務+rsync方式進行數據同步[外部遠程使用場景]
全網備份方案
藉助cron+rsync 把全部客戶服務器數據同步到備份服務器 全網服務器數據備份解決方案提出和負責實施 1.針對中喲啊數據備份混亂,向領導提出全網數據的備份解決方案 2.經過本地打包備份,使用 rsync結合 inotify 服務 實現全往數據統一備份到一個固定的服務器 而後保存在存儲服務器中,並使用腳本檢查,並通知管理員備份結果. 3.按期將IDC機房的數據備份到公司的內部服務器,防止機房地震及火災問題致使的數據丟失.
1.本地同步方式: rsync 選項 源 目標 例子: rsync -r /etc /opt/ 2.shell遠程同步方式: 3.經常使用同步參數 -rp : -r : 遞歸處理 -p: 保留權限 root@10.0.0.4: 遠程主機用戶身份和IP地址 4.文件的拉取和推送操做: 4.1 拉取遠程數據(pull): rsync -rp root@10.0.0.4:/tmp/hosts /etc/ 4.2 推送到遠程服務器(push): rsync -rp /etc/hosts root@10.0.0.4:/tmp 5.目錄的拉取推送操做: (/ 和不加 / 的區別是 加/是把目錄中內容推送, 不加/ 是推送目錄) 5.1 推送本地目錄到遠程/tmp目錄下 rsync -rp /etc/sysconfig root@10.0.0.4:/tmp 5.2 拉取遠程目錄到本地當前目錄下 rsync -rp root@10.0.0.3:/tmp/chen .
rsync默認配置文件沒有被建立,它默認的配置文件存放地: /etc/rsyncd.conf
#rsync_config #created by HQ at 2017 ##rsyncd.conf start## uid = rsync ##用戶id gid = rsync ##用戶組的gid use chroot = no ## 安全配置.最好關閉 max connections = 200 ##最大鏈接數 timeout = 300 ## 超時時間 pid file = /var/run/rsyncd.pid ##服務運行時的進程pid (查看pid後能夠經過kill 殺死) lock file = /var/run/rsync.lock ##進程鎖文件(超過最大鏈接後鎖定) log file = /var/log/rsyncd.log ##程序運行的日誌文件 ignore errors ##忽略錯誤(避免報錯後中止,因此暫時忽略錯誤繼續備份) read only = false ##是否只讀 force 可讀可寫 list = false ##列表 hosts allow = 172.16.1.0/24 ##容許 hosts deny = 0.0.0.0/32 ##拒絕 auth users = rsync_backup secrets file = /etc/rsync.password [backup] comment = "backup dir by oldboy" path = /backup ##模塊保存的目錄 |
#created by chen at2018 ##rsyncd.conf start uid = rsync gid = rsync use chroot = on max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/tsyncd.log ignore errors hosts allow = 172.16.1.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.passwd [backup] comment = "backup dir by chenleilei" path = /backup 寫入到/etc/rsyncd.conf文件中
useradd -s /sbin/nologin -M rsync
echo ‘rsync_backup:123456‘ >/etc/rsync.passwd chmod 600 /etc/rsync.passwd ----給這個權限是不想讓除了root以外的其餘用戶看到
mkdir -p /backup chown rsync.rsync /backup
基本配置完成
rsync --daemon 他有進程信息 經過 ps -ef | grep rsync 查看
[root@oldboyedu-sh01 ~]# ps -ef | grep rsync root 2230 2119 0 01:08 pts/0 00:00:00 grep rsync
有就表明啓動完成了,自此esync服務就配置完成了