目錄
一、rsync介紹
rsync和cp的區(qū)別
rsync和scp的區(qū)別
二、rsync同步方式
rsync備份的方式
三、配置rsync源服務(wù)器
①本地復(fù)制
②下行同步
③上行同步
四、常用Rsync命令
五、配置源的兩種表達(dá)方法
六、部署rsync下行同步
①環(huán)境準(zhǔn)備
②配置rsync源服務(wù)器-----------(192.168.246.8)
1)修改rsync配置文件
2)為備份賬戶創(chuàng)建數(shù)據(jù)文件
3)保證所有用戶對(duì)源目錄/var/www/html 都有讀取權(quán)限
4)啟動(dòng) rsync 服務(wù)程序
③客戶端(發(fā)起端)配置 --------(192.168.246.9)
1)rsync同步
2)在服務(wù)器寫入文件,測試數(shù)據(jù)
3)再去客戶端測試同步文件
4)免密登錄
5)?刪除文件,同步更新
服務(wù)器刪除文件
客戶端同步測試?
七、定時(shí)同步crontab + rsync
八、部署inotify+rsync 實(shí)時(shí)同步
①修改rsync源服務(wù)器配置(192.168.246.8)
②在客戶端配置:(192.168.246.9)
(1)調(diào)整客戶端 inotify 內(nèi)核參數(shù)
(2)安裝 inotify-tools(在客戶端配置:192.168.246.9)
(3)inotifywait監(jiān)控變化
(4)在另外一個(gè)終端? 編寫觸發(fā)式同步腳本
③檢測實(shí)時(shí)同步
九、rsync 可以來實(shí)現(xiàn) 快速刪除大量文件 ?
9.1本地復(fù)制刪除
9.2rsync+inotify實(shí)時(shí)同步刪除
9.3批量刪除文件的方式(2千個(gè)文件)
①使用rsync
②find 指定目錄 -exec rm {} \;
③rm -rf 這種如果是針對(duì)大文件,可能不生效
④find 指定目錄 -delete
一、rsync介紹
rsync(Remote Sync,遠(yuǎn)程同步) 是一個(gè)開源的快速備份工具,基于C/S架構(gòu),點(diǎn)對(duì)點(diǎn)傳輸,可以在不同主機(jī)之間鏡像同步整個(gè)目錄樹,支持增量備份,并保持鏈接和權(quán)限,且采用優(yōu)化的同步算法,傳輸前執(zhí)行壓縮,因此非常適用于異地備份、鏡像服務(wù)器等應(yīng)用。
rsync和cp的區(qū)別
cp? ?將我們的源文件完整的復(fù)制 到 指定路徑下即 “全備”
rsync做本地復(fù)制的話:①首先它會(huì)將源文件和目標(biāo)位置的文件對(duì)比,找出差異部分
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?②根據(jù)目的位置的文件與源文件差異的部分,進(jìn)行一致性的同步
rsync和scp的區(qū)別
兩者都可以實(shí)現(xiàn)遠(yuǎn)程傳輸文件和目錄
rsync:遠(yuǎn)程文件同步,可以實(shí)現(xiàn)跨主機(jī)增量同步文件數(shù)據(jù),
? ? ? ? ? ? ? 同時(shí)還能對(duì)傳輸?shù)奈募M(jìn)行壓縮,
? ? ? ? ? ? ? 并且支持軟連接硬連接文件傳輸
scp:只能做全量數(shù)據(jù)傳輸
rsync默認(rèn)端口為 873
rsync特性:
- 可以在不同主機(jī)之間鏡像同步整個(gè)目錄樹,
- 支持增量備份、保持鏈接和權(quán)限、時(shí)間、屬性且傳輸前自動(dòng)執(zhí)行壓縮、
- rsync不需要特殊權(quán)限即可安裝,centos系統(tǒng)默認(rèn)安裝,
- 支持匿名傳輸,注意發(fā)起端要有對(duì)應(yīng)目錄位置的讀權(quán)限
在遠(yuǎn)程同步任務(wù)中,
- 負(fù)責(zé)發(fā)起rsync同步操作的客戶機(jī)稱為發(fā)起端,
- 而負(fù)責(zé)響應(yīng)來自客戶機(jī)的rsync同步操作的服務(wù)器稱為同步源。
- 在同步過程中,同步源負(fù)責(zé)提供文件的原始位置,
- 發(fā)起端應(yīng)對(duì)該位置具有讀取權(quán)限。
Rsync 是 Linux 系統(tǒng)下的數(shù)據(jù)鏡像備份工具,使用快速增量備份工具 Remote Sync 可以遠(yuǎn)程同步, 可以在不同主機(jī)之間進(jìn)行同步,可實(shí)現(xiàn)全量備份與增量備份,保持鏈接和權(quán)限,且采用優(yōu)化的同步算法, 傳輸前執(zhí)行壓縮,因此非常適合用于架構(gòu)集中式備份或異地備份等應(yīng)用。同時(shí)Rsync支持本地復(fù)制,或者與其他 SSH、rsync 主機(jī)同步
rsync 的?官方網(wǎng)站:https://rsync.samba.org/
二、rsync同步方式
(1)完整備份:每次備份都是從備份源將所有的文件或目錄備份到目的地。?
(2)差量備份:備份上次完全備份以后有變化的數(shù)據(jù)(他針對(duì)的上次的完全備份,他備份過程中不清除存檔屬性)。
(3)增量備份:備份上次備份以后有變化的數(shù)據(jù)(他才不管是那種類型的備份,有變化的數(shù)據(jù)就備份,他會(huì)清除存檔屬性)
rsync備份的方式
1、發(fā)起端:負(fù)責(zé)rsync ?同步操作的客戶機(jī)叫做發(fā)起端,通知服務(wù)器我要備份你的數(shù)據(jù)
2、備份源:負(fù)責(zé)響應(yīng)來自客戶機(jī)rsync ? 同步操作的服務(wù)器叫做備份源,需要備份的服務(wù)器
3、服務(wù)端:運(yùn)行rsyncd服務(wù),一般來說,需要備份的服務(wù)器
4、客戶端:存放備份數(shù)據(jù)
三、配置rsync源服務(wù)器
在遠(yuǎn)程同步任務(wù)中,負(fù)責(zé)發(fā)起 rsync 同步操作的客戶機(jī)稱為發(fā)起端,而負(fù)責(zé)響應(yīng)來自客 戶機(jī)的 rsync 同步操作的服務(wù)器稱為同步源。
在同步過程中,同步源負(fù)責(zé)提供文件的原始位置,發(fā)起端應(yīng)對(duì)該位置具有讀取權(quán)限,
如圖下圖所示 (同步源也叫備份源、響應(yīng)端? 客戶端一般存放備份的數(shù)據(jù))
①本地復(fù)制
首先是將源文件和目的位置文件對(duì)比找出差異,然后將源文件與目的位置的差異部分進(jìn)行一致性同步。
②下行同步
客戶端與服務(wù)端同步內(nèi)容,可以理解為客戶端從服務(wù)器上下載內(nèi)容
③上行同步
服務(wù)端與客戶端同步內(nèi)容,可以理解為客戶端將內(nèi)容上傳到服務(wù)器
四、常用Rsync命令
基本格式:rsync [選項(xiàng)] 原始位置 目標(biāo)位置
常用選項(xiàng):
選項(xiàng) | 作用 |
-r | 遞歸模式,包含目錄及子目錄中的所有文件 |
-l | 對(duì)于符號(hào)鏈接文件仍然復(fù)制為符號(hào)鏈接文件 |
-v | 顯示同步過程的詳細(xì)(verbose)信息 |
-z | 在傳輸文件時(shí)進(jìn)行壓縮(compress) |
-a | 歸檔模式,保留文件的權(quán)限、屬性等信息,等同于組合選項(xiàng)“-rlptgoD” |
-p | 保留文件的權(quán)限標(biāo)記 |
-t | 保留文件的時(shí)間標(biāo)記 |
-g | 保留文件的屬組標(biāo)記(僅超級(jí)用戶使用) |
-o | 保留文件的屬主標(biāo)記(僅超級(jí)用戶使用) |
-H | 保留硬連接文件 |
-A | 保留 ACL 屬性信息 |
-D | 保留設(shè)備文件及其他特殊文件 |
--delete | 刪除目標(biāo)位置有而原始位置沒有的文件 |
--checksum | 根據(jù)校驗(yàn)和(而不是文件大小、修改時(shí)間)來決定是否跳過文件 |
password-file | password-file=密碼文件位置,可以在同步時(shí)使用免交互登錄 |
五、配置源的兩種表達(dá)方法
格式一:?rsync -avz 用戶名@主機(jī)地址::共享模塊名 文件
?示例? :rsync -avz backuper@192.168.10.22::wwwroot /opt/
格式二:rsync -avz rsync://用戶名(rsync用戶)@主機(jī)地址/共享模塊名 文件
? 示例:?rsync -avz rsync://backuper@192.168.10.22/wwwroot /opt/
六、部署rsync下行同步
①環(huán)境準(zhǔn)備
客戶端ip | 服務(wù)端ip |
192.168.246.9 | 192.168.246.8 |
前提首先關(guān)閉防火墻和增強(qiáng)功能
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0
②配置rsync源服務(wù)器-----------(192.168.246.8)
rpm -q rsync #一般系統(tǒng)已默認(rèn)安裝rsync
-------------------------------------------------------------------
vim /etc/rsyncd.conf #編輯rsync服務(wù)配置文件 #添加以下配置項(xiàng)
-------------------------------------------------------------------
uid = root #用戶id,注意不用root使用rsync同步時(shí)可能會(huì)報(bào)錯(cuò)
gid = root #組id,注意不用root使用rsync同步時(shí)可能會(huì)報(bào)錯(cuò)
use chroot = yes #禁錮在源目錄,只允許模塊授權(quán)的源路徑
pid file = /var/run/rsyncd.pid #存放進(jìn)程 ID 的文件位置
log file = /var/log/rsyncd.log #日志文件位置
address =192.168.246.8 #監(jiān)聽的地址即server地址
port = 873 #監(jiān)聽端口 tcp/udp 873,可通過cat /etc/services | grep rsync查看
hosts allow = 192.168.246.0/24 #允許訪問的客戶機(jī)地址
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 #同步時(shí)不再壓縮的文件類型
[wwwroot] #共享模塊名稱,可自定義
path = /var/www/html #源目錄的實(shí)際路徑
comment = Document root of www.nanjing.com #模塊說明,隨便寫
read only = yes #是否為只讀
auth users = sbk khui #授權(quán)賬戶,多個(gè)賬號(hào)以空格分隔
secrets file = /etc/rsyncd_users.db #存放賬戶信息的數(shù)據(jù)文件
1)修改rsync配置文件
如采用匿名的方式,只要將其中的“auth users”和“secrets file”配置項(xiàng)去掉即可。
2)為備份賬戶創(chuàng)建數(shù)據(jù)文件
[root@localhost etc]#vim /etc/rsyncd_users.db
[root@localhost etc]#cat /etc/rsyncd_users.db
sbk:123123
khui:123123
3)保證所有用戶對(duì)源目錄/var/www/html 都有讀取權(quán)限
[root@localhost ~]#chmod 600 /etc/rsyncd_users.db
[root@localhost ~]#mkdir -p /var/www/html
[root@localhost ~]#chmod +r /var/www/html/
[root@localhost ~]#ls -ld /var/www/html/
4)啟動(dòng) rsync 服務(wù)程序
#啟動(dòng) rsync 服務(wù),以獨(dú)立監(jiān)聽服務(wù)的方式(守護(hù)進(jìn)程)運(yùn)行
[root@localhost ~]#rsync --daemon
如果你要關(guān)閉 rsync 服務(wù),可以采用如下方法,二選一就可以
關(guān)閉 rsync 服務(wù)
kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid
此處不關(guān)閉服務(wù)哦,繼續(xù)后續(xù)操作
③客戶端(發(fā)起端)配置 --------(192.168.246.9)
#將指定的資源下載到本地/opt 目錄下進(jìn)行備份。
格式一:
rsync -avz backuper@192.168.10.18::wwwroot /opt/?? ??? ??? ??? ??? ?#密碼123123格式二:
rsync -avz rsync://backuper@192.168.10.18/wwwroot /opt/
1)rsync同步
[root@localhost ~]#mkdir -p /opt/ky66
[root@localhost ~]#
[root@localhost ~]#rsync -avz sbk@192.168.246.8::wwwroot /opt/ky66/
2)在服務(wù)器寫入文件,測試數(shù)據(jù)
3)再去客戶端測試同步文件
4)免密登錄
[root@localhost ~]#echo "123123" > /etc/server.pass
[root@localhost ~]#chmod 600 /etc/server.pass
rsync -avz --password-file=/etc/server.pass sbk@192.168.246.8::wwwroot /opt/ky66
若免密同步失敗需要先在client上ssh一下server登錄再退出
再在服務(wù)器端輸入b.txt
再去客戶端使用rsync同步后查看
5)?刪除文件,同步更新
服務(wù)器刪除文件
客戶端同步測試?
解決文件同步?
達(dá)到了客戶端和服務(wù)器刪除文件的一致性
七、定時(shí)同步crontab + rsync
crontab -e
30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.10.18::wwwroot /opt/
#為了在同步過程中不用輸入密碼,需要?jiǎng)?chuàng)建一個(gè)密碼文件,保存 backuper 用戶的密碼,如 /etc/server.pass。在執(zhí)行 rsync 同步時(shí)使用選項(xiàng) “--password-file=/etc/server.pass” 指定即可。
systemctl restart crond
systemctl enable crond
八、部署inotify+rsync 實(shí)時(shí)同步
發(fā)起端(客戶端)配置 rsync+inotify
Linux 內(nèi)核從 2.6.13 版本開始提供了 inotify 通知接口,用來監(jiān)控文件系統(tǒng)的各種變化情況,如文件存取、刪除、移動(dòng)、修改等。利用這一機(jī)制,可以非常方便地實(shí)現(xiàn)文件異動(dòng)告警、 增量備份,并針對(duì)目錄或文件的變化及時(shí)作出響應(yīng)。
inotify是一種強(qiáng)大的、細(xì)粒度的、異步的文件系統(tǒng)事件監(jiān)控機(jī)制
使用inotify通知接口,可以用來監(jiān)控文件系統(tǒng)的各種變化情況,如文件存取、刪除、移動(dòng)、修改等。
利用這一機(jī)制,可以非常方便地實(shí)現(xiàn)文件異動(dòng)告警、增量備份,并針對(duì)目錄或文件的變化及時(shí)作出響應(yīng)。
將inotify機(jī)制與rsync工具相結(jié)合,可以實(shí)現(xiàn)觸發(fā)式備份(實(shí)時(shí)同步),即只要原始位置的文檔發(fā)生變化,則立即啟動(dòng)增量備份操作;否則處于靜默等待狀態(tài)。這樣,就避免了按固定周期備份時(shí)存在的延遲性、周期過密等問題。
因?yàn)?inotify 通知機(jī)制由 Linux 內(nèi)核提供,因此主要做本機(jī)監(jiān)控,在觸發(fā)式備份中應(yīng)用時(shí)更適合上行同步。
客戶端側(cè)部署inotify使用腳本監(jiān)控本地文件夾/opt/ky26中的create,delete.move,modify.attrib操作若/opt/ky26有這些操作則執(zhí)行rsync同步上傳給服務(wù)端
環(huán)境準(zhǔn)備
客戶端ip | 服務(wù)端ip |
192.168.246.9 | 192.168.246.8 |
①修改rsync源服務(wù)器配置(192.168.246.8)
[root@server ~]#vim /etc/rsyncd.conf
---------------------------------------
read only =no #關(guān)閉只讀,上行同步需要可以寫
保存退出
-----------------------------
[root@server ~]#kill $(cat /var/run/rsyncd.pid) #殺死rsync進(jìn)程即關(guān)閉服務(wù)
[root@server ~]#
[root@server ~]#rm -rf /var/run/rsyncd.pid #殺死rsync進(jìn)程即關(guān)閉服務(wù),二選一
[root@server ~]#rsync --daemon #開啟rsync服務(wù)
[root@server ~]#netstat -anpt | grep rsync
tcp 0 0 192.168.246.8:873 0.0.0.0:* LISTEN 2068/rsync
[root@server ~]#mkdir /data/ #創(chuàng)建備份目錄/data/
[root@server ~]#
[root@server ~]#chmod 777 /data/ #給wwwroot模塊的目錄加權(quán)限
由于此處沒有交給systemctl管理,修改了配置文件,要讓它生效,只能刪除之前的pid號(hào),重新啟動(dòng)服務(wù),不然修改的配置文件不生效。
②在客戶端配置:(192.168.246.9)
(1)調(diào)整客戶端 inotify 內(nèi)核參數(shù)
調(diào)整 inotify 內(nèi)核參數(shù)
在Linux內(nèi)核中,默認(rèn)的inotify機(jī)制提供了三個(gè)調(diào)控參數(shù):
max_queue_events(監(jiān)控事件隊(duì)列,默認(rèn)值為16384)
max_user_instances(最多監(jiān)控實(shí)例數(shù),默認(rèn)值為128)
max_user_watches(每個(gè)實(shí)例最多監(jiān)控文件數(shù),默認(rèn)值為8192)當(dāng)要監(jiān)控的目錄、文件數(shù)量較多或者變化較頻繁時(shí),建議加大這三個(gè)參數(shù)的值
[root@localhost ~]#hostname client
[root@localhost ~]#su
[root@client ~]#mkdir /var/www/html/zzz -p
[root@client ~]#ls -ld /var/www/html/zzz
drwxr-xr-x. 2 root root 6 4月 8 14:11 /var/www/html/zzz
[root@client ~]#cat /proc/sys/fs/inotify/max_queued_events #監(jiān)控時(shí)間隊(duì)列數(shù)
16384
[root@client ~]#cat /proc/sys/fs/inotify/max_user_instances #最多監(jiān)控實(shí)例數(shù)
128
[root@client ~]#cat /proc/sys/fs/inotify/max_user_watches #每個(gè)實(shí)例最多監(jiān)控文件數(shù)
8192
[root@client ~]#vim /etc/sysctl.conf #優(yōu)化inotify內(nèi)核參數(shù)
[root@client ~]#sysctl -p
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[root@client ~]#
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
(2)安裝 inotify-tools(在客戶端配置:192.168.246.9)
安裝 inotify-tools
用 inotify 機(jī)制還需要安裝 inotify-tools,以便提供 inotifywait、inotifywatch 輔助工具程序,用來監(jiān)控、匯總改動(dòng)情況。
inotifywait:可監(jiān)控modify(修改)、create(創(chuàng)建)、move(移動(dòng))、delete(刪除)、attrib(屬性更改)等各種事件,一有變動(dòng)立即輸出結(jié)果。
inotifywatch:可用來收集文件系統(tǒng)變動(dòng)情況,并在運(yùn)行結(jié)束后輸出匯總的變化情況
[root@client ~]#cd /opt/
[root@client opt]#ls
ky66 rh
[root@client opt]#rz -E
rz waiting to receive.
[root@client opt]#ls
inotify-tools-3.14.tar.gz ky66 rh
[root@client opt]#tar xf inotify-tools-3.14.tar.gz
[root@client opt]#ls
inotify-tools-3.14 inotify-tools-3.14.tar.gz ky66 rh
[root@client opt]#cd /opt/inotify-tools-3.14/
[root@client inotify-tools-3.14]#yum install gcc gcc-c++ -y
[root@client inotify-tools-3.14]#./configure
[root@client inotify-tools-3.14]#make -j 2 && make install
#可以先執(zhí)行“inotifywait”命令,然后另外再開啟一個(gè)新終端向 /var/www/html/zzz 目錄下添加文件、移動(dòng)文件,在原來的終端中跟蹤屏幕輸出結(jié)果。
inotifywait -mrq -e modify,create,move,delete /var/www/html/zzz
#選項(xiàng)“-e”:用來指定要監(jiān)控哪些事件
#選項(xiàng)“-m”:表示持續(xù)監(jiān)控
#選項(xiàng)“-r”:表示遞歸整個(gè)目錄
#選項(xiàng)“-q”:簡化輸出信息
(3)inotifywait監(jiān)控變化
inotifywait:可監(jiān)控modify(修改)、create(創(chuàng)建)、move(移動(dòng))、delete(刪除)、attrib(屬性更改)等各種事件,一有變動(dòng)立即輸出結(jié)果。
inotifywait -mrq -e modify,create,move,delete /var/www/html/zzz/
(4)在另外一個(gè)終端? 編寫觸發(fā)式同步腳本
(注意,腳本名不可包含 rsync 字符串,否則腳本不生效)
/var/www/html/zzz/后面別忘記加/,不然會(huì)認(rèn)為到html這個(gè)文件夾結(jié)束,會(huì)認(rèn)為zzz是文件,zzz/是文件夾,會(huì)認(rèn)為到zzz/文件夾結(jié)束
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/zzz/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/zzz/ sbk@192.168.246.8::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
#while判斷是否接收到監(jiān)控記錄
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
#腳本內(nèi)容解析:
定義2個(gè)變量,變量INOTIFY_CMD監(jiān)控客戶端的/var/www/html/zzz/文件夾。
變量RSYNC_CMD執(zhí)行rsync同步將/var/www/html/zzz/文件夾內(nèi)容同步上傳到服務(wù)端。
將變量INOTIFY_CMD監(jiān)控標(biāo)準(zhǔn)輸入結(jié)果傳給while函數(shù),while函數(shù)讀取若有后面這些關(guān)鍵字則執(zhí)行if語句,當(dāng)執(zhí)行過濾rsync命令行數(shù)小于等于0則執(zhí)行變量$RSYNC_CMD
chmod +x /opt/inotify.sh #給腳本賦權(quán)
chmod 777 /var/www/html/zzz/
chmod +x /etc/rc.d/rc.local
echo '/opt/inotify.sh' >> /etc/rc.d/rc.local #加入開機(jī)自動(dòng)執(zhí)行
加入開機(jī)自動(dòng)執(zhí)行,如果服務(wù)器斷電了,也不影響數(shù)據(jù)同步
上述腳本用來檢測本機(jī)/www/var/html/zzz/ 目錄的變動(dòng)情況,一旦有更新觸發(fā) rsync 同步操作,上傳備份至服務(wù)器 192.168.246.8 的 wwwroot 共享目錄下。
觸發(fā)式上行同步的驗(yàn)證過程如下:
(1)在本機(jī)運(yùn)行 /opt/inotify.sh 腳本程序。
(2)切換到本機(jī)的 /www/var/html/zzz /目錄,執(zhí)行增加、刪除、修改文件等操作。
(3)查看遠(yuǎn)端服務(wù)器中的 /data/ 目錄下的變化情況。
③檢測實(shí)時(shí)同步
(1)再開一個(gè)客戶端,寫換到/var/www/html/zzz/下添加數(shù)據(jù)
(2)去服務(wù)端的備份目錄/data/下查看數(shù)據(jù)
九、rsync 可以來實(shí)現(xiàn) 快速刪除大量文件 ?
touch file {1..10000}
使用rsync來實(shí)現(xiàn)快速刪除大量文件,
假如要在linux下刪除大量文件,比如100萬、1000萬,像/usr/local/nginx/proxy_temp的nginx緩存等,那么rm -rf * 可能就不好使了,因?yàn)橐却荛L一段時(shí)間。
在這種情況下我們可以使用rsync來巧妙處理,rsync實(shí)際用的是替換原理。
先建立一個(gè)空的文件夾:
mkdir /home/blank
用rsync刪除目標(biāo)目錄:
rsync --delete-before -a -H -v --progress --stats /home/blank /usr/local/nginx/proxy_temp
這樣目標(biāo)目錄很快就被清空了
選項(xiàng)說明:
--delete-before 接收者在傳輸進(jìn)行刪除操作
-a 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性
-H 保持硬連接的文件
-v 詳細(xì)輸出模式
--progress 在傳輸時(shí)顯示傳輸過程
--stats 給出某些文件的傳輸狀態(tài)
9.1本地復(fù)制刪除
mkdir -p /date/blank
#建立一個(gè)空的文件夾
mkdir -p /date/test
cd /date/test
touch {1..10000}
#模擬/date/test文件中有1萬個(gè)文件數(shù)據(jù)
rsync --delete-before -avH --progress --stats /home/blank /date/test
#使用rsync刪除/date/test目錄中的文件,用空文件夾同步了test文件夾
選項(xiàng)說明:
--delete-before 接收者在傳輸進(jìn)行刪除操作
-a 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性-H 保持硬連接的文件
-v 詳細(xì)輸出模式
-H 保持硬連接的文件
--progress 在傳輸時(shí)顯示傳輸過程
--stats 給出某些文件的傳輸狀態(tài)
cd /date/test
ls
#進(jìn)入查看數(shù)據(jù)為空
9.2rsync+inotify實(shí)時(shí)同步刪除
#基于以上rsync+inotify實(shí)時(shí)同步實(shí)驗(yàn)
服務(wù)端:
mkdir -p /date/test
touch {1..10000}
#模擬/date/test文件中有1萬個(gè)文件數(shù)據(jù)
客戶端:
/opt/inotify.sh
#運(yùn)行inotify.sh,前臺(tái)運(yùn)行需要再開啟一個(gè)窗口
新窗口
cd /var/www/html
echo " ">a.txt
rm -rf *
創(chuàng)建一個(gè)空給a.txt
然后再服務(wù)端驗(yàn)證/date/test中文件夾已全部刪除只有剛同步的a.txt文件
9.3批量刪除文件的方式(2千個(gè)文件)
①使用rsync
(2千個(gè)文件)
(20萬個(gè)文件)
②find 指定目錄 -exec rm {} \;
③rm -rf 這種如果是針對(duì)大文件,可能不生效
④find 指定目錄 -delete
(2千個(gè)文件)
(20萬個(gè)文件)
溫故而知新
①一種方式,用rsync同步內(nèi)容
還有另一種方式,用ssh同步內(nèi)容
rsync -az 原始位置 目標(biāo)位置
方法一: 用戶名@ip::共享模塊名 rsync -avz sbk@192.168.246.8::wwwroot /opt/ky66
方法二: rsync://用戶名@IP/共享模塊名 rsync -avz rsync://sbk@192.168.246.8/wwwroot /opt/ky66
rsync -avz -e "ssh -p ssh端口號(hào)" 原始位置 目標(biāo)位置
rsync -avz -e "ssh -p 22" root@192.168.246.8"/var/www/html /opt
②rsync
文件傳輸:lrzsz ftp samba cifs nfs sftp scp WinSCP rsync SVN git
rsync 遠(yuǎn)程文件同步,可實(shí)現(xiàn)跨主機(jī)增量同步文件數(shù)據(jù)
命令格式:
rsync [選項(xiàng)] 原始位置 目標(biāo)位置
rsync -az --delete 源服務(wù)器位置 本地位置 #下行同步,從源服務(wù)器拉數(shù)據(jù)
rsync -az --delete 本地位置 源服務(wù)器位置 #上行同步,推數(shù)據(jù)到源服務(wù)器
免交互
#rsync-daemon方式
rsync -az --delete --password-file=密碼文件 用戶名@源服務(wù)器地址::共享模塊名 本地目錄
rsync -az --delete --password-file=密碼文件 rsync://用戶名@源服務(wù)器地址/共享模塊名 本地目錄
#rsync-ssh方式
rsync -az --delete -e 'sshpass -p 'ssh密碼' ssh -p ssh端口 -o StrictHostKeyChecking=no' 用戶名@源服務(wù)器地址:共享目錄/ 本地目錄
先做ssh密鑰對(duì)免交互(空密碼,ssh-agent bash + ssh-add)
rsync -az --delete -e 'ssh -p ssh端口' 用戶名@源服務(wù)器地址:共享目錄/ 本地目錄
③上行同步、下行同步
下行同步:客戶端與服務(wù)端同步內(nèi)容,可以理解為客戶端從服務(wù)器上下載內(nèi)容
上行同步:服務(wù)端與客戶端同步內(nèi)容,可以理解為客戶端將內(nèi)容上傳到服務(wù)器
rsync 遠(yuǎn)程同步 在同步的過程中 實(shí)現(xiàn)了 邊復(fù)制,邊統(tǒng)計(jì),邊比較的備份工具
1.上行同步(上傳)
客戶端 (源) ----> RSYNC---->(目標(biāo))服務(wù)器
在這種情況下,客戶端有一些 (需要備份的數(shù)據(jù)) 文件,它們需要同步到服務(wù)器
它的執(zhí)行過程:
首先在客戶端和服務(wù)器之間建立一個(gè)連接,然后比較兩邊的文件,只有在客戶端上,新的或已更改的文件才會(huì)被上傳到服務(wù)器
rsync? -avz? /local/deirctory? user@地址::模塊
一般會(huì)結(jié)合 inotify (文件實(shí)時(shí)監(jiān)控) 來同步數(shù)據(jù)
user@地址::模塊0rsynC-avz /local/deirctory
般會(huì)結(jié)合 inotify(文件實(shí)時(shí)監(jiān)控)來同步數(shù)據(jù)
2.下行同步(下載)
服務(wù)器(源)-------> rsync------->(目標(biāo))客戶端
在這種情況下,服務(wù)器有一些 (需要備份的數(shù)據(jù)) 文件,它們需要同步到客戶端
它的執(zhí)行過程:
RSYNC首先在服務(wù)器和客戶端建立一個(gè)連接,然后比較兩邊的文件,只有在服務(wù)器上,新的或已更改的文件,才會(huì)被下載到客戶端
rsync? -avz? user地址::模塊? ?/local/deirctory文章來源:http://www.zghlxwxcb.cn/news/detail-850535.html
它表示:/local/deirctory(目標(biāo)位置)文章來源地址http://www.zghlxwxcb.cn/news/detail-850535.html
到了這里,關(guān)于rsync 遠(yuǎn)程同步----------安全高效的異地備份方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!