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