rsync

一 rsync 簡介

1 定義

官網:https://www.samba.org/ftp/rsync/rsync.html
是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具,適用於unix/linux/windos(中文字符,效率不高)

rsync 英文全稱:remote synchronization,rsync 基本本地兩個目錄之間的拷貝,核心應用是兩臺主機之間的數據遷移,類似於ssh中的scp,但scp 每次進行的是全量拷貝,而rsync之間是增量拷貝,同樣cp也是全量拷貝,rsync是增量拷貝,同時具有刪除文件和目錄的功能,又相當於rm的命令。
在同步備份數據時,默認情況下,僅同步大小或者最後修改時間發生變化的文件或目錄,當然也可以根據權限,屬主等屬性的變化同步,但是需要指定相應的參數,甚至可以實現只同步一個文件裏有變化的內容部分。
centos5,rsync2.x 比對方法: 把所有文件比對以便,然後進行同步。
centos6,rsync3.x 比對方法: 一邊比對差異,一邊對差異的部分進行同步。

2 特性

1 支持拷貝特殊文件,如鏈接文件,設備等
2 可以做排除拷貝功能
3 備份時可以保證文件的屬性不變
4 可以實現增量同步
5 可以通過rcp,rsh,ssh 等方式配合傳輸文件(本身不對數據加密)
6 通過啓動進程進行數據同步
7 支持匿名或認證的進程模式傳輸,可以實現方便安全的進行數據備份及鏡像。

3 工作場景介紹

1 定時備份
cron+rsync
2 實時數據同步
inotify+ rsync

4 rsync 的工作模式

1 local 相當於cp
2 通過ssh 進行遠程傳輸,可以加密
3 通過一個進程進行數據的備份傳輸
rsync 端口873(服務端) 推和拉都是客戶端的命令

二 rsync 實戰

1 參數詳解

參數 含義 參數說明
-v --verbose 詳細模式輸出,傳輸時的進度等消息
-z --compress 傳輸時進行壓縮以提高效率,--compress-level=NUM 可按級別壓縮
-a --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rtopgDI
-r --resursive 對子目錄以遞歸模式,及目錄下面的所有目錄都同樣傳輸
-t --times 保持文件時間信息
-o --owner 保持文件屬主信息
-p --perms 保持文件權限
-g --group 保持文件屬組信息
-P --progress 顯示同步的過程及傳輸時的進度等信息
-D --devices 保持設備文件信息
-l --links 保留軟連接
-e --rsh=COMMAND 使用的信道協議,指定代替rsh的shell程序,如ssh

--exclude=PATTERN 指定排除不需要傳輸的文件模式
--exclude-from =file (文件名所在的目錄文件)
--bwlimit=RATE limit socket I/O bandwidth(字節爲單位)
--delete 讓目標目錄SRC和源目錄數據DST一致

2 本地

A 軟件安裝
rsync
B 直接複製,屬性未被複制
rsync
C 保持屬性的複製
rsync

rsync -vzrtopg /etc/passwd /tmp/

D 刪除
與本地不同的直接刪除
rsync
數據同步導致用戶無法訪問網站:

備份:
1 時間的低谷
2 考慮帶寬問題
rsync 、scp、ftp 都有限速功能

rsync 拷貝如果不帶/,則是拷貝目錄和內容,如果帶/,則是拷貝目錄中的內容,不包含文件名

3 使用SSH通道進行傳輸

需要知道對方服務器的密碼和用戶
使用-e參數通過ssh 進行拷貝同步-p 指定ssh的端口,ssh-key的方式進行同步,此時不需要密碼。
rsync
rsync

4 使用進程的方式進行數據的同步

1 需關閉防火牆和selinux

先搭建一個服務器,這個服務器上跑着rsync 的守護進程,使用的端口是873端口,在其他的客戶端服務器使用rsync命令實現可以和服務器實現推和拉的動作,但這個實現都是在客戶端實現的。
daemon 是搭在備份服務器上的
儘量在客戶端直接使用命令最好,備份服務器是主要的

2 創建配置文件

rsync
rsync

uid = rsync #用戶ID
gid = rsync #組ID
use chroot = no
max connections = 200 #最大鏈接數
timeout = 300 #超時參數
pid file = /var/run/rsyncd.pid #進程號對應PID
lock file = /var/run/rsync.lock #鎖文件,防止數據不一致
log file=/var/log/rsyncd.log #日誌文件
[backup] #模塊
path = /backup #提供訪問的目錄
ignore errors #忽略錯誤
read only = false #可寫
list = false # 不能使用ls 和 ll等列表命令
hosts allow = 192.168.1.0/24 #允許那些鏈接
hosts deny = 0.0.0.0/32 #拒絕那些鏈接 允許和拒絕二選一
secrets file = /etc/rsync.password # 允許鏈接的虛擬用戶

3 創建用戶

rsync

4 啓動進程

其守護進程使用的是root用戶啓動的,但其客戶端訪問時需要調用服務器端的rsync用戶進行訪問
rsync

5 創建備份目錄並授權

rsync

6 創建密碼文件 (用戶名:密碼)

rsync
rsync

7 添加相應的權限

rsync

8 查看端口

rsync

9 加入開機自啓動

rsync

10 客戶端配置:

rsync
rsync
rsync

11 創建本地臨時備份目錄

rsync

12 推送至遠端,後面的backup是模塊名稱。

rsync

rsync

方法二:
rsync

rsync

5 多模塊

其相同的寫在模塊之上,不同的寫入模塊:
rsync
rsync
rsync
rsync
rsync

6 rysnc 優缺點

優點:

1 增量備份,支持socket(daemon),集中備份(支持推拉,都是以客戶端爲參照物)
2 遠程SHELLL 通道模式可以加密SSH 傳輸,socket (daemon)需要加密傳輸,可以利用***服務和ipsec服務。

缺點:

1 大量小文件同步時,比對時間較長,有時候,rsync 進程可能會停止。
2 同步大文件,10G這樣的大文件時有時會出現中斷。一次性拷貝建議使用scp

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章