一 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+ rsync4 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 軟件安裝
B 直接複製,屬性未被複制
C 保持屬性的複製
rsync -vzrtopg /etc/passwd /tmp/
D 刪除
與本地不同的直接刪除
數據同步導致用戶無法訪問網站:
備份:
1 時間的低谷
2 考慮帶寬問題
rsync 、scp、ftp 都有限速功能
rsync 拷貝如果不帶/,則是拷貝目錄和內容,如果帶/,則是拷貝目錄中的內容,不包含文件名
3 使用SSH通道進行傳輸
需要知道對方服務器的密碼和用戶
使用-e參數通過ssh 進行拷貝同步-p 指定ssh的端口,ssh-key的方式進行同步,此時不需要密碼。
4 使用進程的方式進行數據的同步
1 需關閉防火牆和selinux
先搭建一個服務器,這個服務器上跑着rsync 的守護進程,使用的端口是873端口,在其他的客戶端服務器使用rsync命令實現可以和服務器實現推和拉的動作,但這個實現都是在客戶端實現的。
daemon 是搭在備份服務器上的
儘量在客戶端直接使用命令最好,備份服務器是主要的
2 創建配置文件
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 創建用戶
4 啓動進程
其守護進程使用的是root用戶啓動的,但其客戶端訪問時需要調用服務器端的rsync用戶進行訪問
5 創建備份目錄並授權
6 創建密碼文件 (用戶名:密碼)
7 添加相應的權限
8 查看端口
9 加入開機自啓動
10 客戶端配置:
11 創建本地臨時備份目錄
12 推送至遠端,後面的backup是模塊名稱。
方法二:
5 多模塊
其相同的寫在模塊之上,不同的寫入模塊:
6 rysnc 優缺點
優點:
1 增量備份,支持socket(daemon),集中備份(支持推拉,都是以客戶端爲參照物)
2 遠程SHELLL 通道模式可以加密SSH 傳輸,socket (daemon)需要加密傳輸,可以利用***服務和ipsec服務。
缺點:
1 大量小文件同步時,比對時間較長,有時候,rsync 進程可能會停止。
2 同步大文件,10G這樣的大文件時有時會出現中斷。一次性拷貝建議使用scp