rsync備份服務簡介與實戰

rsync簡介

Rsync(Remote Synchronization)是一款開源的,快速的,多功能的,可實現全量和增量的本地或遠程數據同步備份的優秀工具.可實現cp,scp,rm,增量備份等功能

優點

  1. 同步時能夠完整的保留數據目錄結構、權限、時間、軟硬鏈接等
  2. 能夠實現增量同步, 每一次同步只會同步發生過改變的數據
  3. 文件傳輸效率高
  4. 支持匿名傳輸
  5. 無須特殊權限即可安裝
  6. 支持流控制, 可以精確同步速度和使用的帶寬大小

語法

   Local:  rsync [OPTION...] SRC... [DEST]

   Access via remote shell:
     Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
     Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

   Access via rsync daemon:
     Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
             rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
     Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
           rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

常用選項:

​ -v, --verbose 顯示詳細的傳輸信息
​ -a, --archive 歸檔模式, 等於 -rlptgoD
​ -r, --recursive 遞歸複製目錄
​ -t, --times 保持文件屬性信息時間信息不變(修改時間)
​ -o, --owner 保持文件屬主信息不變
​ -g, --group 保持文件屬組信息不變
​ -p, --perms 保持文件權限信息不變
​ -D, 保持設備文件信息不變
​ -l, --links 保持鏈接文件屬性不變
​ -L, 保持鏈接文件數據信息不變
​ -P, 保留那些因故沒有完全傳輸的文件, 以加快隨後的再次傳輸,可看到傳輸進度
​ --exclude=PATTERN 排除指定數據不被傳輸
​ --exclude-from=file 排除指定數據不被傳輸(批量排除)
​ --bwlimit=RATE 顯示傳輸的速率 100Mb/8=12.5MB
​ --delete 刪除 DST 上 SRC 不存在的數據

備份服務器rsync守護進程配置

  1. 下載安裝軟件

    rpm -qa|grep rsync
    yum install -y rsync 
    
  2. 編寫配置文件

    #查看幫助文檔
    man rsyncd.conf
    vim /etc/rsyncd.conf 
    #參數說明
    uid = rsync       # 指定管理備份目錄的用戶  
    gid = rsync       # 指定管理備份目錄的用戶組
    port = 873        # 定義rsync備份服務的網絡端口號
    fake super = yes  # 將rsync虛擬用戶僞裝成爲一個超級管理員用戶 
    use chroot = yes   # 和安全相關的配置
    max connections = 200  # 最大連接數  同時只能有200個客戶端連接到備份服務器
    timeout = 300          # 超時時間(單位秒)
    pid file = /var/run/rsyncd.pid   # 記錄進程號信息 
    lock file = /var/run/rsync.lock  # 鎖文件
    log file = /var/log/rsyncd.log   # rsync服務的日誌文件 用於排錯分析問題
    ignore errors                    # 忽略傳輸中的簡單錯誤
    read only = false                # 指定備份目錄是可讀可寫
    list = false                     # 使客戶端可以查看服務端的模塊信息
    hosts allow = 172.16.1.0/24      # 允許傳輸備份數據的主機(白名單)
    hosts deny = *         # 禁止傳輸備份數據的主機(黑名單)
    auth users = rsync_backup        # 指定認證用戶 
    secrets file = /etc/rsync.password   # 指定認證用戶密碼文件 用戶名稱:密碼信息(密碼長度在8位一下,權限必須是600)
    
    [backup]                         # 模塊信息
    comment = "backup dir "  
    path = /backup                   # 模塊中配置參數 指定備份目錄
    
  3. 創建rsync服務的系統用戶

    useradd -r rsync
    
  4. 創建備份服務認證密碼文

    echo "rsync_backup:123456" >/etc/rsync.password
    chmod 600 /etc/rsync.password
    
  5. 創建備份目錄並修改屬主屬組信息

    mkdir /backup
    chown -R rsync.rsync /backup/
    
  6. 啓動備份服務

    systemctl start rsyncd
    systemctl enable rsyncd
    systemctl status rsyncd
    
  7. 防火牆設置

    firewall-cmd --add-service rsyncd
    

備份實戰

客戶端腳本(172.16.1.41)

#!/bin/bash

#設置本機的備份目錄
backup_dir="/backup"
ip_addr=$(hostname -i)

#創建備份目錄
if [[ ! -d "/$backup_dir/$ip_addr" ]]; then
	mkdir -p /$backup_dir/$ip_addr
fi

cd /
#創建備份壓縮包,包括:
#定時任務服務的配置文件(/var/spool/cron/root)、開機自啓動的配置文件(/etc/rc.local)、
#日常腳本的目錄(/server/scripts)、防火牆iptables的配置文件(/etc/sysconfig/iptables)
tar zchf /$backup_dir/$ip_addr/system_backup_$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables-config

#刪除7天以前的備份
find $backup_dir/ -type f -mtime +7 -exec rm -rf {} \;

#生成文件指紋校驗結果文件
find $backup_dir/ -type f -mtime -1 ! -name "finger*" -exec md5sum {} > $backup_dir/$ip_addr/finger.txt \;

#傳輸到備份服務器
rsync -avz /backup/ [email protected]::backup --password-file=/etc/rsync.password

在這裏插入圖片描述

寫入定時任務

crontab -e 
0 0 * * *  /bin/bash /server/scripts/client_backup.sh >/dev/null 2>&1

服務端腳本(172.16.1.31)

#!/bin/bash
#刪除半年前除每週一之外的備份
find /backup/ -type f -mtime +180 ! -name "*week1.tar.gz" -exec rm -rf {} \;
#校驗文件的完整性
find /backup/ -type f -name "finger.txt" -exec md5sum -c {} \; >/tmp/check.txt
#校驗結果發送到郵箱
mail -s "check into $(date +%F)" [email protected] </tmp/check.txt

寫入服務端定時任務

crontab -e

0 5 * * *  /bin/sh /server/scripts/backup_server.sh &>/dev/null

服務端郵箱配置方法

這裏我們用163郵箱作爲代理,首先要進行如下設置

在這裏插入圖片描述

開啓IMAP/SMTP服務,獲取授權碼

在這裏插入圖片描述
備份服務器配置

yum install mailx -y
vim /etc/mail.rc #找不到就是沒有安裝mailx
#在末尾加入
set from=郵箱地址@163.com smtp=smtp.163.com
set smtp-auth-user=郵箱地址@163.com smtp-auth-password=授權碼 smtp-auth=login
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章