首页 运维 正文
自动备份网站并同步到 Dropbox

 2022-10-23    350  

之前写过一篇博客,记录了 定时自动备份网站和数据库 的脚本,不过只是将 VPS 上的数据打包保存在了本机的一个目录下,要知道真正的容灾备份需要至少在 3 个不同的物理节点上都有一份拷贝的。Email 发送备份文件在数据超多的情况下不太实际,而出于成本考虑我不想为了一个 VPS 又购买另一个来用作 FTP。不禁想到 DropBox,它无疑是很好的选择——基于 Amazon S3 的云存储保证了可靠性,免费的容量已经足够用,也不必担心数据被审查。

一、设置 Dropbox

Dropbox 提供了丰富的 API,使得我们不必使用官方庞大的客户端,而用一些简单轻量的脚本即可直接上传文件。

Dropbox-Uploader 就是这样一个第三方的脚本,并且它已经开源在了 Github。我们将此脚本下载到 VPS 中,即可使用。

$wgethttps://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
$chmod+xdropbox_uploader.sh
$./dropbox_uploader.sh

运行脚本,根据提示设置自己的 Dropbox 应用 API,然后按照步骤设置,就可以使用其命令上传和下载文件了。

二、同步备份脚本

脚本根据自己的 VPS 配置进行一些修改。

#!/bin/bash
#一些配置
DROPBOX_DIR=/$(date+%Y-%m-%d)#Dropbox目录,根目录/是你已经创建的app目录
MYSQL_USER="root"
MYSQL_PASS="password"
MYSQL_DB=('wordpress''project2')
BACK_DATA=/root/backup-data#备份文件保存在本地的目录
DATA=/var/www#需要备份的网站文件
#定义备份文件名
DataBakName=Database_$(date+"%Y-%m-%d").tar.gz
WebBakName=Web_$(date+%Y-%m-%d).tar.gz
OldData=Database_$(date-d-6day+"%Y-%m-%d").tar.gz
OldWeb=Web_$(date-d-6day+"%Y-%m-%d").tar.gz
#Dropbox里30天以上的旧数据可以清除
Old_DROPBOX_DIR=/$(date-d-30day+%Y-%m-%d)
#清理本地保存了6天的备份
echo-ne"Deletelocaldataof6daysold..."
rm-rf$BACK_DATA/$OldData$BACK_DATA/$OldWeb
echo-e"Done"
cd$BACK_DATA
#导出MySQL数据库,并压缩
echo-ne"Dumpmysql..."
fordbin${MYSQL_DB[@]};do
(/usr/bin/mysqldump-u$MYSQL_USER-p$MYSQL_PASS${db}.sql)
done
tarzcf$BACK_DATA/$DataBakName*.sql
rm-rf$BACK_DATA/*.sql
echo-e"Done"
#备份网站文件
echo-ne"Backupwebfiles..."
cd$DATA
tarzcf$BACK_DATA/$WebBakName*
echo-e"Done"
cd$BACK_DATA
#开始上传到Dropbox
echo-e"Startuploading..."
./dropbox_uploader.shupload$BACK_DATA/$DataBakName$DROPBOX_DIR/$DataBakName
./dropbox_uploader.shupload$BACK_DATA/$WebBakName$DROPBOX_DIR/$WebBakName
#清理Dropbox里30天前的旧数据
./dropbox_uploader.shdelete$Old_DROPBOX_DIR/
echo-e"Thankyou!Alldone."

然后使用 crontab,让此脚本每几天定时自动运行,网站的所有数据就会安全地备份到 Dropbox 了。其他注意事项,可以参考我之前的一篇 定时自动备份网站和数据库。

原文链接:https://77isp.com/post/8728.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。