-
什么是Rsync
Rsync是一款開源的彼宠、快速的、多功能的蒜田、可實(shí)現(xiàn)全量及增量的本地或遠(yuǎn)程數(shù)據(jù)同步備份的優(yōu)秀工具。并且可以不進(jìn)行改變?cè)袛?shù)據(jù)的屬性信息选泻,實(shí)現(xiàn)數(shù)據(jù)的備份遷移特性冲粤。Rsync軟件適用于Unix/Linux/Windows等多種操作系統(tǒng)平臺(tái)美莫。
Rsync是一個(gè)快速和非常通用的文件復(fù)制工具。它能本地復(fù)制梯捕,遠(yuǎn)程復(fù)制厢呵,或者遠(yuǎn)程守護(hù)進(jìn)程方式復(fù)制。它提供了大量的參數(shù)來控制其行為的各個(gè)方面傀顾,并且允許非常靈活的方式來實(shí)現(xiàn)文件的傳輸復(fù)制襟铭。它以其delta-transfer算法聞名。減少通過網(wǎng)絡(luò)數(shù)據(jù)發(fā)送數(shù)量锣笨,利用只發(fā)送源文件和目標(biāo)文件之間的差異信息蝌矛,從而實(shí)現(xiàn)數(shù)據(jù)的增量同步復(fù)制。
Rsync被廣泛使用在備份和鏡像错英,以及作為一種改進(jìn)后的復(fù)制命令用于日常應(yīng)用入撒。
提示信息:
官方鏈接資料:http://www.samba.org/ftp/rsync/rsync.html
官方手冊(cè)資料:man rsync/man rsync.conf
?
-
Rsync的作用
Rsync英文全稱為Remote Synchronization,從軟件的名稱就可以看出來椭岩,Rsync具有可使本地和遠(yuǎn)程兩臺(tái)主機(jī)之間的數(shù)據(jù)快速復(fù)制同步鏡像茅逮、遠(yuǎn)程備份的功能,這個(gè)功能類似SSH的scp命令判哥,但又優(yōu)于scp命令的功能献雅,scp每次都是全量拷貝,而rsync可以增量拷貝塌计。當(dāng)然挺身,Rsync還可以在本地主機(jī)的不同分區(qū)或目錄之間全量及增量的復(fù)制數(shù)據(jù),這又類似cp命令锌仅,但同樣也優(yōu)于cp命令章钾,cp每次都是全量拷貝,而raync可以增量拷貝热芹。
Rsync命令除了作為本地和遠(yuǎn)程復(fù)制命令使用以外贱傀,還可以作為刪除和查看命令被應(yīng)用,在某種情況下類似于傳統(tǒng)的rm和ls命令伊脓。
-
通過上面文字的介紹府寒,可以總結(jié)一下rsync命令的主要作用分為以下4種:
-
實(shí)現(xiàn)本地?cái)?shù)據(jù)同步復(fù)制(等價(jià)cp命令)
cp -a /etc/hosts /temp/hosts_cp # 使用rsync實(shí)現(xiàn)cp功能 rsync -a /etc/hosts /temp/hosts_rsync # 注意:當(dāng)使用rsync同步目錄時(shí)如果目錄后面帶/,則同步的是目錄中內(nèi)容 rsync -a /etc/ /temp/ # 同步的是/etc/下的所有文件到/temp/中 rsync -a /etc /temp/ # 這才是將/etc文件夾備份到/temp/中
-
實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)同步復(fù)制(等價(jià)scp命令)
scp -rp /etc/hosts 192.168.1.100:/temp/hosts_scp # 使用rsync實(shí)現(xiàn)scp功能 rsync -rp /etc/hosts 192.168.1.100:/temp/hosts_rsync
-
實(shí)現(xiàn)數(shù)據(jù)信息刪除功能(等價(jià)rm命令)
rm -rf /temp/* # 使用rsync實(shí)現(xiàn)rm功能 # 先創(chuàng)建一個(gè)空目錄 mkdir null # 在將空目錄同步到要?jiǎng)h除的目錄 rsync -a --delete /null/ /temp/
-
實(shí)現(xiàn)數(shù)據(jù)信息查看功能(等價(jià)ls命令)
ls /etc # 使用rsync實(shí)現(xiàn)ls功能 rsync /etc
-
-
Rsync的特性
-
Rsync的特性如下(7個(gè)特性信息說明):
支持拷貝普通文件與特殊文件报腔,如鏈接文件株搔,設(shè)備等;
-
可以有排除指定文件或目錄同步的功能纯蛾,相當(dāng)于打包命令tar的排除功能邪狞;
# 在打包/opt/data時(shí)排除 temp 命名的目錄和文件 tar zcvf data_backup.tar.gz /opt/data
可以做到保持原文件或目錄的權(quán)限、時(shí)間茅撞、軟硬連接帆卓、屬主巨朦、組等所有屬性均不改變(-p)。
-
可以實(shí)現(xiàn)增量同步剑令,即只同步發(fā)生變化的數(shù)據(jù)糊啡,因此數(shù)據(jù)傳輸效率很高(tar -N)。
# 備份 /home 目錄自2008-01-01 以來修改過的文件 tar -N 2008-01-01 -zcvf /backup/inc-backup_$(date + %F).tar.gz /home # 備份 /home 目錄昨天以來修改過的文件 tar -N $(date -d yesterday "+%F") -zcvf /backups/inc-backup_$(date + %F).tar.gz /home # 將所有.gif的文件增加到all.tar的包中吁津。-r表示增加文件的意思 tar -rf all.tar *.gif
可以使用rcp棚蓄、rsh、ssh等方式來配合進(jìn)行隧道加密傳輸文件(rsync本身不對(duì)數(shù)據(jù)加密)碍脏;
可以通過socket(進(jìn)程方式)傳輸文件和數(shù)據(jù)(服務(wù)端和客戶端)梭依;
支持匿名的或認(rèn)證(無需系統(tǒng)用戶)的進(jìn)程模式傳輸,可實(shí)現(xiàn)方便安全的進(jìn)行數(shù)據(jù)備份及鏡像典尾。
-
-
Rsync的復(fù)制原理介紹
- 在同步備份數(shù)據(jù)時(shí)役拴,默認(rèn)情況下,Rsync通過其獨(dú)特的“Quick Check”算法钾埂,它僅同步大小或者修改時(shí)間發(fā)生變化的文件或目錄河闰,當(dāng)然,也可以根據(jù)權(quán)限褥紫、屬主等屬性的變化同步姜性,但需要指定相應(yīng)的參數(shù),甚至可以實(shí)現(xiàn)只同步一個(gè)文件里有變化的內(nèi)容部分髓考,所以可以實(shí)現(xiàn)快速的同步備份數(shù)據(jù)部念,即采用增量復(fù)制方法對(duì)數(shù)據(jù)信息進(jìn)行同步,與傳統(tǒng)的cp氨菇、scp拷貝命令的全量拷貝復(fù)制截然不同儡炼,增量同步復(fù)制數(shù)據(jù),在效率上遠(yuǎn)遠(yuǎn)高于全量復(fù)制门驾。
-
Rsync的使用方法
-
一般來說,Rsync大致使用三種主要的傳輸數(shù)據(jù)方式多柑。
-
本地?cái)?shù)據(jù)傳輸模式:采用此種方式進(jìn)行數(shù)據(jù)同步復(fù)制奶是,類似于上文中所提到的cp本地復(fù)制命令功能。采用本地?cái)?shù)據(jù)傳輸模式的語法格式信息為:
rsync [OPTION...] SRC... [DEST] # rsync ---數(shù)據(jù)備份命令 # [OPTION...] ---命令參數(shù)信息 # SRC... ---要進(jìn)行同步備份的源文件或目錄信息 # [DEST] ---將數(shù)據(jù)備份同步到本地系統(tǒng)中的目的路徑
-
-
遠(yuǎn)程Shell數(shù)據(jù)傳輸模式
-
采用此種方式進(jìn)行數(shù)據(jù)同步復(fù)制竣灌,類似于上文中所提到的scp遠(yuǎn)程復(fù)制命令功能聂沙。采用遠(yuǎn)程數(shù)據(jù)傳輸模式語法格式信息為:
# Pull(拉) rsync [OPTION...] [USER@]HOST:SRC... [DEST] # rsync ---數(shù)據(jù)備份命令 # [OPTION...] ---命令參數(shù)信息 # [USER@] ---以什么用戶身份將數(shù)據(jù)拉取 # HOST:SRC ---從哪個(gè)遠(yuǎn)程主機(jī)上,將指定的數(shù)據(jù)進(jìn)行備份 # [DEST] ---將遠(yuǎn)程主機(jī)拉取過來的數(shù)據(jù)保存到本機(jī)的什么路徑 # Push(推) rsync [OPTION...] SRC... [USER@]HOST:DEST # rsync ---數(shù)據(jù)備份命令 # [OPTION...] ---命令參數(shù)信息 # [USER@] ---以什么用戶身份將數(shù)據(jù)推送 # SRC ---指定本地要推送給備份的數(shù)據(jù)信息 # HOST:DEST ---將數(shù)據(jù)信息推送到指定主機(jī)相應(yīng)的目錄中
-
守護(hù)進(jìn)程傳輸模式
-
-
Rsync守護(hù)進(jìn)程服務(wù)部署
-
服務(wù)端部署
-
第一步:確認(rèn)軟件服務(wù)是否安裝(客戶端也要安裝)
# 檢查rsync是否安裝 rpm -qa rsync # 安裝rsync yum install -y rsync
-
第二步:編寫備份文件配置服務(wù)
# 默認(rèn)沒有配置文件初嘹,需手動(dòng)編寫 vi /etc/rsyncd.conf # 以下是rsyncd.conf中編寫的內(nèi)容 #rsync_config #created by HuangChao at 2020 ##rsyncd.conf start## # -------------------------全局配置(影響所有模塊)------------------------- # #指定rsync服務(wù)運(yùn)行的時(shí)候及汉,向磁盤進(jìn)行讀寫操作的用戶 uid = rsync #指定用戶組 gid = rsync #安全相關(guān)參數(shù) use chroot = no #最大連接數(shù) max connections = 200 #超時(shí)時(shí)間 timeout = 300 #進(jìn)程對(duì)應(yīng)的進(jìn)程號(hào)文件,用于存放服務(wù)運(yùn)行時(shí)進(jìn)程的ID號(hào)(PID) pid file = /var/run/rsyncd.pid #進(jìn)程的鎖文件 lock file = /var/run/rsync.lock #程序運(yùn)行的日志文件 log file = /var/log/rsyncd.log # -------------------------局部配置(影響本模塊)------------------------- # [backup] #模塊名稱 #注釋信息 comment = "Backup Dir By HuangChao" #模塊對(duì)應(yīng)的位置(路徑) path = /backup #忽略錯(cuò)誤程序 ignore errors #是否只讀 read only = false #是否可以列表 list = false #允許訪問rsync服務(wù)器的IP地址(白名單) hosts allow = 192.168.1.0/24 #禁止訪問rsync服務(wù)器的IP地址(黑名單) hosts deny = 0.0.0.0/32 #認(rèn)證用戶屯烦,這些用戶操作系統(tǒng)中不存在坷随,僅用于認(rèn)證 auth users = rsync_backup,rsync_user #設(shè)置進(jìn)行連接認(rèn)證的密鑰文件房铭,不存在的用戶進(jìn)行認(rèn)證時(shí)的密鑰文件 secrets file = /etc/rsync.password
-
第三步:創(chuàng)建一個(gè)備份目錄的管理用戶(虛擬用戶)
# 創(chuàng)建一個(gè)備份目錄的管理用戶 useradd -M -s /sbin/nologin rsync # 查看是否創(chuàng)建成功 id rsync
-
第四步:創(chuàng)建備份目錄
# 在/目錄下創(chuàng)建名為backup的備份目錄,-p代表命令可以重復(fù)執(zhí)行 mkdir -p /backup # 將備份目錄的屬主和屬組改成rsync用戶 chown -R rsync.rsync /backup
-
第五步:創(chuàng)建認(rèn)證用戶密碼文件
# 將 sync_backup:123456 追加到 /etc/rsync.password 文件的末尾 echo "sync_bckup:123456" >> /etc/rsync.password # 更改文件權(quán)限 chmod 600 /etc/rsync.password
-
第六步:啟動(dòng)rsync備份服務(wù)守護(hù)進(jìn)程
# 啟動(dòng)rsync守護(hù)進(jìn)程 rsync --daemon # 檢查rsync是否啟動(dòng) ps -ef|grep rsync # 查看服務(wù)端口,rsync服務(wù)端口默認(rèn)為873 netstat -lntup|grep rsync
-
-
客戶端部署
-
Pull(拉):從備份服務(wù)器上將數(shù)據(jù)拉取到本地温眉,主要用于數(shù)據(jù)恢復(fù)
rsync [OPTION...] [USER@]HOST::SRC... [DEST] # rsync ---數(shù)據(jù)備份命令 # [OPTION...] ---命令參數(shù)信息 # [USER@] ---指定進(jìn)行數(shù)據(jù)傳輸?shù)恼J(rèn)證用戶 # HOST:: ---指定備份服務(wù)器的IP地址或主機(jī)名稱 # SRC... ---指定備份服務(wù)器上模塊名稱 # [DEST] ---將數(shù)據(jù)同步到本地主機(jī)的指定路徑
-
Push(推):從本機(jī)將數(shù)據(jù)推送到備份服務(wù)器缸匪,主要用于數(shù)據(jù)備份
rsync [OPTION...] SRC... [USER@]HOST::DEST # rsync ---數(shù)據(jù)備份命令 # [OPTION...] ---命令參數(shù)信息 # SRC... ---指定本地主機(jī)上需要備份的數(shù)據(jù) # [USER@] ---指定進(jìn)行數(shù)據(jù)傳輸?shù)恼J(rèn)證用戶 # HOST:: ---指定備份服務(wù)器的IP地址或主機(jī)名稱 # DEST ---指定備份服務(wù)器上模塊名稱 # 示例 # 在本機(jī)創(chuàng)建用戶認(rèn)證的密碼文件 echo "123456" >> /etc/rsync.password # 修改文件權(quán)限,必須修改类溢,如果權(quán)限不是600凌蔬,rsync服務(wù)則不讀密碼文件 chmod 600 /etc/rsync.password # 將/etc/中的hosts文件備份到192.168.1.100服務(wù)器的默認(rèn)備份目錄下 rsync -avzP /etc/hosts rsync_backup@192.168.1.100::backup --password-file=/etc/rsync.password # --password-file=/etc/rsync.password ---自動(dòng)傳輸密碼,用于定時(shí)任務(wù)的免交互
-
-
-
Rsync命令參數(shù)
- Rsync常用的同步命令參數(shù)如下:
命令參數(shù) | 參數(shù)說明 |
---|---|
-v(verbose) | 詳細(xì)模式闯冷,輸出進(jìn)度等信息 |
-z(compress) | 傳輸時(shí)進(jìn)行壓縮以提高傳輸效率砂心,--compress-level=NUM可按級(jí)別壓縮。局域網(wǎng)中一般不壓縮蛇耀。 |
-a(archive) | 歸檔模式辩诞,表示以遞歸方式傳輸文件,并保持所有文件屬性 |
-r(recursive)(歸類于-a) | 子目錄遞歸傳輸模式 |
-t(times)(歸類于-a) | 保持文件時(shí)間(文件修改時(shí)間)信息 |
-o(owner)(歸類于-a) | 保持文件屬主信息 |
-p(perms)(歸類于-a) | 保持文件權(quán)限 |
-g(group)(歸類于-a) | 保持文件屬組信息 |
-l(links)(歸類于-a) | 保留軟連接 |
-D(devices)(歸類于-a) | 保持設(shè)備文件信息 |
-P(progress) | 顯示同步的過程及傳輸時(shí)的進(jìn)度等信息 |
-e(rsh=COMMOND) | 指定使用哪種信道協(xié)議蒂窒,例如:SSH |
--exclude=PATTERN | 指定排除不需要傳輸?shù)奈募畔?/td> |
--exclude-from=file | 文件名所在的目錄文件躁倒,既可以排除多個(gè)文件 |
--bwlimit=RATE | 傳輸數(shù)據(jù)時(shí)進(jìn)行限速 |
--delete | 使目標(biāo)目錄和源目錄數(shù)據(jù)一致,即無差異同步數(shù)據(jù) |
-
Rsync守護(hù)進(jìn)程模式的應(yīng)用場景
-
采用定時(shí)任務(wù)方式+Rsync服務(wù)進(jìn)行數(shù)據(jù)備份
應(yīng)用場景:主要用于企業(yè)內(nèi)部人員產(chǎn)生的數(shù)據(jù)備份
-
采用實(shí)時(shí)同步方式+Rsync服務(wù)進(jìn)行數(shù)據(jù)備份(推薦)
應(yīng)用場景:主要應(yīng)用于用戶產(chǎn)生的數(shù)據(jù)備份
-
-
Rsync守護(hù)進(jìn)程企業(yè)中的實(shí)際應(yīng)用
-
守護(hù)進(jìn)程多模塊功能配置
-
第一步:編寫配置文件洒琢,添加多模塊配置信息
# 默認(rèn)沒有配置文件秧秉,需手動(dòng)編寫 vi /etc/rsyncd.conf # 以下是rsyncd.conf中編寫的內(nèi)容 #rsync_config #created by HuangChao at 2020 ##rsyncd.conf start## uid = rsync gid = rsync use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors read only = false list = false hosts allow = 192.168.1.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup,rsync_user secrets file = /etc/rsync.password [nfs_backup] #模塊 comment = "Backup Dir By NFS" path = /backup/nfs_backup [mysql_backup] #添加的模塊 comment = "Backup Dir By MySQL" path = /backup/mysql_backup
-
第二步:創(chuàng)建備份目錄
mkdir -p /backup/mysql_backup chown -R rsync.rsync /backup/mysql_backup
-
第三步:重啟服務(wù)
# 停止服務(wù) kill 'cat /var/run/rsyncd.pid' # 啟動(dòng)服務(wù) rsync --daemon
-
-
-
Rsync守護(hù)進(jìn)程排除功能實(shí)踐
-
排除指定文件
# 同步/data_dir目錄數(shù)據(jù)到備份服務(wù)器的/backup目錄中,但/data_dir目錄中的a,b目錄不需要同步衰抑,d目錄中的2.txt不需要同步 rsync -avzP /data_dir/ --exclude=a --exclude=b --exclude=d/2.txt rsync_backup@192.168.1.100::nfs_backup --password-file=/etc/rsync.password # 同步/data_dir目錄數(shù)據(jù)到備份服務(wù)器的/backup目錄中,但/data_dir目錄中的a象迎,b,c目錄不需要同步,d目錄中的1.txt不需要同步 rsync -avzP /data_dir/ --exclude={a..c} --exclude=d/2.txt rsync_backup@192.168.1.100::nfs_backup --password-file=/etc/rsync.password
-
把多個(gè)排除的信息放在一個(gè)文件中
# 同步/data_dir目錄數(shù)據(jù)到備份服務(wù)器的/backup目錄中,但/data_dir目錄中的a呛踊,b,c目錄不需要同步砾淌,d目錄中的1.txt不需要同步 cd /data_dir/ # 編寫排除文件信息 vi exclude.txt a b c d/1.txt exclude.txt rsync -avzP /data_dir/ --exclude-from=/data_dir/exclude.txt rsync_backup@192.168.1.100::nfs_backup --password-file=/etc/rsync.password
-
-
Rsync守護(hù)進(jìn)程創(chuàng)建備份目錄
-
備份文件時(shí)可以創(chuàng)建相應(yīng)的文件夾以分類
# 將data_dir文件夾中的文件備份到192.168.1.100服務(wù)器中nsf_backup/20190620_backup文件夾中,注意:不能一次性創(chuàng)建多級(jí)目錄! rsync -avzP /data_dir/ rsync_backup@192.168.1.100::nfs_backup/20190620_backup --password-file=/etc/rsync.password
-
-
Rsync守護(hù)進(jìn)程的訪問控制
-
Rsync配置文件中的訪問控制分為三種情況:
只有白名單(hosts allow)時(shí)谭网,白名單流量允許通過汪厨,其余流量的默認(rèn)規(guī)則是阻止;
只有黑名單(hosts deny)時(shí)愉择,黑名單流量阻止通過劫乱,其余流量的默認(rèn)規(guī)則是允許;
-
既有白名單锥涕,又有黑名單時(shí)衷戈,白名單流量允許通過,黑名單流量阻止通過层坠,其余流量的默認(rèn)規(guī)則時(shí)允許殖妇。
注意:白名單優(yōu)先級(jí)高于黑名單
-
需求示例:
內(nèi)網(wǎng)網(wǎng)段用戶(172.16.1.0/24)可以傳輸數(shù)據(jù)到backup目錄中
-
外網(wǎng)網(wǎng)段用戶(10.0.0.0/24)不可以傳輸數(shù)據(jù)到backup目錄中
# 默認(rèn)沒有配置文件,需手動(dòng)編寫 vi /etc/rsyncd.conf # 以下是rsyncd.conf中編寫的內(nèi)容 #rsync_config #created by HuangChao at 2019 #email:huangchao@outlook.com ##rsyncd.conf start## uid = rsync gid = rsync use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors read only = false list = false # ---------------------訪問控制---------------------------------- # hosts allow = 172.16.1.0/24 hosts deny = 10.0.0.0/24 #--------------------------------------------------------------- # auth users = rsync_backup,rsync_user secrets file = /etc/rsync.password [nfs_backup] comment = "Backup Dir By NFS" path = /backup/nfs_backup [mysql_backup] comment = "Backup Dir By MySQL" path = /backup/mysql_backup
-
-
Rsync守護(hù)進(jìn)程的無差異同步(在企業(yè)中慎用F苹ā)
-
實(shí)現(xiàn)本地服務(wù)器和備份服務(wù)器上的數(shù)據(jù)信息高度一致谦趣,說白了疲吸,就是我有你也有,我沒有你也不能有蔚润。除了實(shí)現(xiàn)文件夾內(nèi)容無差異同步磅氨,還能實(shí)現(xiàn)文件內(nèi)容的無差異同步
rsync -avzP --delete /data_dir/ rsync_backup@192.168.1.100::nfs_backup --password-file=/etc/rsync.password
-
-
Rsync守護(hù)進(jìn)程的列表功能
-
syncd.conf配置文件中的 list = true 的作用是讓客戶端可以通過命令獲悉服務(wù)端的全部模塊信息。(建議將list = false)
rsync rsync_backup@192.168.1.100::
-
- Rsync軟件的深入學(xué)習(xí)方法
官方鏈接資料:http://www.samba.org/ftp/rsync/rsync.html
官方手冊(cè)資料:man rsync/man rsync.conf