1. 程式人生 > 實用技巧 >rsync備份

rsync備份

目錄

一.服務端設定

安裝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