1. 程式人生 > >搭建企業級全網數據定時備份方案【cron + rsync】

搭建企業級全網數據定時備份方案【cron + rsync】

關閉 stat time all delete lis gre file lap

1.1.1. 服務端的配置[192.168.25.141]

Rsync的端口是:873

man rsyncd.conf 查看幫助

1.vim /etc/rsyncd.conf
vi /etc/rsyncd.conf          -->man rsyncd.conf 查看幫助
######rsyncd.conf#######
uid = rsync    ----->非系統虛擬用戶
gid = rsync
use chroot =no  -->防止出現安全問題
maxconnections = 200   --->最大連接數
timeout = 300           --->超時時間
pid file =/var/run/rsyncd.pid  --->進程pid所在的文件
lock file =/var/run/rsync.lock  -->鎖
log file =/var/log/rsyncd.log    -->出錯的日誌文件
[backup]    --->模塊
path = /backup  ->可以理解為共享目錄
ignore errors   	--->忽略錯誤
read only =false	--->可讀寫
list = false     -->是否允許列表
hosts allow =192.168.25.0/24  --->允許的主機
hosts deny =0.0.0.0/32
auth users =rsync_backup      -->虛擬用戶
secrets file= /etc/rsync.password    -->用戶對應的密碼文件
#######rsyncd.config########
啟動/關閉rsync服務進程
  rsync --daemon   
     pkill rsync        
檢查rsync服務/端口
ps -ef|grep rsync|grep -v "grep"      ->檢查一下進程
netstat -lntup|grep 873             ->檢查端口
	==> ss -lntup|grep 873
	==> lsof -i:873

技術分享圖片

查看日誌,確認服務開啟

cat /var/log/rsyncd.log

創建用戶rsync

useradd rsync -s /sbin/nologin -M   虛擬用戶,不需要創建家目錄

創建共享目錄backup

mkdir /backup
chown -R rsync.rsync /backup
ls -ld /backup
技術分享圖片

寫入密碼進入/etc/rsync.password

echo "rsync_backup:cnp200@HW" >> /etc/rsync.password

->這裏 rsync_backup rsync的虛擬用戶名,cnp200@HW是rsync的虛擬用戶名的密碼

cat /etc/rsync.password

chmod 600 /etc/rsync.password

ls -dl /etc/rsync.password
技術分享圖片

開機自啟動

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

tail /etc/rc.local
技術分享圖片

1.1.2. 客戶端的配置[192.168.25.142]

寫入密碼到rsync.password文件

echo "cnp200@HW" > /etc/rsync.password      -->只需要密碼
cat /etc/rsync.password 
chmod 600 /etc/rsync.password
ls -dl /etc/rsync.password

技術分享圖片

1.1.3. 測試同步效果

客戶端/etc/hosts目錄以及目錄本身同步到服務端的back目錄(配置文件裏配置的module)下

客戶端:

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

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

技術分享圖片

服務端:

技術分享圖片

註意: 1.使用絕對路徑 2. destination must be a directory when copying more than 1 file

1.1.4 Rsync無差異同步[可選]

無差異同步(盡量不用) 盡量不用,用之前一定要備份

以本地/tmp為準,tmp有服務器端有,服務器多余的文件刪除

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

以服務器端為準,服務器端有,同步到本地/tmp, /tmp多余的文件刪除排除

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

1.服務端:/etc/rsyncd.conf裏面添加exclude= a b test/h.txt

2.客戶端:

rsync -avz --exclude=/tmp/{1,2} /tmp/ [email protected]::backup --password-file=/etc/rsync.password
rsync -avz --exclude=/tmp/{a..g} /tmp/ [email protected]::backup --password-file=/etc/rsync.password
rsync -avz --exclude-from=paichu.txt /tmp/ [email protected]::backup --password-file=/etc/rsync.password

1.1.5. 腳本配合rsync實現實時同步

1.編寫腳本文件hh.sh

#!/bin/sh

IP="$(ifconfig eth0|awk -F ‘[ :]+‘ ‘NR==2{print $4}‘)"
path="/backup_$IP.$(date +%F)"
dir="$IP.$(date +%F)"
echo ".................Starting  copy rc.local................"
mkdir -p  $path/$dir $$\                                                
/bin/cp  /etc/rc.local   $path/$dir/rc.local_$(date +%F) 
echo ".................Ending  copy rc.local................"
echo ".................Starting  rsync......................."
rsync -az $path [email protected]::backup --password-file=/etc/rsync.password
echo ".................Ending   rsync......................."
exit
2.設置定時任務
crontab -e
#################Crontab for rsync###########
0 0 20 8 * /bin/sh /home/omc/hh.sh   >/dev/null 2>&1

更多參考

搭建企業級全網數據定時備份方案【cron + rsync】2

搭建企業級全網數據定時備份方案【cron + rsync】