Linux下rsync(本地、遠(yuǎn)程)文件同步方式
rsync介紹
sync同步:
刷新文件系統(tǒng)緩存,強(qiáng)制將修改過的數(shù)據(jù)塊寫入磁盤,并且更新超級快。
一般重啟系統(tǒng)前執(zhí)行sync命令
async
:將數(shù)據(jù)先緩存在緩沖區(qū),再周期性(一般是30s)的去同步到磁盤 。性能好,但是不能保證數(shù)據(jù)的安全性rsync
:遠(yuǎn)程同步,remote synchronous
rsync特點(diǎn)
1.可以鏡像保存整個(gè)目錄樹和文件系統(tǒng)
2.可以保留原有的權(quán)限,owner,group,時(shí)間,軟硬鏈接,文件屬性等信息
3.傳輸效率高,只比較變化的
4.支持匿名傳輸,也可以做驗(yàn)證,加強(qiáng)安全
rsync的選項(xiàng)說明
-v
:顯示rsync過程中詳細(xì)信息??梢允褂?quot;-vvvv"獲取更詳細(xì)信息。-P
:顯示文件傳輸?shù)倪M(jìn)度信息。(實(shí)際上"-P"="–partial --progress",其中的"–progress"才是顯示進(jìn)度信息的)。-n --dry-run
:僅測試傳輸,而不實(shí)際傳輸。常和"-vvvv"配合使用來查看rsync是如何工作的。-a --archive
:歸檔模式,表示遞歸傳輸并保持文件屬性。等同于"-rtopgDl"。-r --recursive
:遞歸到目錄中去。-t --times
:保持mtime屬性。強(qiáng)烈建議任何時(shí)候都加上"-t",否則目標(biāo)文件mtime會設(shè)置為系統(tǒng)時(shí)間,導(dǎo)致下次更新:檢查出mtime不同從而導(dǎo)致增量傳輸無效。-o --owner
:保持owner屬性(屬主)。-g --group
:保持group屬性(屬組)。-p --perms
:保持perms屬性(權(quán)限,不包括特殊權(quán)限)。-D
:是"–device --specials"選項(xiàng)的組合,即也拷貝設(shè)備文件和特殊文件。-l --links
:如果文件是軟鏈接文件,則拷貝軟鏈接本身而非軟鏈接所指向的對象。-z
:傳輸時(shí)進(jìn)行壓縮提高效率。-R --relative
:使用相對路徑。意味著將命令行中指定的全路徑而非路徑最尾部的文件名發(fā)送給服務(wù)端,包括它們的屬性。用法見下文示例。–size-only
:默認(rèn)算法是檢查文件大小和mtime不同的文件,使用此選項(xiàng)將只檢查文件大小。-u --update
:僅在源mtime比目標(biāo)已存在文件的mtime新時(shí)才拷貝。注意,該選項(xiàng)是接收端判斷的,不會影響刪除行為。-d --dirs
:以不遞歸的方式拷貝目錄本身。默認(rèn)遞歸時(shí),如果源為"dir1/file1",則不會拷貝dir1目錄,使用該選項(xiàng)將拷貝dir1但不拷貝file1。–max-size
:限制rsync傳輸?shù)淖畲笪募笮 ?梢允褂脝挝缓缶Y,還可以是一個(gè)小數(shù)值(例如:"–max-size=1.5m")–min-size
:限制rsync傳輸?shù)淖钚∥募笮?。這可以用于禁止傳輸小文件或那些垃圾文件。–exclude
:指定排除規(guī)則來排除不需要傳輸?shù)奈募?/li>–delete
:以SRC為主,對DEST進(jìn)行同步。多則刪之,少則補(bǔ)之。注意"–delete"是在接收端執(zhí)行的,所以它是在:exclude/include規(guī)則生效之后才執(zhí)行的。-b --backup
:對目標(biāo)上已存在的文件做一個(gè)備份,備份的文件名后默認(rèn)使用"~“做后綴。–backup-dir
:指定備份文件的保存路徑。不指定時(shí)默認(rèn)和待備份文件保存在同一目錄下。-e
:指定所要使用的遠(yuǎn)程shell程序,默認(rèn)為ssh。–port
:連接daemon時(shí)使用的端口號,默認(rèn)為873端口。–password-file
:daemon模式時(shí)的密碼文件,可以從中讀取密碼實(shí)現(xiàn)非交互式。注意,這不是遠(yuǎn)程shell認(rèn)證的密碼,而是rsync模塊認(rèn)證的密碼。-W --whole-file
:rsync將不再使用增量傳輸,而是全量傳輸。在網(wǎng)絡(luò)帶寬高于磁盤帶寬時(shí),該選項(xiàng)比增量傳輸更高效。–existing
:要求只更新目標(biāo)端已存在的文件,目標(biāo)端還不存在的文件不傳輸。注意,使用相對路徑時(shí)如果上層目錄不存在也不會傳輸。–ignore-existing
:要求只更新目標(biāo)端不存在的文件。和”–existing"結(jié)合使用有特殊功能,見下文示例。–remove-source-files
:要求刪除源端已經(jīng)成功傳輸?shù)奈募?/li>
用法
1.本地同步:
rsync -a 源目錄或文件 目標(biāo)目錄或文件 例如: rsync -a /dir1/ /dir2/ #dir1下所有文件同步到dir2下
2.遠(yuǎn)程同步:
rsync -av root@192.168.1.77:/etc/hosts /dir1/ #j將192.168.1.77服務(wù)器/etc/hosts文件拷貝到本地/dir1文件夾下
默認(rèn)是需要輸入密碼才能同步,因?yàn)閞sync基于ssh服務(wù)
注:免密登錄,這只密鑰對
3.將rsync作為服務(wù),進(jìn)行同步(遠(yuǎn)程服務(wù)器端進(jìn)行如下配置)
創(chuàng)建配置文件:touch /etc/rsyncd.conf
編輯/etc/rsyncd.conf
[ava] #ava為模塊名 log file = /var/log/rsync.log path=/dir1 #path為同步目錄 uid = root 不設(shè)置uid和gid的話會報(bào)錯:有部分文件同步失敗,提示:`permission denied` gid = root
啟動:rsync --daemon
驗(yàn)證是否啟動:
netstat -nltup | grep rsync #可以看到端口號是873
手動進(jìn)行備份操作:
本地端執(zhí)行同步,從192.168.1.77同步模塊名為ava
的文件到本地/tmp/
目錄下:
rsync -av root@192.168.1.77::ava /tmp/
上述命令是手動實(shí)現(xiàn)備份功能,如需自動備份看下:
自動備份:
1.編寫腳本
vim rsync_ava.sh
腳本內(nèi)容:
#!/bin/bash rsync -av root@192.168.1.77::ava /tmp/ &>/dev/null
給腳本添加可執(zhí)行權(quán)限
chmod +x rsync_ava.sh
2.執(zhí)行定時(shí)任務(wù)
編寫計(jì)劃
crontab -e
03 01 * * * 腳本路徑 #每天1時(shí)3分執(zhí)行備份腳本
查詢定時(shí)計(jì)劃:
crontab -l
拓展
實(shí)時(shí)同步備份(服務(wù)端有文件改變就備份):rsync+inotify
1.安裝inotify軟件
tar xf inotify-tools-3.13.tar.gz -C /usr/src/ cd /usr/src/inotify-tools-3.13/ ./configure make make install
安裝后會產(chǎn)生兩條命令:
/usr/local/bin/inotifywait #等待 /usr/local/bin/inotifywatch #看守
2.編寫腳本實(shí)現(xiàn)同步
#!/bin/bash /usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /dir1 | while read events do rsync -a --delete /dir1 /dir2/ echo "'date +%F\ %T'出現(xiàn)事件$events" >> /var/log/rsync.log 2>&1 done
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
ubuntu15.10下hadoop2.7.2的安裝與配置詳解
今天小編就為大家分享一篇關(guān)于ubuntu15.10下hadoop2.7.2的安裝與配置詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02詳解如何在Linux中重置MySQL或者M(jìn)ariaDB的root密碼
本篇文章主要介紹了如何在 Linux 中重置 MySQL 或者 MariaDB 的 root 密碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03如何解決Diffie-Hellman Key Agreement Protocol資源管理
文章主要介紹了資源管理錯誤漏洞的修復(fù)項(xiàng)目,特別提到Diffie-HellmanKeyAgreementProtocol是一種密鑰協(xié)商協(xié)議,該協(xié)議存在安全漏洞,文章建議在配置文件中正確寫入kexalgorithms,避免語法錯誤導(dǎo)致sshd服務(wù)無法啟動,從而無法通過SSH連接服務(wù)器2024-12-12Linux中l(wèi)ogrotate日志輪詢操作總結(jié)
這篇文章主要給大家介紹了在Linux中l(wèi)ogrotate日志輪詢操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06Apache2.2.16+PHP5.3.3+MySQL5.1.49的配置方法
輕松配置PHP5.3.3+Apache2.2.16+MySQL5.1.49,下面是有詳細(xì)的步驟說明。2010-09-09Linux下Python腳本自啟動和定時(shí)啟動的詳細(xì)步驟
這篇文章主要介紹了Linux下Python腳本自啟動和定時(shí)啟動的詳細(xì)步驟,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09