搭建中小規模集群之rsync數據同步備份

来源:http://www.cnblogs.com/yinshoucheng-golden/archive/2017/02/05/6366730.html
-Advertisement-
Play Games

NFS重要問題 1、有關NFS客戶端普通用戶寫NFS的問題。 1)為什麼要普通用戶寫NFS。 2)exports加all_squash。 Rsync介紹 什麼是Rsync? Rsync是一款開源的、快速的、多功能的、可實現全量即增量的本地或遠程數據同步備份的優秀工具。Rsync軟體適用於unix、l... ...


NFS重要問題

1、有關NFS客戶端普通用戶寫NFS的問題。

1)為什麼要普通用戶寫NFS。

2)exports加all_squash。

Rsync介紹

什麼是Rsync?

Rsync是一款開源的、快速的、多功能的、可實現全量即增量的本地或遠程數據同步備份的優秀工具。Rsync軟體適用於unix、linux、windows等多種操作系統平臺。

Rsync簡介

Rsync英文全稱Remote synchronization。從軟體的名稱就可以看出來,Rsync具有可使本地和遠程兩台主機之間的數據快速複製同步鏡像、遠程備份的功能,這個功能類似ssh帶的scp命令,但又優於scp命令的功能,scp每次都是全量拷貝,而rsync可以增量拷貝。當然,Rsync還可以在本地主機的不同分區或目錄之間全量及增量的複製數據,這又類似cp命令,但同樣也優於cp命令,cp每次都是全量拷貝,而rsync可以增量拷貝。

利用rsync還可以實現刪除文件和目錄的功能,又相當於rm命令。

一個rsync相當於scp、cp、rm,但是還優於他們每一個命令。

Rsync的特性

1、支持拷貝特殊文件如鏈接文件、設備等。

2、可以有排除指定文件或目錄同步的功能,相當於打包命令tar的排除功能。

3、可以做到保持原文件或目錄的許可權、時間、軟硬鏈接、屬主、屬組等所有屬性均不改變-p。

4、可以實現增量同步,即只同步變化的數據,因此數據傳輸效率很高。

5、可以使用rcp、rsh、ssh等方式來配合傳輸文件(rsync本身不對數據加密)。

6、可以通過socket(進程方式)傳輸文件和數據(服務端和客戶端)。

7、支持匿名或認證的進程模式傳輸,可以實現方便安全的進行數據備份及鏡像。

Rsync的企業工作場景說明

兩台伺服器之間數據做定時同步cron+rsync

全網伺服器數據備份

rsync結合inotify的功能做實時的數據同步

Rsync的工作方式

rsync命令是客戶端命令。

Rsync大致使用三種主要的傳輸數據的方式。

1、單個主機本地之間的數據傳輸(此時類似cp命令的功能)。

2、藉助rcp、ssh等通道來傳輸數據(此時類似scp命令的功能)。

3、以守護進程(socket)的方式傳輸數據(rsync自身的重要功能)。

  1. [root@server ~]# rsync -avz /etc/hosts /tmp/ #cp
  2. sending incremental file list
  3. hosts
  4.  
  5. sent 124 bytes received 31 bytes 310.00 bytes/sec
  6. total size is 158 speedup is 1.02
  7. [root@server ~]# ls /tmp
  8. hosts yum.log

 

  1. [root@server ~]# ll /tmp/
  2. total 4
  3. -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
  4. -rw-------. 1 root root 0 Feb 4 09:06 yum.log
  5. [root@server ~]# mkdir /null #創建一個空目錄
  6. [root@server ~]# rsync -avz --delete /null/ /tmp/ #rm
  7. sending incremental file list
  8. ./
  9. deleting .ICE-unix/
  10. deleting yum.log
  11. deleting hosts
  12.  
  13. sent 29 bytes received 15 bytes 88.00 bytes/sec
  14. total size is 0 speedup is 0.00
  15. [root@server ~]# ll /tmp/
  16. total 0

藉助ssh通道推送數據

源端:

  1. [root@server ~]# ll /tmp/
  2. total 4
  3. -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
  4. [root@server ~]# rsync -avzP -e 'ssh -p 22' /tmp/ [email protected]:/tmp
  5. The authenticity of host '192.168.31.133 (192.168.31.133)' can't be established.
  6. RSA key fingerprint is 9e:4c:c8:4d:df:0e:d8:2a:48:8a:04:22:8f:80:64:9a.
  7. Are you sure you want to continue connecting (yes/no)? yes
  8. Warning: Permanently added '192.168.31.133' (RSA) to the list of known hosts.
  9. [email protected]'s password:
  10. sending incremental file list
  11. ./
  12. hosts
  13.          158 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2)
  14.  
  15. sent 141 bytes received 34 bytes 18.42 bytes/sec
  16. total size is 158 speedup is 0.90

目標端:

  1. [root@lamp ~]# ll /tmp/
  2. total 0
  3. -rw-------. 1 root root 0 Feb 4 09:10 yum.log
  4. [root@lamp ~]# ll /tmp/
  5. total 4
  6. -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
  7. -rw-------. 1 root root 0 Feb 4 09:10 yum.log

藉助ssh通道拉取數據

源端:

  1. [root@server ~]# ll /tmp
  2. total 0
  3. [root@server ~]# rsync -avzP -e 'ssh -p 22' [email protected]:/tmp/ /tmp/
  4. [email protected]'s password:
  5. receiving incremental file list
  6. ./
  7. hosts
  8.          158 100% 154.30kB/s 0:00:00 (xfer#1, to-check=2/4)
  9. yum.log
  10.            0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=1/4)
  11. .ICE-unix/
  12.  
  13. sent 56 bytes received 235 bytes 38.80 bytes/sec
  14. total size is 158 speedup is 0.54
  15. [root@server ~]# ll /tmp
  16. total 4
  17. -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
  18. -rw-------. 1 root root 0 Feb 4 09:10 yum.log

關鍵語法說明:

1、-avz相當於-vzrtopgD1,表示同步時文件和目錄屬性不變。

2、-P顯示同步的過程,可以用--progress替換。

3、-e 'ssh -p 22',表示通過ssh的通道傳輸數據,-p 22可省略。

4、[email protected]:/tmp/遠程的主機系統用戶、地址、路徑。

5、/tmp/本地的路徑。

Rsync命令同步參數選項

  1. Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
  2. Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

常用參數選項說明:

-v,--verbose:詳細模式輸出,傳輸時的進度等信息。

-z,--compress:傳輸時進行壓縮以提高傳輸效率,--compress-level=NUM可按級別壓縮。

-a,--archive:歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rtopgDl。

-r,--recursive:對子目錄以遞歸模式,即目錄下的所有目錄都同樣傳輸,註意是小寫r。

-t,--times:保持文件時間信息。

-o,--owner:保持文件屬主信息。

-p,--perms:保持文件許可權。

-g,--group:保持文件屬組信息。

-P,--progress:顯示同步的過程及傳輸時的進度等信息。

-D,--devices:保持設備文件信息。

-l,--links:保留軟鏈接。

-e,--rsh=COMMAND:使用的通道協議,指定替代rsh的shell程式。例如:ssh。

--exclude=PATTERN:指定排除不需要傳輸的文件模式。

--exclude-from=file(文件名所在的目錄文件)

--bwlimit=PATE(限速) limit socket I/O bandwidth。

生產參數:-avz或者-vzrtopg。

查看rsync安裝包

  1. [root@backup ~]# rpm -qa rsync
  2. rsync-3.0.6-12.el6.x86_64

 

  1. [root@backup ~]# touch /etc/rsyncd.conf #創建rsync配置文件

 

  1. [root@backup ~]# cat /etc/rsyncd.conf
  2. #Rsync server
  3. #created by oldboy 13:42 2017-02-04
  4. ##rsyncd.conf start##
  5. uid = rsync #客戶端具有rsync用戶的許可權
  6. gid = rsync
  7. use chroot = no #與安全相關
  8. max connections = 2000 #客戶端最大連接數
  9. timeout = 600 #超時時間
  10. pid file = /var/run/rsyncd.pid #進程號文件
  11. lock file = /var/run/rsync.lock #鎖文件
  12. log file = /var/log/rsyncd.log #log文件
  13. ignore errors #忽略錯誤
  14. read only = false #可讀寫
  15. list = false #不可遠程列表
  16. hosts allow = 192.168.31/24 #允許的ip
  17. hosts deny = 0.0.0.0/32
  18. auth users = rsync_backup #遠程連接的用戶
  19. secrets file = /etc/rsync.password #存放用戶和密碼的文件
  20. #################################
  21. [backup] #模塊
  22. comment = backup server by oldboy 13:48 2017-02-04 #註釋
  23. path = /backup #共用的目錄

啟動rsync服務

  1. [root@backup ~]# rsync --daemon
  2. [root@backup ~]# ps -ef|grep rsync|grep -v grep
  3. root 1149 1 0 14:08 ? 00:00:00 rsync --daemon
  4. [root@backup ~]# netstat -lntup|grep rsync
  5. tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1149/rsync
  6. tcp 0 0 :::873 :::* LISTEN 1149/rsync

 

  1. [root@backup ~]# lsof -i:873
  2. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  3. rsync 1149 root 3u IPv4 9918 0t0 TCP *:rsync (LISTEN)
  4. rsync 1149 root 5u IPv6 9919 0t0 TCP *:rsync (LISTEN)

創建rsync用戶

  1. [root@backup ~]# useradd rsync -s /sbin/nologin -M

創建共用目錄/backup

  1. [root@backup ~]# mkdir /backup
  2. [root@backup ~]# chown -R rsync /backup/
  3. [root@backup ~]# ls -ld /backup
  4. drwxr-xr-x 2 rsync root 4096 Feb 4 14:16 /backup

創建密碼文件/etc/rsync.password

  1. [root@backup ~]# echo "rsync_backup:system">/etc/rsync.password
  2. [root@backup ~]# cat /etc/rsync.password
  3. rsync_backup:system #用戶名:密碼

修改密碼文件/etc/rsync.password的許可權

  1. [root@backup ~]# ll /etc/rsync.password
  2. -rw-r--r-- 1 root root 20 Feb 4 14:19 /etc/rsync.password
  3. [root@backup ~]# chmod 600 /etc/rsync.password
  4. [root@backup ~]# ll /etc/rsync.password
  5. -rw------- 1 root root 20 Feb 4 14:19 /etc/rsync.password

rsync server配置步驟

1、vi /etc/rsyncd.conf配置。

2、創建rsync用戶,及共用目錄/backup。

useradd rsync -s /sbin/nologin -M

id rsync

mkdir /backup

chown -R rsync /backup

3、創建密碼文件/etc/rsync.password。

echo "用戶名:密碼" >/etc/rsync.password

chmod 600 /etc/rsync.password

4、啟動服務

rsync --daemon

netstat -lntup|grep rsync

ps -ef|grep rsync|grep -v grep

5、加入開機自啟動

echo "rsync --daemon" >>/etc/rc.local

cat /etc/rc.local

rsync客戶端配置步驟

1、創建密碼文件

echo "密碼">/etc/rsync.password

chmod 600 /etc/rsync.password

2、rsync

push:

rsync -avz /tmp/ [email protected]::backup --password-file=/etc/rsync.password

pull:

rsync -avz [email protected]::backup /tmp/ --password-file=/etc/rsync.password

rsync -avz rsync://[email protected]/backup /tmp/ --password-file=/etc/rsync.password

安全的優化:

pkill rsync #結束進程rsync

rsync --daemon --address=10.0.0.10

進程管理:

pkill 進程名

killall 進程名

kill pid(進程號)

平滑結束進程:

kill -HUP `cat /var/run/rsyncd.pid`

kill –USR2 `cat /var/run/rsyncd.pid`

Rsync服務端排錯

1、查看rsync服務配置文件路徑是否正確,正確的預設路徑為:/etc/rsyncd.conf。

2、查看配置文件里host allow、host deny允許的ip網段是否是允許客戶端訪問的ip網段。

3、查看配置文件中path參數里的路徑是否存在,許可權是否正確(正常應為配置文件中的UID參數對應的屬主和組)。

4、查看rsync服務是否啟動。查看命令為ps -ef|grep rsync。埠是否存在netstat -lnt|grep 873。

5、查看iptables防火牆和selinux是否開啟允許rsync服務通過,也可以關閉。

6、查看服務端rsync配置的密碼文件是否為600的許可權,密碼文件格式是否正確,正確格式:用戶名:密碼,文件路徑和配置文件里的secrect files參數對應。

7、如果是推送數據,要查看配置rsyncd.conf文件中用戶是否對模塊下目錄有可讀寫的許可權。

rsync優點

1、增量備份同步。

2、支持socket(daemon)。

3、集中備份。

rsync缺點

1、大量小文件同步的時候比對時間較長,有的時候rsync進程會停止。

解決辦法:a、打包同步。b、drbd(文件系統同步複製block)。

2、同步大文件時(10G以上)會有中斷。未完整同步前是隱藏文件,同步完成之後為正常文件。

無差異同步:--delete(慎用),使用該參數前先備份。

客戶端rsync命令排除

排除單個文

rsync -avz --exclude=a /data1/ [email protected]::oldboy --password-file=/etc/rsync.password

排除多個文件

rsync -avz --exclude={a,b} /data1/ [email protected]::oldboy --password-file=/etc/rsync.password

rsync -avz –exclude-from=paichu.log /data1/ [email protected]::oldboy --password-file=/etc/rsync.password

定時備份案例

  1. [root@lamp scripts]# cat /server/scripts/bak.sh
  2. #!/bin/sh
  3. path=/backup
  4. dir="`ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'`_$(date +%F)"
  5. mkdir $path/$dir -p &&\
  6. /bin/cp /var/spool/cron/root $path/$dir/cron_root_$(date +%F) &&\
  7. /bin/cp /etc/rc.local $path/$dir/rc.local_$(date +%F) &&\
  8. rsync -az $path/ [email protected]::backup --password-file=/etc/rsync.password
  9. [root@lamp scripts]# /bin/sh /server/scripts/bak.sh

 

  1. [root@lamp scripts]# crontab -e
  2. #rsync定時備份
  3. 00 01 * * * /bin/sh /server/scripts/bak.sh >dev/null 2>&1

用scp發送到另外一臺伺服器

  1. [root@lamp scripts]# scp /server/scripts/bak.sh [email protected]:/tmp

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 0.視頻地址:http://www.imooc.com/video/3265 1.使用SharePreferences存取數據: public class MainActivity extends Activity { @Override protected void onCreate(Bundle ...
  • 作者:Antonio Leiva 時間:Jan 25, 2017 原文鏈接:https://antonioleiva.com/data-classes-kotlin/ 在前面的文章中,我們已經見到了類,而數據類還可以進一步幫助我們簡化代碼。 數據類是什麼? 數據類是僅僅包含狀態而沒有任何可執行的操作 ...
  • Android 第三方類庫之EventBus 1 PS 工欲善其事必先利其器. Eventbus也是一款在開發中常用的利器 這篇也對EventBus的簡單介紹和使用,與之前個xutils介紹的級別一樣.http://www.cnblogs.com/greentomlee/p/6025470.html... ...
  • 題記:在開發的路途上,有的人走的很深很遠,而對於停留在初級階段的我來說,還要學的、經歷的還有很多... ...
  • 在 "Linux設備樹語法詳解" 和 "Linux Platform驅動模型(一) _設備信息" 中我們討論了設備信息的寫法,本文主要討論平臺匯流排中另外一部分 驅動方法,將試圖回答下麵幾個問題: 1. 如何填充platform_driver對象? 2. 如何將驅動方法對象註冊到平臺匯流排中? 正文前的 ...
  • 第十一節 linux定時任務 標簽(空格分隔): Linux實戰教學筆記 [更多資料點我查看][1] 1.1 定時任務Crond介紹 Crond是linux系統中用來定期執行命令/腳本或指定程式任務的一種服務或軟體,一般情況下,我們安裝完Centos5/6 linux操作系統之後,預設便會啟動Cro ...
  • 當你出現ifconfig與網卡配置文件的名稱不同時,如圖所示情況 ifconfig顯示的網卡名為eth1,而配置文件名字為ifcfg-eth0,所以會導致失敗。 解決方案: 1、刪除/etc/udev/rules.d/70-persistent-net.rules文件,重啟系統。 2、ifconfi ...
  • 我在 "Linux字元設備驅動框架" 一文中簡單介紹了Linux字元設備編程模型,在那個模型中,只要應用程式 open() 了相應的設備文件,就可以使用ioctl通過驅動程式來控制我們的硬體,這種模型直觀,但是從軟體設計的角度看,卻是一種十分糟糕的方式,它有一個致命的問題,就是設備信息和驅動代碼冗餘 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...