請(qǐng)先查看我的其他教程:Yapi數(shù)據(jù)備份及遷移 http://www.reibang.com/p/de26ad0110b0
yapi的數(shù)據(jù)庫(kù)是MongoDB,所以yapi的數(shù)據(jù)備份和恢復(fù)實(shí)際上就是MongoDB的數(shù)據(jù)備份與恢復(fù),使用復(fù)制數(shù)據(jù)庫(kù)文件夾限次,然后進(jìn)行覆蓋,是不可以將數(shù)據(jù)成功遷移的浮驳!
背景:
1.yapi搭建在容器里,yapi的配置文件夾及MongoDB文件夾掛載到宿主機(jī)
2.使用scp傳輸備份
自動(dòng)備份腳本:備份yapi的配置文件捞魁、數(shù)據(jù)文件
#!/bin/bash
#yapi 本地服務(wù)器-備份存放地址
LocalBackDir=/home/dgd/yapi/backups
#服務(wù)機(jī)yapi配置文件地址
ConfigDir=/home/dgd/yapi/config/my-yapi/config.json
#備份服務(wù)器-備份存儲(chǔ)路徑
RemoteBackDir=/yapi-backup-216
#遠(yuǎn)程備份使用用戶及端口
RemoteUser=root
RemotePort=22
#備份服務(wù)器IP
RemoteIP=10.1.8.50
#以當(dāng)前時(shí)間戳創(chuàng)建備份目錄
bakname=$(date -d "today" +"%Y%m%d_%H%M%S")
BakDir=$LocalBackDir/$bakname
mkdir $BakDir
#備份日志文件
LogFile=$LocalBackDir/remote_backup.log
#新建備份日志文件
touch $LogFile
#記錄配置文件備份日志
echo "Yapi configure file auto backup at local server, start at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
echo "--------------------------------------------------------------------------" >> $LogFile
#拷貝配置文件
cp -r $ConfigDir $BakDir >> $LogFile 2>&1
#記錄本地生成Yapi備份日志
echo "Yapi auto backup at local server, start at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
echo "--------------------------------------------------------------------------" >> $LogFile
#執(zhí)行Yapi本地備份,備份數(shù)據(jù)
docker exec testyapi mongodump -d yapi -o /my-yapi/ #yapi搭建在容器testyapi里
cd /home/dgd/yapi/config/yapi
tar -cvf /home/dgd/yapi/backups/yapi-mgdb-$(date +%Y%m%d).tar *
cd /home/dgd/yapi/backups
# $?符號(hào)顯示上一條命令的返回值至会,如果為0則代表執(zhí)行成功,其他表示失敗
if [ $? -eq 0 ];then
#追加日志到日志文件
echo "--------------------------------Success!-------------------------------" >> $LogFile
echo "Yapi auto backup at local server, end at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
else
#追加日志到日志文件
echo "--------------------------------Failed!----------------------------------" >> $LogFile
echo "Yapi auto backup at local server failed at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
fi
#查找本地備份目錄修改時(shí)間為10分鐘以內(nèi)且后綴為.tar的Yapi備份文件
Backfile_Send_To_Remote=`find $LocalBackDir -type f -mmin -10 -name '*.tar'` >> $LogFile 2>&1
#移動(dòng)生成的備份文件到配置文件備份地址
mv -bfu $Backfile_Send_To_Remote $BakDir
#記錄備份日志
echo "$(date +"%Y-%m-%d %H:%M:%S") Yapi auto backup to remote server." >> $LogFile
echo "--------------------------------------------" >> $LogFile
#打印每次備份的檔案名
echo "The files need send to remote server is: $Backfile_Send_To_Remote" >> $LogFile
# 本地傳輸Yapi備份檔案到遠(yuǎn)程
scp -r $RemotePort $BakDir $RemoteUser@$RemoteIP:$RemoteBackDir
# 備份結(jié)果追加到備份日志
if [ $? -eq 0 ];then
echo ""
echo "$(date +"%Y-%m-%d %H:%M:%S") Yapi Remote Backup Succeed!" >> $LogFile
else
echo "$(date +"%Y-%m-%d %H:%M:%S") Yapi Remote Backup Failed!" >> $LogFile
fi
#打印每次備份的檔案名
echo "The files need send to remote server is: $Backfile_Send_To_Remote" >> $LogFile
# 本地傳輸Yapi備份檔案到遠(yuǎn)程
scp -r $RemotePort $BakDir $RemoteUser@$RemoteIP:$RemoteBackDir
# 備份結(jié)果追加到備份日志
if [ $? -eq 0 ];then
echo ""
echo "$(date +"%Y-%m-%d %H:%M:%S") Yapi Remote Backup Succeed!" >> $LogFile
else
echo "$(date +"%Y-%m-%d %H:%M:%S") Yapi Remote Backup Failed!" >> $LogFile
fi