溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

linux自動(dòng)全量備份代碼

發(fā)布時(shí)間:2020-08-14 08:54:04 來(lái)源:網(wǎng)絡(luò) 閱讀:211 作者:代碼老兵 欄目:編程語(yǔ)言

需求說(shuō)明

系統(tǒng)環(huán)境:linux(centos7)
備份內(nèi)容:增量備份 結(jié)合 全量備份

公司中的生產(chǎn)服務(wù)器數(shù)據(jù)非常重要,所以我們需要通過(guò)備份服務(wù)器將生產(chǎn)服務(wù)器的數(shù)據(jù)進(jìn)行備份。

rsync的增量備份,不單單會(huì)同步新增的內(nèi)容,就連刪除的內(nèi)容也會(huì)同步。假如管理代碼人員誤操作將代碼誤刪除,那么備份服務(wù)器檢測(cè)到備份原的數(shù)據(jù)產(chǎn)生變化后,也會(huì)與其同步,此時(shí)生產(chǎn)服務(wù)器與備份服務(wù)器的代碼都會(huì)丟失。

增量備份要求的頻率較高,但在生產(chǎn)與備份服務(wù)器之間的網(wǎng)絡(luò)資源消耗較少,所以我們可以使用rsync來(lái)做增量備份,然后結(jié)合在備份服務(wù)器本地內(nèi)做全量備份。
這樣不但減少了生產(chǎn)與備份服務(wù)器使用了全量備份的網(wǎng)絡(luò)資源開(kāi)銷(xiāo),還避免了數(shù)據(jù)大量丟失的情況。

增量備份

使用linux的rsync功能來(lái)增量備份開(kāi)發(fā)代碼

服務(wù)器端

  • 安裝rsync

yum -y install rsync
  • 添加配置文件

如果沒(méi)有/etc/rsyncd.conf 文件,需要手動(dòng)創(chuàng)建,如果有直接修改即可。

服務(wù)端配置文件/etc/rsyncd.conf 內(nèi)容如下:

# 在文件最下方添加內(nèi)容

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 #秒

參數(shù)說(shuō)明:
[py_code] :模塊名,自己定義,可以在下方添加其它模塊。須與客戶(hù)端執(zhí)行命令中的模塊名一致。
path:要備份的服務(wù)端文件夾路徑。
hosts allow:允許的客戶(hù)端連接IP。
secrets file:服務(wù)端密碼文件,內(nèi)容格式為,用戶(hù)名:密碼。
auth users:有權(quán)限的用戶(hù)名,與密碼文件中用戶(hù)名一致。

  • 創(chuàng)建密碼文件

在/etc中創(chuàng)建文件rsync_server.pas,加入用戶(hù)名與密碼,內(nèi)容格式為:用戶(hù)名:密碼。

nano /etc/rsync_server.pas

例如,本例中rsync_server.pas文件內(nèi)容為root:123456

保存文件后,設(shè)置密碼文件權(quán)限為600

chmod 600 /etc/rsync_server.pas

注意密碼文件只有設(shè)置為600權(quán)限才可以使用,客戶(hù)端的密碼文件也必須為600。

  • 啟動(dòng)與停止rsync服務(wù)
# 啟動(dòng)rsync
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
# 停止rsync
ps -ef | grep rsync
kill -9 進(jìn)程號(hào)
rm -rf /var/rsync/rsync.pid

我們測(cè)試的時(shí)候,一定要保證rsync服務(wù)是啟動(dòng)的

客戶(hù)端

1.查看是否安裝rsync,系統(tǒng)一般默認(rèn)已安裝,安裝方法:yum -y install rsync(同服務(wù)端)。
2.在/etc下創(chuàng)建密碼文件rsync_client.pas,注意內(nèi)容只有密碼,且與服務(wù)端密碼文件中的密碼相同。
3.更改密碼文件權(quán)限為600。

添加定時(shí)任務(wù)

在客戶(hù)端中添加定時(shí)任務(wù),每天幾分鐘執(zhí)行命令從服務(wù)器端拉取數(shù)據(jù),進(jìn)行備份。
直接編輯/etc/crontab文件,添加一條定時(shí)任務(wù)即可,例如每1分鐘以root身份執(zhí)行下方的rsync命令,將遠(yuǎn)程服務(wù)器192.168.1.1中的py_code模塊對(duì)應(yīng)的文件夾(服務(wù)端/etc/rsyncd.conf文件中的[py_code]模塊對(duì)應(yīng)的文件夾路徑 )中的內(nèi)容增量備份到當(dāng)前服務(wù)器的/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為服務(wù)端密碼文件中配置的用戶(hù)名;py_code為服務(wù)端/etc/rsyncd.conf文件中的[py_code]模塊名,rsync會(huì)通過(guò)模塊名找到對(duì)應(yīng)的備份文件路徑;
/home/py_backup是當(dāng)前服務(wù)器文件夾路徑,遠(yuǎn)程服務(wù)器需要備份的文件夾里的內(nèi)容會(huì)增量備份到這里,所以需要提前建好該目錄;
/etc/rsync_client.pas為當(dāng)前服務(wù)器的密碼文件。
當(dāng)直接執(zhí)行上方備份命令時(shí),可以加入-v --progress參數(shù), 即顯示具體備份過(guò)程信息,定時(shí)任務(wù)中則不需要。

此外,使用crontab -e命令也可以直接配置定時(shí)任務(wù),但與vi /etc/crontab不同,不同點(diǎn)如下:
1./etc/crontab中的為系統(tǒng)任務(wù),只有root可以設(shè)定,而crontab -e設(shè)置的定時(shí)任務(wù)為用戶(hù)任務(wù),設(shè)定完成后會(huì)將任務(wù)自動(dòng)寫(xiě)入/var/spool/cron/usename文件。
2./etc/crontab中的任務(wù)需要指定用戶(hù)名,crontab -e不需要。

  1. crontab -e 編輯完后需要重啟服務(wù),systemctl restart crond.service

    • 時(shí)間定義說(shuō)明
# 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

每天零點(diǎn)執(zhí)行備份命令
00 00 * * * shell命令

每天零點(diǎn)和12點(diǎn)執(zhí)行備份命令
00 00,12 * * * shell命令

全量備份

下面要做的是在linux中,將linux文件定時(shí)全量備份,且每次備份的文件名不同,還要?jiǎng)h除超過(guò)指定時(shí)間的歷史備份文件。

將 /home/py 全量備份到/home/back下

cd /home/back   #進(jìn)入到備份目錄下
nano backup.sh  #創(chuàng)建一個(gè)備份腳本,這個(gè)腳本也可以放到其他目錄中(自定義)

# backup.sh中寫(xiě)內(nèi)容如下:

#!/bin/sh
cp -r /home/py /home/back  #將數(shù)據(jù)copy到備份目錄,先copy是因?yàn)榕略趬嚎s的過(guò)程當(dāng)中源文件產(chǎn)生變化

tar -czvf /home/back/$(date +%Y%m%d).tar.gz /home/back/py  # 將copy過(guò)來(lái)的/home/back/py文件目錄進(jìn)行壓縮,使用日期當(dāng)做新壓縮文件名字存入到/home/back中;

rm -rf /home/back/py  # 刪除copy過(guò)來(lái)的文件,保留壓縮過(guò)的文件就好

find ./ -mtime +30 -name "*.tar.gz" -exec rm -rf {} \;  # 查找并刪除超過(guò)30天的.tar.gz文件,來(lái)避免全量備份的歷史文件過(guò)多導(dǎo)致占用大量的磁盤(pán)空間。

chmod -R 777 backup.sh  # 修改腳本文件的權(quán)限,否則會(huì)自動(dòng)執(zhí)行失敗,提示無(wú)權(quán)限

crontab -e  # 修改crontab

# 在crontab中寫(xiě)內(nèi)容如下:
59 23 * * * /home/back/backup.sh  # 每天23點(diǎn)59分運(yùn)行backup.sh腳本??梢愿鶕?jù)需求修改時(shí)間,或定義多個(gè)執(zhí)行計(jì)劃。
# 保存退出該文件后重啟crontab服務(wù)

systemctl restart crond.service  # 重啟crontab服務(wù)
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI