bash 備份mysql wordpress
web server 好多個,一個一個寫,不好。
- 定義domain name = web folder=database
- mysql passwd set in mysqld.cnf 本機免密碼。
可以嗎
50%
#!/bin/bash
sudo systemctl stop nginx.service #關閉nginx.service...
echo "關閉nginx.service..." #回應關閉
Now=$(date +%Y%m%d%H%M) #現在時間
f01=/data/server #web folder
declare -A dictdirs #聲明字典類型
dictdirs=([bk01]="/backup" [bk02]="/data/back") #dictdirs 的字典內容
echo 聲明字典類型:${dictdirs[*]} #回應dictdirs 字典類型
for i in ${dictdirs[*]} #查看{dictdirs[*]}資料夾是否存在
do
if [ -d $i ]; #尋找資料夾
then
# 目錄 $i 存在
echo $i"資料夾存在" #如果存在回應存在
else
echo "需要製作資料夾$i" #不存在回應需要建立資料夾
sudo mkdir -p $i #建立資料夾
sudo chown -R $(whoami) $i #賦予資料夾權限
echo "建立$i權限$(whoami)" #回應建立資料夾權限
fi
done
cd ${dictdirs[bk01]} #進入[bk01]定義資料夾內
echo "進入${dictdirs[bk01]}資料夾" #回應進入[bk01]
ls $f01 | while read -r f; #ls 送檔名 while read 接收讀取。
do
echo "找到$f01/$f資料夾" #回應找到$f01下的資料夾為$f
sudo cp -r -p $f01/$f ${dictdirs[bk01]}/ #將$f資料夾複製至${dictdirs[bk01]}
echo "$f資料複製完成" #回$f應資料夾複製完成
sudo chown -R $(whoami) ${dictdirs[bk01]}/$f #賦予複製來過來的$f權限
echo "$f資料夾權限已建立" #回應$f 資料夾權限已建立
mysqldump -u leo --default-character-set=utf8 $f > ${dictdirs[bk01]}/$f/${f}_$Now.sql
echo "$f資料庫備份完成" #回應資料庫已備份至$f
sudo tar -zcf ${f}${Now}.tar.gz $f/ #壓縮$f資料夾
echo "$f1資料夾壓縮完成" #回應$f 資料夾壓縮完成完成
sudo rm -r $f #刪除複製過來的 資料夾檔案
echo "複製資料已刪除..." #回應複製資料夾檔案已刪除
sudo mv *.tar.gz ${dictdirs[bk02]}/ #移動壓縮檔至${dictdirs[bk02]}/
echo "$f$Now.tar.gz檔移動至${dictdirs[bk02]}/" #回應已移動到${dictdirs[bk02]}/
done
echo "備份檔已完成至${dictdirs[bk02]}/" #回應備份已完成
sudo find ${dictdirs[bk02]}/ -type f -name "*.tar.gz" -mtime +3 -exec rm -rf {} \;
echo "重啟Nginx..." #上備份檔保留3天內的檔案其餘刪除
sudo systemctl start nginx.service #從新啟動nginx server
echo "Nginx 啟動完成..." #回應已完成啟動