鉴于国内服务器的不确定性,近期经常有丢失数据的,因此特地出了这个宝塔面板站点与数据库一键备份与恢复脚本。分为2个文件,分别为备份脚本(backup.sh)与恢复脚本(restore.sh)。

该脚本相关功能与特色如下:

1、支持多种备份存储位置,有远程服务器(scp)、阿里云OSS、腾讯云COS、华为云OBS、百度云BOS

2、不仅可以备份全部网站文件和数据库,还可以备份所有网站的绑定域名、伪静态、反向代理、备注、SSL证书等各种网站设置。宝塔自带的备份功能只支持备份网站文件与数据库,不支持备份网站的设置信息。

3、数据库备份采用XtraBackup实现物理热备,即使是大量数据,也能很快完成备份与恢复,并且备份与恢复过程占用系统资源少。宝塔自带的数据库备份是逻辑备份,速度慢而且占用大量CPU。

4、备份脚本设置好之后,添加到crontab,可实现自动定时备份。

5、全新安装宝塔面板,下载备份文件,执行一键恢复脚本后,立即恢复网站业务访问,不需要手动创建网站等额外操作。


备份脚本(backup.sh使用方法:

1、先安装XtraBackup,用于数据库物理热备(以CentOS为例

bash <(curl -sL http://f.cccyun.cc/xtrabackup.sh)

2、用编辑器打开备份脚本(千万不能用Windows记事本编辑!),修改里面的数据库密码、备份存储位置类型等相关信息。然后上传到服务器。

#给备份脚本执行权限
chmod 755 /root/backup.sh
#添加到crontab,设置每天2:00备份
crontab -e
0 2 * * * /root/backup.sh >/root/backup.log 2>&1

3、备份存储类型相关配置

如果选择备份到云存储,建议云存储和云服务器不在同一个实名主体的账号下,或使用另外云服务商,否则假如账号被封,相当于没有备份。

(1)备份存储位置类型为远程linux服务器说明:

需要配置免密登录,分别在2台服务器执行以下命令

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
在当前需要备份数据的服务器执行以下命令
ssh-copy-id -i ~/.ssh/id_rsa.pub root@远程服务器IP
然后根据提示输入远程服务器的密码即可完成配置免密登录。


(2)备份存储位置类型为阿里云OSS说明:

执行以下命令完成ossutil安装与配置(参考资料地址

wget -O ossutil http://gosspublic.alicdn.com/ossutil/1.7.16/ossutil64
mv ossutil /usr/bin
chmod +x /usr/bin/ossutil
ossutil config -e <OSS Endpoint> -i <你的ak> -k <你的sk>


(3)备份存储位置类型为腾讯云COS说明:

执行以下命令完成coscli安装与配置(参考资料地址

wget -O coscli https://download.fastgit.org/tencentyun/coscli/releases/download/v0.10.2-beta/coscli-linux
mv coscli /usr/bin
chmod +x /usr/bin/coscli
coscli config
#后面根据提示输入Secret ID、Secret Key、Bucket Name、Bucket Region参数,其中Session Token、Bucket Alias可直接留空回车


(4)备份存储位置类型为华为云OBS说明:

执行以下命令完成obsutil安装与配置(参考资料地址

wget https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz
tar -xzvf obsutil_linux_amd64.tar.gz
cd obsutil_linux_amd64*
mv obsutil /usr/bin
chmod 755 /usr/bin/obsutil
cd ..
rm -rf obsutil_linux_amd64*
obsutil config -i=<ak> -k=<sk> -e=<endpoint>


(5)备份存储位置类型为百度云BOS说明:

执行以下命令完成boscmd安装与配置(参考资料地址

wget https://bce-doc-on.bj.bcebos.com/bce-documentation/BOS/linux-bcecmd-0.3.2.zip
unzip linux-bcecmd-0.3.2.zip
mv linux-bcecmd-0.3.2/bcecmd /usr/bin
chmod 755 /usr/bin/bcecmd
rm -f linux-bcecmd-0.3.2.zip
bcecmd


(6)备份存储位置类型为七牛云说明:

执行以下命令完成qshell安装与配置(参考资料地址

wget https://devtools.qiniu.com/qshell-v2.6.2-linux-amd64.tar.gz
tar zxvf qshell-v2.6.2-linux-amd64.tar.gz
mv qshell /usr/bin
chmod +x /usr/bin/qshell
rm -f qshell-v2.6.2-linux-amd64.tar.gz
qshell account <ak> <sk> <name>



恢复脚本(restore.sh)使用方法:

注意:恢复之前必须先安装好宝塔面板,并且确保没有创建任何网站和数据库!如果已创建过需要先删除才能执行恢复脚本!服务器数据库版本必须与备份的数据库版本一致。

用编辑器打开备份脚本(千万不能用Windows记事本编辑!),修改里面的数据库密码,然后上传到备份文件所在目录(目录里面需包含wwwroot.tgz、mysql.tgz、config.tgz

#给恢复脚本执行权限
chmod 755 ./restore.sh
#执行恢复
./restore.sh

bt_backup.zip


欢迎留言

6 条评论

  1. backup.sh 这个文件没有root目录下没有

    Windows 10 x64 Google Chrome 120.0.0.0
  2. Error: oss: service returned error: StatusCode=400, ErrorCode=InvalidBucketName, ErrorMessage="The specified bucket is not valid.", RequestId=626A2AD63218A1383107B1E4, File=/home/backup/20220428-134833/etc.tgz上传失败,桶不合法,桶名称我是复制过来的

    macOS 10.15.7 Safari 15.4
    1. @amen:那就是复制错了,或者有空格之类的

      Windows 10 x64 Google Chrome 86.0.4240.198
  3. 建议支持保留几份 自动删除以前的文件

    Apple iPhone WeChat 8.0.18
    1. @晨曦:阿里云OSS、腾讯云COS等都支持一个叫生命周期的设置,可以自动删除旧文件

      Windows 10 x64 Google Chrome 86.0.4240.198
      1. @消失的彩虹海:没用办法像宝塔默认备份一样么

        Apple iPad WeChat 7.0.1