搬瓦工建站教程:利用腾讯云COS自动定期备份网站文件及数据库教程

2021-03-20更新建站教程1
搬瓦工性价比套餐推荐和新手教程整理

数据是站长的命根子,定期备份网站数据是非常有必要的!一般情况下我们可以手动打包网站数据然后拖回本地进行备份。不过,既然腾讯云 COS 默认提供大陆的 50GB 免费存储空间,同时目前上传不计费,所以我们完全可以通过脚本自动定期备份网站数据到腾讯云。当意外出现时,我们便可以迅速从备份里面恢复网站数据。

一、获取基本信息

这一步我们主要进行创建存储桶并获取其基本信息以及创建腾讯云账户 API 管理密钥这三部分。

1、创建存储桶

登录腾讯云,进入对象存储管理界面。在存储桶列表一栏,我们点击创建存储桶,如下图所示。

点击创建存储桶后,会来到下图所示窗口。按照图中提示,我们首先填写存储桶的名称、选择存储桶的地区以及选择存储桶的访问权限,然后确认无误后点击确定即可。

2、获取存储桶基本信息

创建完成后,我们前往此存储桶的基本配置界面,如下图所示。按照图中提示,我们保存下此存储桶的空间名称字段及所属地域字段,后面需要使用到。

3、获取腾讯云账户 API 管理密钥

前往腾讯云云产品中管理工具分类下的云 API 密钥界面(找不到的点我即可)。首次进入时会弹出下图所示窗口,这里站长就直接点击继续使用了,有需要的可以详细研究下这里。

点击继续使用后,会来到下图所示界面。默认情况下是不存在密钥的。按照图中提示,我们点击新建密钥。

点击新建密钥后,会自动生成一个密钥,如下图所示,按照图中提示,我们需要保存下此密钥的 Secretid 字段和 SecretKey 字段,后面同样需要使用到。

进行到这里,我们就获取到了后面备份时需要用到的所有信息,分别是存储桶的空间名称、所属地域和云 API 密钥的 Secretid 和 SecretKey 这四个。

二、安装腾讯云 COS 的 Python SDK

以下所有步骤都是在搬瓦工 CentOS7 x86_64 系统下进行的!使用其他系统版本的请自行更改相关命令!

使用 Xshell 连接服务器后,运行下列命令安装 pip 工具。如果提示 No package python-pip available 请按照《CentOS7 系统安装 pip 提示 No package python-pip available 的解决办法》自行解决。

  1. yum install -y python-pip

然后再运行下列命令更新 pip 工具。

  1. pip install --upgrade pip

最后运行下列命令安装 Python SDK(第五版)。

  1. pip install -U cos-python-sdk-v5

进行到这里,我们就成功安装好了腾讯云 COS 的 Python SDK 即 Python 版本的开发包。

三、下载备份及上传脚本

以下所有步骤都是在搬瓦工 CentOS7 x86_64 系统下进行的!使用其他系统版本的请自行更改相关命令!

我们首先运行下列命令安装 wget 及 zip 软件。

  1. yum install -y wget zip

然后运行下列命令从 Github 开源社区下载备份脚本。

  1. #中文版本
  2. wget --no-check-certificate -O backup_CN.sh https://raw.githubusercontent.com/uxh/qcloud-cos-autobackup/master/backup_CN.sh
  3. #英文版本(如果中文版本乱码,请使用这个)
  4. wget --no-check-certificate -O backup.sh https://raw.githubusercontent.com/uxh/qcloud-cos-autobackup/master/backup.sh

备份脚本里面有六行信息需要更改,我们继续运行下列命令编辑备份脚本。

  1. #中文版本
  2. vi backup_CN.sh
  3. #英文版本
  4. vi backup.sh

运行命令后会使用 vi 编辑器打开备份脚本,我们按下 i 键进入编辑模式,然后依次修改这四项信息:

PS:复制删帖操作请使用鼠标右键,请勿使用 Ctrl+C 及 Ctrl+U 等快捷键!

(1)将第 16 行的 apisecretid 后面引号内的内容修改为前面保存下来的云 API 密钥的 Secretid;

(2)将第 17 行的 apisecretkey 后面引号内的内容修改为前面保存下来的云 API 密钥的 SecretKey;

(3)将第 20 行的 cosregion 后面引号内的内容修改为前面保存下来的存储桶的所属地域;

(4)将第 21 行的 cosbucket 后面引号内的内容修改为前面保存下来的存储桶的所属地域。

然后我们还需要修改关于压缩包的两项信息:

(1)第 24 行的 zippassword 后面的表示压缩包的解压密码,按照个人情况修改;

(2)第 25 行的 zipautodelete 后面的表示是否自动删除本地备份,默认删除,不需要请改为 flase。

信息修改完成后,我们首先按下 Esc 键退出编辑模式,然后输入 :wq 这三个字符后回车即可保存并退出。

下面继续运行下列命令从 Github 开源社区下载上传脚本。

  1. wget --no-check-certificate -O cos.upload.py https://github.com/uxh/qcloud-cos-autobackup/raw/master/cos.upload.py

注意,备份脚本及上传脚本务必放到同一目录下,否则运行会出错!

进行到这里,我们就成功准备好了备份脚本及上传脚本。

四、脚本使用示例

这里假设几项网站信息,帮助大家理解下脚本使用方法,正式使用时请务必修改为自己的:

(1)备份文件存放目录:/home/wwwbackups

(2)网站域名:123.com

(3)网站安装目录:/home/wwwroot/123.com

(4)网站数据库名:123.com_database

(5)网站数据库登录名:root

(5)网站数据库登录密码:password123

那么,我们首先需要运行下列命令创建备份文件存放目录。

  1. mkdir /home/wwwbackups

然后运行下列命令即可备份网站文件并上传至腾讯云。

  1. #中文版
  2. bash backup_CN.sh --file 123.com /home/wwwroot/123.com /home/wwwbackups
  3. #英文版
  4. bash backup.sh --file 123.com /home/wwwroot/123.com /home/wwwbackups

继续运行下列命令即可备份网站数据库并上传至腾讯云。

  1. #中文版
  2. bash backup_CN.sh --db 123.com 123.com_database root password123 /home/wwwbackups
  3. #英文版
  4. bash backup.sh --db 123.com 123.com_database root password123 /home/wwwbackups

五、定时备份任务设置

平时使用中,我们不可能每次都去连接服务器手动执行命令进行备份,这样太浪费时间和精力了。我们可以通过设置 Linux 系统中的定时任务来实现定时执行备份命令,这样即可实现全自动的网站备份。

我们首先运行下列命令来编辑服务器的定时任务。

  1. crontab -e

同样的,我们按下 i 键进入编辑模式。如果我们想要在每天凌晨 4 点左右备份网站,那么可以添加如下任务。

  1. #中文版
  2. 0 4 * * * bash backup_CN.sh --file 123.com /home/wwwroot/123.com /home/wwwbackups >/dev/null 2>&1
  3. 5 4 * * * bash backup_CN.sh --db 123.com 123.com_database root password123 /home/wwwbackups >/dev/null 2>&1
  4. #英文版
  5. 0 4 * * * bash backup.sh --file 123.com /home/wwwroot/123.com /home/wwwbackups >/dev/null 2>&1
  6. 5 4 * * * bash backup.sh --db 123.com 123.com_database root password123 /home/wwwbackups >/dev/null 2>&1

添加完成后,我们首先按下 Esc 键退出编辑模式,然后输入 :wq 这三个字符后回车即可保存并退出。

以上就是本篇教程的全部内容了,脚本已开源在 Github 社区,大家可以放心使用,不放心的也可以自行前往查看!项目地址:https://github.com/uxh/qcloud-cos-autobackup

weinxin
我的微信
我的微信
微信扫一扫
BandwagonHOST
  • 本文由 发表于 2018年9月2日 18:16:43
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接。如有侵权,请联系站长进行处理。