一键定时备份数据库和项目代码脚本

1、先下载脚本

wget https://api.u1l.xyz/backup.sh && sed -i 's/\r//' backup.sh

2、注册Mega云盘账号

请注意,自己在网页注册的账号是无法使用脚本登录和上传文件功能的,必须使用脚本注册的账号

sh backup.sh register

输入邮箱/密码/昵称,然后你会收到一个注册验证邮件

一键定时备份数据库和项目代码脚本-

Mega云盘地址:https://mega.nz/

3、验证账号

megareg --verify 复制上面的 复制你的注册链接

打开邮箱,复制里面的注册链接,然后拼接到上面显示的那个命令,替换里面的@LINK@admin

一键定时备份数据库和项目代码脚本-

运行命令过后,如果提示 Account registered successfully! 就是注册成功

4、登录账号

注意:必须使用脚本注册的账号才能登录成功!

sh backup.sh login
一键定时备份数据库和项目代码脚本-

5、配置脚本需要备份的数据

vim backup.sh

打开脚本,修改脚本里面的配置

user=数据库账户(最好是root,其他账号测试有的会没权限)
pass=数据库密码
host=数据库地址(如果是本地数据库默认就是127.0.0.1)
db_name=备份的数据库名称
project=备份的项目目录

修改好了按 ESC键 输入 !wq 退出

一键定时备份数据库和项目代码脚本-

6、运行备份脚本

运行 crontab -e ,将下面的命令复制进去,然后保存退出

00 01 * * * sh /脚本存放路径/backup.sh backup

注意事项

1、请妥善保存mega云盘账号,如果已经通过脚本注册了账号,以后在其他服务器上运行备份脚本的时候就不需要注册了,直接登录此账号即可。

2、如果要备份多个项目和数据库,那么就把脚本复制改个名称,然后再修改里面的配置,添加定时任务即可。

脚本代码:

#! /bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# ====================================================
#	System Request:CentOS 6+ 、Debian 7+、Ubuntu 14+
#	Dscription: BackUp一键脚本
#	Version: 1.0
#	Group: https://www.xss5.com
# ====================================================

Green="\033[32m"
Font="\033[0m"
Blue="\033[33m"

user="pay"            				    # 用户名账号
pass="pay"     				            # 密码
host="127.0.0.1"         			  	# 目标主机
db_name="pay"						    # 备份的数据库名称
project="/www/wwwroot/pay.proxyip.info"	      	    # 备份的项目目录
backup_path="/tmp/backup/"
date=$(date "+%Y%m%d%H%M%S")
project_back=${backup_path}${project##*/}_${date}.zip
mysql_back=${backup_path}${db_name}_${date}.sql
ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
rootness(){
    if [[ $EUID -ne 0 ]]; then
       echo "Error:This script must be run as root!" 1>&2
       exit 1
    fi
}

checkos(){
    if [[ -f /etc/redhat-release ]];then
        OS=CentOS
    elif cat /etc/issue | grep -q -E -i "debian";then
        OS=Debian
    elif cat /etc/issue | grep -q -E -i "ubuntu";then
        OS=Ubuntu
    elif cat /etc/issue | grep -q -E -i "centos|red hat|redhat";then
        OS=CentOS
    elif cat /proc/version | grep -q -E -i "debian";then
        OS=Debian
    elif cat /proc/version | grep -q -E -i "ubuntu";then
        OS=Ubuntu
    elif cat /proc/version | grep -q -E -i "centos|red hat|redhat";then
        OS=CentOS
    else
        echo "Not supported OS, Please reinstall OS and try again."
        exit 1
    fi
}

install_megatools(){
    echo -e "${Green}即将安装megatools...${Font}"
    if [ "${OS}" == 'CentOS' ];then
        yum -y install gcc make glib2-devel libcurl-devel openssl-devel gmp-devel tar automake autoconf libtool wget asciidoc
		wget https://megatools.megous.com/builds/megatools-1.10.3.tar.gz
		tar -xzvf megatools*.tar.gz
		cd megatools-1.10.3
		./configure
		make
		make install
    else
        apt-get -y update
        apt-get install -y megatools
    fi
    if [ -s /usr/bin/megaput ]; then
    echo -e "${Green}megatools安装完成!${Font}"
    else
    yum makecache
    yum -y install megatools
    fi
}

status_megat(){
    mysql_back
	project_back
}

mysql_back(){
	if [ ! -x "$backup_path" ]; then
	  mkdir "$backup_path"
	fi
	echo "-----------------------------------------------"
	echo -e "${Green}开始备份数据库${Font}"
	mysqldump --user=$user --password=$pass --host=$host $db_name > $mysql_back
	echo -e "${Green}数据库备份成功!${Font}"
	echo -e "${Green}开始上传到云盘${Font}"
	megaput --path /Root/$ip/mysql/ $mysql_back;
	echo -e "${Green}数据库上传成功${Font}"
}

project_back(){
	echo "-----------------------------------------------"
	echo -e "${Green}开始备份项目${Font}"
	zip -r -q $project_back $project/*
	echo -e "${Green}项目备份成功${Font}"
	echo -e "${Green}开始上传到云盘${Font}"
	megaput --path /Root/$ip/projects/ $project_back;
	echo -e "${Green}项目上传成功${Font}"
}

register(){
    if [ ! -s /usr/bin/megaput ] && [ ! -s /usr/local/bin/megaput ]; then
    echo -e "${Green}检测到megatools不存在,开始安装!${Font}"
		checkos
		rootness
        install_megatools
    fi
  echo "----------------------开始注册Mega云盘账号----------------------"
  read -p "输入邮箱:" email
  read -p "输入密码:" password
  read -p "输入名称:" name
  megareg --register --email $email --name $name --password $password
  echo "注册链接已经发送到您的邮箱,请打开邮件查看注册链接,然后复制上面的命令,将 @LINK@ 替换成你收到的注册链接"
}

login(){
  if [ ! -s /usr/bin/megaput ] && [ ! -s /usr/local/bin/megaput ]; then
    echo -e "${Green}检测到megatools不存在,开始安装!${Font}"
		checkos
		rootness
        install_megatools
  fi
  echo "----------------------登录Mega云盘账号----------------------"
  read -p "输入邮箱:" email
  read -p "输入密码:" password
  cat>~/.megarc<<EOF
[Login]
Username = $email
Password = $password

[UI]
Colors = true
EOF
  megamkdir /Root/$ip/
  megamkdir /Root/$ip/mysql/
  megamkdir /Root/$ip/projects
  megadf
  echo "登录成功!"
}

case $1 in
  'register')
    register
    ;;
  'login')
    login
    ;;
  'backup')
    status_megat
    ;;
  *)
    echo "请输入的命令 register|login|backup"
    ;;
esac
© 版权声明
THE END
喜欢就支持一下吧
点赞10
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称

    暂无评论内容