您好,登錄后才能下訂單哦!
系統環境:linux(centos7)
備份內容:增量備份 結合 全量備份
公司中的生產服務器數據非常重要,所以我們需要通過備份服務器將生產服務器的數據進行備份。
rsync的增量備份,不單單會同步新增的內容,就連刪除的內容也會同步。假如管理代碼人員誤操作將代碼誤刪除,那么備份服務器檢測到備份原的數據產生變化后,也會與其同步,此時生產服務器與備份服務器的代碼都會丟失。
增量備份要求的頻率較高,但在生產與備份服務器之間的網絡資源消耗較少,所以我們可以使用rsync來做增量備份,然后結合在備份服務器本地內做全量備份。
這樣不但減少了生產與備份服務器使用了全量備份的網絡資源開銷,還避免了數據大量丟失的情況。
使用linux的rsync功能來增量備份開發代碼
yum -y install rsync
如果沒有/etc/rsyncd.conf 文件,需要手動創建,如果有直接修改即可。
服務端配置文件/etc/rsyncd.conf 內容如下:
# 在文件最下方添加內容
pid file=/var/rsync/rsync.pid
port=873
lock file=/var/rsync/lock.log
log file=/var/rsync/rsync.log
[py_code]
path=/home/py/
use chroot=no
max connections=10
read only=yes
write only=no
list=no
uid=root
gid=root
auth users=root
secrets file=/etc/rsync_server.pas
strict modes=yes
hosts allow=*
#hosts deny=1.1.1.1
ignore errors=yes
timeout=120 #秒
參數說明:
[py_code] :模塊名,自己定義,可以在下方添加其它模塊。須與客戶端執行命令中的模塊名一致。
path:要備份的服務端文件夾路徑。
hosts allow:允許的客戶端連接IP。
secrets file:服務端密碼文件,內容格式為,用戶名:密碼。
auth users:有權限的用戶名,與密碼文件中用戶名一致。
在/etc中創建文件rsync_server.pas,加入用戶名與密碼,內容格式為:用戶名:密碼。
nano /etc/rsync_server.pas
例如,本例中rsync_server.pas文件內容為root:123456
保存文件后,設置密碼文件權限為600
chmod 600 /etc/rsync_server.pas
注意密碼文件只有設置為600權限才可以使用,客戶端的密碼文件也必須為600。
# 啟動rsync
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
# 停止rsync
ps -ef | grep rsync
kill -9 進程號
rm -rf /var/rsync/rsync.pid
我們測試的時候,一定要保證rsync服務是啟動的
1.查看是否安裝rsync,系統一般默認已安裝,安裝方法:yum -y install rsync(同服務端)。
2.在/etc下創建密碼文件rsync_client.pas,注意內容只有密碼,且與服務端密碼文件中的密碼相同。
3.更改密碼文件權限為600。
在客戶端中添加定時任務,每天幾分鐘執行命令從服務器端拉取數據,進行備份。
直接編輯/etc/crontab文件,添加一條定時任務即可,例如每1分鐘以root身份執行下方的rsync命令,將遠程服務器192.168.1.1中的py_code模塊對應的文件夾(服務端/etc/rsyncd.conf文件中的[py_code]模塊對應的文件夾路徑 )中的內容增量備份到當前服務器的/home/py_backup目錄:
*/1 * * * * root rsync -aqzrtopg --delete rsync://root@192.168.1.1/py_code /home/py_backup --password-file=/etc/rsync_client.pas
命令中的root為服務端密碼文件中配置的用戶名;py_code為服務端/etc/rsyncd.conf文件中的[py_code]模塊名,rsync會通過模塊名找到對應的備份文件路徑;
/home/py_backup是當前服務器文件夾路徑,遠程服務器需要備份的文件夾里的內容會增量備份到這里,所以需要提前建好該目錄;
/etc/rsync_client.pas為當前服務器的密碼文件。
當直接執行上方備份命令時,可以加入-v --progress參數, 即顯示具體備份過程信息,定時任務中則不需要。
此外,使用crontab -e命令也可以直接配置定時任務,但與vi /etc/crontab不同,不同點如下:
1./etc/crontab中的為系統任務,只有root可以設定,而crontab -e設置的定時任務為用戶任務,設定完成后會將任務自動寫入/var/spool/cron/usename文件。
2./etc/crontab中的任務需要指定用戶名,crontab -e不需要。
crontab -e 編輯完后需要重啟服務,systemctl restart crond.service
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
每天零點執行備份命令
00 00 * * * shell命令
每天零點和12點執行備份命令
00 00,12 * * * shell命令
下面要做的是在linux中,將linux文件定時全量備份,且每次備份的文件名不同,還要刪除超過指定時間的歷史備份文件。
將 /home/py 全量備份到/home/back下
cd /home/back #進入到備份目錄下
nano backup.sh #創建一個備份腳本,這個腳本也可以放到其他目錄中(自定義)
# backup.sh中寫內容如下:
#!/bin/sh
cp -r /home/py /home/back #將數據copy到備份目錄,先copy是因為怕在壓縮的過程當中源文件產生變化
tar -czvf /home/back/$(date +%Y%m%d).tar.gz /home/back/py # 將copy過來的/home/back/py文件目錄進行壓縮,使用日期當做新壓縮文件名字存入到/home/back中;
rm -rf /home/back/py # 刪除copy過來的文件,保留壓縮過的文件就好
find ./ -mtime +30 -name "*.tar.gz" -exec rm -rf {} \; # 查找并刪除超過30天的.tar.gz文件,來避免全量備份的歷史文件過多導致占用大量的磁盤空間。
chmod -R 777 backup.sh # 修改腳本文件的權限,否則會自動執行失敗,提示無權限
crontab -e # 修改crontab
# 在crontab中寫內容如下:
59 23 * * * /home/back/backup.sh # 每天23點59分運行backup.sh腳本。可以根據需求修改時間,或定義多個執行計劃。
# 保存退出該文件后重啟crontab服務
systemctl restart crond.service # 重啟crontab服務
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。