介绍
基本信息
作者:朱明宇
名称:将远程服务器的 LNMP 备份还原到本地
作用:将远程服务器的 LNMP 备份还原到本地
使用方法
1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本
脚本分割线里的变量
1. tmppath=/cache #本地用于备份数据的目录
2. webpath=/usr/share/nginx/html #本地用于存放网站文件的目录
3. key=”~/.ssh/eternalcenter” #本地私钥
4. tmpfile=tmpfile.txt #用于存储记录的文件
5. dbuser=ec #网站在数据库中的用户
6. ruser=eternalcenter #用于远程服务器的用户
7. rhost=eternalcenter.com #远程服务器
8. rcache=”/cache” #远程服务器用于备份数据的目录
注意
1. 本地需要已经搭建好 LNMP 平台
2. 用于远程服务器的用户,需要能免密钥 ssh 远程服务器,且对于本地用于备份数据的目录和远程服务器用于备份数据的目录拥有读和执行的权限
3. 执行此脚本的用户需要有 sudo systemctl 权限
4. 脚本 ”mysql -uroot -p’eternalcenter’ ec < $sqlfile“ 中 “eternalcenter“ 是指本地 MariaDB 数据库 root 用户的密码,需要修改成本地 MariaDB 数据库的 root 用户密码
脚本
#!/bin/bash
####################### Separator ########################
tmppath=/cache
webpath=/usr/share/nginx/html
key="~/.ssh/eternalcenter"
tmpfile=tmpfile.txt
dbuser=ec
ruser=eternalcenter
rhost=eternalcenter.com
rcache="/cache"
####################### Separator ########################
nowdirectory=`pwd`
a=`ssh -i $key $ruser@$rhost "du -s $rcache" | awk '{print $1}'`
sleep 10
b=`ssh -i $key $ruser@$rhost "du -s $rcache" | awk '{print $1}'`
if [ $a -eq 0 ];then
echo "no file"
fi
if [ $a -ne $b ];then
echo "backup is running now"
exit
fi
c=0
if [ -f $tmpfile ];then
c=`cat $tmpfile`
fi
if [ $a -eq $c ];then
echo "no new file"
exit
fi
echo $a > $tmpfile
sqlfile=`ssh -i $key $ruser@$rhost "ls -rtlh $rcache | grep sql | tail -1" | awk '{print $NF}'`
if [ $? -eq 0 ]; then
tarfile=`ssh -i $key $ruser@$rhost "ls -rtlh $rcache | grep tar | tail -1" | awk '{print $NF}'`
if [ $? -eq 0 ]; then
rm -rf $tmppath/*
mkdir $tmppatch &> /dev/null
echo $sqlfile
echo $tarfile
scp -i $key $ruser@$rhost:$rcache/$sqlfile $tmppath
scp -i $key $ruser@$rhost:$rcache/$tarfile $tmppath
# sudo systemctl stop nginx
# sudo systemctl stop php-fpm
cd $tmppath
mysql -uroot -p'eternalcenter' -e "drop database $dbuser;"
mysql -uroot -p'eternalcenter' -e "create database $dbuser;"
mysql -uroot -p'eternalcenter' -e "grant all privileges on $dbuser.* to \"$dbuser\"@\"localhost\";"
mysql -uroot -p'eternalcenter' ec < $sqlfile
sudo rm -rf $webpath/*
sudo tar -zxvf $tarfile -C $webpath/ &> /dev/null
# sudo systemctl start nginx
# sudo systemctl start php-fpm
cd $nowdirectory
fi
fi