rsync備份
阿新 • • 發佈:2020-07-10
目錄
一.服務端設定
安裝rsync服務
[root@backup ~]# yum install -y rsync
修改配置檔案
[root@backup ~]# vim /etc/rsyncd.conf ## 指定程序啟動uid uid = rsync ## 指定程序啟動gid gid = rsync ## rsync服務的埠 port = 873 ## 無需讓rsync以root身份執行,允許接收檔案的完整屬性 fake super = yes ## 禁錮指定的目錄 use chroot = no ## 最大連線數 max connections = 200 ## 超時時間 timeout = 600 ## 忽略錯誤 ignore errors ## 不只讀(可讀可寫) read only = false ## 不允許別人檢視模組名 list = false ## 傳輸檔案的使用者 auth users = gsp_bak ## 傳輸檔案的使用者和密碼檔案 secrets file = /etc/rsync.passwd ## 日誌檔案 log file = /var/log/rsyncd.log ##################################### ## 模組名 [gsp] ## 註釋,沒啥用 comment = my backup ## 備份的目錄 path = /backup
建立所需使用者,目錄,檔案
# 根據配置檔案內容,創建出來需要的使用者,目錄,密碼檔案... #1.建立使用者 [root@backup ~]# useradd rsync -s /sbin/nologin -M #2.建立備份目錄 [root@backup ~]# mkdir /backup #3.修改屬組和屬主 [root@backup ~]# chown -R rsync.rsync /backup/ #4.建立使用者名稱和密碼存放的檔案 [root@backup ~]# vim /etc/rsync.passwd gsp_bak:123 或者 [root@backup ~]# echo 'gsp_bak:123' > /etc/rsync.passwd #5.修改密碼檔案的許可權為600 [root@backup ~]# chmod 600 /etc/rsync.passwd #6.啟動服務並且加入開機自啟 [root@backup ~]# systemctl start rsyncd [root@backup ~]# systemctl enable rsyncd #7.檢測埠 [root@backup ~]# netstat -lntup|grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 18373/rsync tcp6 0 0 :::873 :::* LISTEN 18373/rsync
二.客戶端設定
建立客戶端密碼檔案
[root@web01 ~]# echo '123' > /etc/rsync.pass
修改檔案許可權
[root@web01 ~]# chmod 600 /etc/rsync.pass
推送
#從客戶端往服務端推送重要備份檔案
rsync [-avz] 原始檔 [email protected]::[模組] + 密碼檔案路徑
rsync -avz /etc/shadow [email protected]::gsp --password-file=/etc/rsync.pass
rsync的簡單語法
## rsync 重要選項 -a #歸檔模式傳輸, 等於-tropgDl -v #詳細模式輸出, 列印速率, 檔案數量等 -z #傳輸時進行壓縮以提高效率 --delete #讓目標目錄和源目錄資料保持一致 --password-file=xxx #使用密碼檔案 ------------------- -a 包含 ------------------ -r #遞迴傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸。 -t #保持檔案時間資訊 -o #保持檔案屬主資訊 -p #保持檔案許可權 -g #保持檔案屬組資訊 -l #保留軟連線 -D #保持裝置檔案資訊 ---------------------------------------------- -L #保留軟連線指向的目標檔案 -e #使用的通道協議,指定替代rsh的shell程式 --exclude=PATTERN #指定排除不需要傳輸的檔案模式 --exclude-from=file #檔名所在的目錄檔案
rsync密碼環境變數
#使用rsync服務時,推 拉客戶端都要配置密碼
#使用環境變數,可以不配置,直接寫密碼(常在指令碼中)
[root@web01 ~]# export RSYNC_PASSWORD=123 直接寫密碼
[root@web01 ~]# rsync -avz /root/back.sh [email protected]::gsp 把back.sh 使用gsp模組推給服務端
三.簡單的定時備份指令碼
備份指令碼
#寫打包etc目錄且命名傳送的指令碼
[root@web01 ~]# vim back.sh
#!/bin/bash
#密碼環境變數
export RSYNC_PASSWORD=123
#打包
cd / &&\
tar -zcf /tmp/back/$(date +%F)-$(hostname).etc.tar.gz etc
#rsync 推送
/usr/bin/rsync -avz /tmp/back/$(date +%F)-$(hostname).etc.tar.gz [email protected]::gsp
#授權指令碼
[root@web01 ~]# chmod 755 back.sh
寫定時任務
[root@web01 ~]# crontab -e
#每天凌晨1點備份/etc目錄到服務端
00 1 * * * /usr/bin/sh /root/back.sh