-
轉載自: http://blog.csdn.net/wh211212/article/details/53054470
Rsync 簡介
- rsync是類unix系統下的資料鏡像備份工具——remote sync。一款快速增量備份工具 Remote Sync,遠端同步 支援本地複制,或者與其他SSH、rsync主機同步。
- Rsync 傳送門:https://rsync.samba.org/
- 通過rsync将檔案或目錄從一個位置複制到另一個主機,使用cron定時自動設定rsync,參考本文教程,例如,将linuxprobe.oprg上的[/root/work]下的檔案或目錄複制到vdevops.org上的[/home/backup]。
- 實驗環境:linuxprobe.org/10.1.1.53 vdevops.org/10.1.1.56
在源主機上配置
[root@linuxprobe ~]# yum -y install rsync
[root@linuxprobe ~]# vi /etc/rsync_exclude.lst
# 指定要排除複制的檔案或目錄
test
test.txt
在目标主機上配置
[root@vdevops ~]# yum -y install rsync
[root@vdevops ~]# vi /etc/rsyncd.conf
# any name you like
[backup]
# destination directory for copy
path = /home/backup
# hosts you allow to access
hosts allow = 10.0.0.30
hosts deny = *
list = true
uid = root
gid = root
read only = false
[root@vdevops ~]# mkdir /home/backup
[root@vdevops ~]# systemctl start rsyncd
[root@vdevops ~]# systemctl enable rsyncd
配置完成,在源主機上執行rsync,如下所示
[[email protected] ~]# mkdir work
[[email protected] ~]# rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /root/work/ vdevops.org::backup
sending incremental file list
./
sent 53 bytes received 11 bytes 128.00 bytes/sec
total size is 0 speedup is 0.00
# 設定定時任務
[[email protected] ~]# crontab -e
# run at 2:00 AM in a day
00 02 * * * rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /root/work/ vdevops.org::backup
rsync中的參數
-r 是遞歸
-l 是連結檔案,意思是拷貝連結檔案;-p 表示保持檔案原有權限;-t 保持檔案原有時間;-g 保持檔案原有使用者組;-o 保持檔案原有屬主;-D 相當于塊裝置檔案;
-z 傳輸時壓縮;
-P 傳輸進度;
-v 傳輸時的進度等資訊,和-P有點關系,自己試試。可以看文檔;
-e ssh的參數建立起加密的連接配接。
-u隻進行更新,防止本地新檔案被重寫,注意兩者機器的時鐘的同時
--progress是指顯示出詳細的進度情況
--delete是指如果伺服器端删除了這一檔案,那麼用戶端也相應把檔案删除,保持真正的一緻
--password-file=/password/path/file來指定密碼檔案,這樣就可以在腳本中使用而無需互動式地輸入驗證密碼了,這裡需要注意的是這份密碼檔案權限屬性要設得隻有屬主可讀。
Lsync + Rsync 實時同步
安裝Lsyncd是一個靈活的跨平台同步工具
Lsyncd github位址: https://github.com/axkibe/lsyncd
# install from EPEL
[[email protected] ~]# yum --enablerepo=epel -y install lsyncd
[[email protected] ~]# vi /etc/lsyncd.conf
-- line 8: comment out
-- sync{default.rsyncssh, source="/var/www/html", host="localhost", targetdir="// tmp/htmlcopy/"}
-- add follows to the end
settings{
logfile ="/var/log/lsyncd.log",
statusFile = "/tmp/lsyncd.stat",
inotifyMode = "CloseWrite",
maxProcesses = 7,
statusInterval = 1,
-- nodaemon =true,
}
sync{
default.rsync,
-- source directory
source="/root/work/",
-- destination Hostname or IP address:(the name set in rsyncd.conf)
-- target="10.1.1.53::backup",
target="vdevops.org::backup",
-- excluding list
excludeFrom="/etc/rsync_exclude.lst",
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true
}
}
[[email protected] ~]# systemctl start lsyncd
[[email protected] ~]# systemctl status lsyncd
# 啟動完成檢視lsyncd狀态,確定lsync啟動成功
[[email protected] ~]# systemctl enable lsyncd
確定在目标主機上及時複制檔案和目錄
# server 端
[root@linuxprobe ~]# cd work/
[root@linuxprobe work]# echo "lsync + rsync" > linuxprobe.txt
# client 端
[root@vdevops ~]# cd /home/backup/
[root@vdevops backup]# ls
linuxprobe.txt
[root@vdevops backup]# cat linuxprobe.txt
lsync + rsync
# 能看出lsync+ rsync檔案實時同步已完成
lsyncd.conf配置選項說明
settings
裡面是全局設定,--開頭表示注釋,下面是幾個常用選項說明:
logfile 定義日志檔案
stausFile 定義狀态檔案
nodaemon=true 表示不啟用守護模式,預設
statusInterval 将lsyncd的狀态寫入上面的statusFile的間隔,預設10秒
inotifyMode 指定inotify監控的事件,預設是CloseWrite,還可以是Modify或CloseWrite or Modify
maxProcesses 同步程序的最大個數。假如同時有20個檔案需要同步,而maxProcesses = 8,則最大能看到有8個rysnc程序
maxDelays 累計到多少所監控的事件激活一次同步,即使後面的delay延遲時間還未到
sync
裡面是定義同步參數,可以繼續使用maxDelays來重寫settings的全局變量。一般第一個參數指定lsyncd以什麼模式運作:rsync、rsyncssh、direct三種模式:
default.rsync :本地目錄間同步,使用rsync,也可以達到使用ssh形式的遠端rsync效果,或daemon方式連接配接遠端rsyncd程序;
default.direct :本地目錄間同步,使用cp、rm等指令完成差異檔案備份;
default.rsyncssh :同步到遠端主機目錄,rsync的ssh模式,需要使用key來認證
source 同步的源目錄,使用絕對路徑。
target 定義目的位址.對應不同的模式有幾種寫法:
/tmp/dest :本地目錄同步,可用于direct和rsync模式
172.29.88.223:/tmp/dest :同步到遠端伺服器目錄,可用于rsync和rsyncssh模式,拼接的指令類似于/usr/bin/rsync -ltsd --delete --include-from=- --exclude=* SOURCE TARGET,剩下的就是rsync的内容了,比如指定username,免密碼同步
172.29.88.223::module :同步到遠端伺服器目錄,用于rsync模式
三種模式的示例會在後面給出。
init 這是一個優化選項,當init = false,隻同步程序啟動以後發生改動事件的檔案,原有的目錄即使有差異也不會同步。預設是true
delay 累計事件,等待rsync同步延時時間,預設15秒(最大累計到1000個不可合并的事件)。也就是15s内監控目錄下發生的改動,會累積到一次rsync同步,避免過于頻繁的同步。(可合并的意思是,15s内兩次修改了同一檔案,最後隻同步最新的檔案)
excludeFrom 排除選項,後面指定排除的清單檔案,如excludeFrom = "/etc/lsyncd.exclude",如果是簡單的排除,可以使用exclude = LIST。
這裡的排除規則寫法與原生rsync有點不同,更為簡單:
監控路徑裡的任何部分比對到一個文本,都會被排除,例如/bin/foo/bar可以比對規則foo
如果規則以斜線/開頭,則從頭開始要比對全部
如果規則以/結尾,則要比對監控路徑的末尾
?比對任何字元,但不包括/
*比對0或多個字元,但不包括/
**比對0或多個字元,可以是/
delete 為了保持target與souce完全同步,Lsyncd預設會delete = true來允許同步删除。它除了false,還有startup、running值,請參考 Lsyncd 2.1.x ‖ Layer 4 Config ‖ Default Behavior。
rsync
(提示一下,delete和exclude本來都是rsync的選項,上面是配置在sync中的,我想這樣做的原因是為了減少rsync的開銷)
bwlimit 限速,機關kb/s,與rsync相同(這麼重要的選項在文檔裡竟然沒有标出)
compress 壓縮傳輸預設為true。在帶寬與cpu負載之間權衡,本地目錄同步可以考慮把它設為false
perms 預設保留檔案權限。
其它rsync的選項
其它還有rsyncssh模式獨有的配置項,如host、targetdir、rsync_path、password_file,見後文示例。rsyncOps={"-avz","--delete"}這樣的寫法在2.1.*版本已經不支援。
lsyncd.conf可以有多個sync,各自的source,各自的target,各自的模式,互不影響。
轉載自: http://blog.csdn.net/wh211212/article/details/53054470