2.1:什麼是Rsynchtml
Rsync是備份的一款軟件,它能夠實現全量備份、增量備份,也能夠在不改變內容、屬性的狀況下進行同步備份,端口默認是873linux
2.2:Rsync的三種工做模式shell
Rsync支持本地備份(至關於本地的CP命令)、遠程備份(經過SSH)、經過daemon模式(服務端、客戶端)能夠進行Pull拉取數據和Push推送數據安全
2.3:Rsync原理闡述(針對經常使用的daemon模式)bash
① Rsync客戶端執行Rsync命令,去向服務端認證服務器
② 首先服務端會認證發送訪問的虛擬用戶(在服務端配置的auth users參數)ssh
③ Rsync客戶端告訴服務端虛擬用戶,認證成功或者失敗socket
④ 認證客戶端發送的密碼文件(客戶端發送時--password-file = /etc/rsyncd.pas)
工具
⑤ 認證成功同步數據測試
3.1:優勢(使用它的理由)
① 增量備份,支持socket(daemon)集中備份(支持推拉,都是以客戶端爲參照物)
② 支持遠程shell通道模式還能夠密碼ssh傳輸
③ 支持斷點續傳
④ 能夠排除指定的文檔或者目錄,至關於tar的排除功能
⑤ 支持匿名認證遠程模式傳輸,實現方便安全的數據傳輸
3.2:缺點(何時要用其餘的方法)
① 大量小文件同步時間長,有時候會出現進程忽然的中止
② 同步大文件的時候會中斷,沒有完成同步前是隱藏文件(點開頭的文件),可是能夠經過它的斷點續傳來實現傳輸
① 利用定時任務(crontab)+rsync實現定時同步數據,主要同步的信息通常是內部人員使用的文件
② 利用實時同步軟件(inotify)+rsync實現實時的同步數據,主要同步的信息是用戶或者客戶上傳到服務器的文件
5.1:語法及經常使用參數
經常使用參數: -avz:保持屬性,輸出詳細信息 -e: 隧道模式傳輸(SSH) --delete:刪除(無差別同步,兩個文件保持一致) --exclude=*.log: 要排除的文件 --bwlimit=10: 限速同步 --progress:在傳輸時顯示傳輸的過程 --partial:斷點續傳 基於rsync daemon客戶端同步語法: 拉取: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] 推送: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
5.2:在服務端安裝rsync軟件
安裝: yum -y install rsync (Centos7 已經默認安裝了) 檢查: rpm -qa rsync
結果出現表示已安裝 rsync-3.0.9-18.el7.x86_64
5.3:在服務端修改rsync的主配置文件(/etc/rsyncd.conf)
在etc下面有rsyncd.conf這個文件,這個文件中有一些註釋信息,就是配置文件中的規則 咱們要進行自定義配置文件: cat >/etc/rsyncd.conf<<EOF uid = root # 用戶,遠端的命令使用rsync訪問共享目錄 gid = root # 用戶組 port = 873 # 服務端口 address = 192.168.163.129 # 服務地址 通常使用內網地址 pid file = /var/run/rsyncd.pid # 進程號文件 lock file = /var/run/rsyncd.lock# 鎖文件 log file = /var/log/rsync.log # 日誌文件 auth users = rsyncadmin # 虛擬用戶 secrets file = /etc/rsyncd.pas # 密碼文件 motd file = /etc/rsyncd.motd # 描述文件(這個配置能夠寫到每一個模塊中,每一個不一樣的同步就會顯示不一樣的描述信息了) transfer logging = yes # 使 rsync 服務器將傳輸操做記錄到傳輸日誌文件。默認值爲false log format = "%o [ %a ] %m (%u) %f %b %l %b" # 日誌格式 syslog facility = daemon # 指定 rsync 發送日誌消息給 syslog 時的消息級別 use chroot = no # 默認爲 true,在傳輸文件以前首先 chroot 到 path 參數所指定的目錄下;優勢,安全;缺點,須要 root 權限,不能備份指向 path 外部的符號鏈接所指向的目錄文件 timeout = 900 # 超時時間 ignore nonreadable = yes # 是否忽略錯誤 dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 # 用來指定那些在傳輸以前不進行壓縮處理的文件 max connections = 20 # 最大鏈接數 read only = false # 手動推送 可寫 write only = true # 可讀 list = false hosts allow = 192.168.163.0/24 # 容許訪問地址 hosts deny = * # 拒絕訪問地址(這個最好是不用;allow 和 deny同時存在的時候會出現不生效的狀況) # 模塊配置 [date_backup] # 模塊名 path = /opt/data_backup # 備份目錄絕對路徑 EOF
5.4:在服務端建立身份認證文件
生成身份認證文件(rsyncadmin虛擬用戶123456密碼) ehco "rsyncadmin:123456" >> /etc/rsyncd.pas 特別重要的一點 必定給這個文件600權限否則你會很慘的 chmod 600 /etc/rsyncd.pas
5.5:在服務端建立備份的目錄(配置文件中模塊path的目錄)
建立備份目錄(同配置文件中模塊的path路徑) mkdir -p /opt/backup
5.6:在服務端建立描述信息文件
建立歡迎描述信息主要是在執行客戶端推送的時候有個顯示 echo "welcome rsync server" >> /etc/rsyncd.motd
5.7:在服務端啓動rsync服務
啓動兩種方式 rsync --daemon systemctl start rsyncd 檢查 ps -ef | grep rsync | grep -v grep netstat -lntup | grep rsync
5.8:在客戶端建立備份目錄
建立備份目錄的主要緣由是爲了對客戶端要備份的文件進行統一打包推送 mkdir -p /opt/backup
5.9:在客戶端建立身份認證密碼文件(只包含密碼)
和服務端的密碼保持一致,由於傳輸數據須要進行密碼的認證 echo "123456" >> /etc/rsyncd.pas 一樣必定要給600權限 chmod 600 /etc/rsyncd.pas
5.10:在客戶端測試往服務端推送拉取文件
使用推送的方式,把數據推到服務端 # 第一種方式(須要修改read only = false) rsync -avz --progress --delete /opt/backup/ rsyncadmin@192.168.163.129::date_backup/ --password-file=/etc/rsyncd.pas # 第二種方式(須要修改write only = false) rsync -avz --progress --delete /opt/backup/ rsync://rsyncadmin@192.168.163.129/date_backup/ --password-file=/etc/rsyncd.pas # 過濾全部得log文件 rsync -avz --progress --exclude=*.log --delete /opt/backup/ rsyncadmin@192.168.163.129::date_backup/ --password-file=/etc/rsyncd.pas rsync -avz --progress --exclude={a,b} --delete /opt/backup/ rsyncadmin@192.168.163.129::date_backup/ --password-file=/etc/rsyncd.pas # 排除多個文件 使用拉取的方式 # 方法一 rsync -avz /opt/backup/ --progress --delete rsyncadmin@192.168.163.129::date_backup --password-file=/etc/rsyncd.pas # 方法二 rsync -avz --progress /opt/backup/ rsync://rsyncadmin@192.168.163.129/date_backup/ --password-file=/etc/rsyncd.pas PS:接下來就能夠設置計劃任務crontab來定時的執行備份任務了(--delete 參數最好不要加 會出現血的慘案) 其餘參數: 限速: rsync -avz --progress --exclude=*.log --bwlimit=10 --delete /opt/backup/ rsyncadmin@192.168.163.129::date_backup/ --password-file=/etc/rsyncd.pas
5.11:其餘的兩種方式的使用
本地方式: rsync -avz /etc/hosts /mut/ 遠程ssh方式: rsync -avz /etc/hosts -e 'ssh -p 22' root@192.168.163.132:/mnt/ 若是慢能夠在ssh配置中設置兩個參數(ssh_config文件) GSSAPIAuthentication yes 改成 no UseDNS yes 改成 no
6.1:inotify+rsync
6.2:sersync
6.3:lsyncd
Rsync這個工具其實仍是挺好用的在工做中用的也不少,它的優勢徹底大於缺點,全部事實上在工做中它的有點會獲得充分的利用的,缺點也是可使用其餘的方式解決的,這個工具挺重要的 在linux屬於5星軟件的,還有就是想要快速的定位錯誤真的須要你對整個流程、原理要了解的,掌握它至關於掌握了linux的一款初級神器呦
一、密碼輸入錯誤,虛擬用戶名錯誤 二、secrets file = /etc/rsyncd.pad指定的密碼文檔和實際密碼文檔名稱不一致 三、/etc/rsyncd.pad文檔權限不是600 四、rsyncadmin:123456密碼配置文檔後面注意不要有空格 五、rsync客戶端密碼文檔中只輸入密碼信息便可,不要輸入虛擬認證用戶名稱 六、推送時雙冒號後面爲模塊名date_backup,而不是路徑/date_backup 七、telnet鏈接rsync服務ip地址873端口,查看服務是否啓動 telnet 192.168.163.129 873