个人VPS数据备份之异地备份.我有DropBox

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

现在个人博客越来、个人网站越来越多,身边大部分人都扮演着小小站长的角色,每个人手下都有着不同配置的VPS,作为一个Linux运维人员,拥有一个VPS的小小站长,细心经营捣鼓着自己的服务器/VPS,努力而细心的“经营”着自己的这份工作与爱好。本着事事无常的态度,不可再生的数据显的尤为重要,“备份”这个名词,总会让人的内心得到一丝安全感。

备份是门大学问,根据备份方式可分逻辑备份和物理备份。
根据备份时刻可分冷备份和热备份
根据存储介质可分本地备份和异地备份,而异地备份具有容灾性

对于个人VPS的数据备份,如果只将网页数据和数据库数据打包保存在本机的一个目录下,并不能完全达到数据备份的意义。而异地备份在于备份的数据会被存放在至少3个物理节点上,已达到异地容灾性备份,而鉴于成本考虑,不可能在买一个VPS进行异地容灾备份。但这并不代表对于VPS用户做到异地备份就没有其他备份方案了。

Dropbox,一个提供同步本地文件的网络存储在线应用,它提供了丰富的API,我们可以通过API将自己VPS备份的数据立刻同步到DropBox中,而DropBox提供的免费空间最够大部分站长的备份空间需求。我们利用DropBox这样的第三方脚本,来实现同步与删除。

配置自己的Dropbox,创建一个app

1.下载DropBox脚本,到自己的VPS上

1
2
3
# wget https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
# chmod +x dropbox_uploader.sh
# ./dropbox_uploader.sh

运行该脚本,根据以下提示进行DropBox的设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
This  is  the first time you run  this  script.
1 ) Open the following URL  in  your Browser, and log  in  using your account: https: //www2.dropbox.com/developers/apps
在浏览器中打开,https: //www2.dropbox.com/developers/apps
2 ) Click on  "Create App" , then select  "Dropbox API app"
点击 "Create App" 按钮,然后选择 "Dropbox API app"
3 ) Select  "Files and datastores"
选择 "Files and datastores" 选项
4 ) Now go on  with  the configuration, choosing the app permissions and access restrictions to your DropBox folder
现在去进行配置,选择这个app对你整个Dropbox文件夹的访问权限
5 ) Enter the  "App Name"  that you prefer (e.g. MyUploader113012919723169)
输入一个你喜欢的App名称
Now, click on the  "Create app"  button.
When your  new  App  is  successfully created, please type the
App Key, App Secret and the Permission type shown  in  the confirmation page:
# App key: xxxxxxxxxx
# App secret: xxxxxxxxx
# Permission type, App folder or Full Dropbox [a/f]: a
> App key  is  xxxxxxxxxx, App secret  is  xxxxxxxxxx and Access level  is  App Folder, it's ok? [y/n]y
> Token request... OK
Please open the following URL  in  your Browser, and allow Dropbox Uploader
to access your DropBox folder:
--> https: //www2.dropbox.com/1/oauth/authorize?oauth_token=iP0TqrmjjKcAUfwW
Press enter when done...
> Access Token request... OK
Setup completed!

1

2

3

到此为止,关于Dropbox的设置就结束了,接下来按照自己的情况编写备份同步脚本。

同步备份脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash
#
# when: 2013 / 10 / 15
# who:http: //blog.coocla.org
TODAY=`date -I`                                         # 获取当前日期
BACKUP_LOG=/data/backup/backup_${TODAY}.log             # 备份日志
Expire=`date -d -7day + "%Y-%m-%d" `                      # 获取 7 天前的日期
MYSQL_USER= "root"                                        # Mysql用户
MYSQL_PASS= "rootpass"                                    # Mysql密码
MYSQL_DB=( 'blog'  'yunxiaojia' )                          # 要备份的数据库名
BACK_DIR=/data/backup                                   # 备份存放的目录
Dropbox=/${TODAY}                                       # Dropbox上创建的app存放目录,这里的根(/)是指app的根目录
WEB_DATA=/data/www/wwwroot                              # 网页文件目录
#Create Today BackupDirectory
if  [ ! -d $BACK_DIR/$TODAY ];then
     mkdir $BACK_DIR/$TODAY
fi
#Backup Mysql DB
echo  "###############################################################"  > $BACKUP_LOG
echo  "Backup Mysql DB."  >> $BACKUP_LOG
echo  "Start Time : `date +%F"  "%H:%M:%S`"  >> $BACKUP_LOG
for  db  in  ${MYSQL_DB[@]}; do
     /usr/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS --skip-opt --add-drop-table --create-options -q -e -- set -charset --routines --single-transaction --master-data= 2  $db > ${TODAY}_${db}_full_back.sql --log-error=$BACKUP_LOG
done
tar zcf ${TODAY}_db_full_back.tar.gz *.sql
rm -f *.sql
mv ${TODAY}_db_full_back.tar.gz ${BACK_DIR}/${TODAY}/
echo  "Stop Time : `date +%F"  "%H:%M:%S`"  >> $BACKUP_LOG
#Backup Website Data
echo  "###############################################################"  >> $BACKUP_LOG
echo  "Backup Website Data."  >> $BACKUP_LOG
echo  "Start Time : `date +%F"  "%H:%M:%S`"  >> $BACKUP_LOG
cd $WEB_DATA
tar zcf ${TODAY}_web_full_back.tar.gz ./* && cd -
mv ${WEB_DATA}/${TODAY}_web_full_back.tar.gz ${BACK_DIR}/${TODAY}/
echo  "Stop Time : `date +%F"  "%H:%M:%S`"  >> $BACKUP_LOG
#Upload Dropbox
echo  "###############################################################"  >> $BACKUP_LOG
echo  "Upload backup."  >> $BACKUP_LOG
echo  "Start Time : `date +%F"  "%H:%M:%S`"  >> $BACKUP_LOG
/usr/local/sbin/dropbox_uploader.sh upload ${BACK_DIR}/${TODAY}/${TODAY}_db_full_back.tar.gz ${Dropbox}/${TODAY}_db_full_back.tar.gz >> $BACKUP_LOG
/usr/local/sbin/dropbox_uploader.sh upload ${BACK_DIR}/${TODAY}/${TODAY}_web_full_back.tar.gz ${Dropbox}/${TODAY}_web_full_back.tar.gz >> $BACKUP_LOG
echo  "Stop Time : `date +%F"  "%H:%M:%S`"  >> $BACKUP_LOG
#Delete old data
echo  "###############################################################"  >> $BACKUP_LOG
echo  "Delete expire data."  >> $BACKUP_LOG
echo  "Start Time : `date +%F"  "%H:%M:%S`"  >> $BACKUP_LOG
find ${BACK_DIR} -mtime + 3  | xargs rm -rf
/usr/local/sbin/dropbox_uploader.sh  delete  /$Expire/ >> $BACKUP_LOG
echo  "Stop Time : `date +%F"  "%H:%M:%S`"  >> $BACKUP_LOG

查看日志信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
###############################################################
Backup Mysql DB.
Start Time :  2013 - 10 - 15  22 : 12 : 11
Stop Time :  2013 - 10 - 15  22 : 12 : 21
###############################################################
Backup Website Data.
Start Time :  2013 - 10 - 15  22 : 12 : 21
Stop Time :  2013 - 10 - 15  22 : 12 : 27
###############################################################
Upload backup.
Start Time :  2013 - 10 - 15  22 : 12 : 27
  > Uploading  "/data/backup/2013-10-15/2013-10-15_db_full_back.tar.gz"  to  "/2013-10-15/2013-10-15_db_full_back.tar.gz" ... DONE
  > Uploading  "/data/backup/2013-10-15/2013-10-15_web_full_back.tar.gz"  to  "/2013-10-15/2013-10-15_web_full_back.tar.gz" ... DONE
Stop Time :  2013 - 10 - 15  22 : 12 : 42
###############################################################
Delete expire data.
Start Time :  2013 - 10 - 15  22 : 12 : 42
  > Deleting  "/2013-10-08" ... FAILED
Stop Time :  2013 - 10 - 15  22 : 12 : 42

然后将该脚本和dropbox_uploader.sh脚本放置于/usr/local/sbin或同一目录下,然后定义crontab计划任务:


根据日志中开始时间和结束时间,小伙伴们可以定义crontab开始的时间,由于我的内容比较少,在1分钟只能即可完成,我的crontab设置如下:

1
59  23  * * * /bin/sh /usr/local/sbin/backup.sh > /dev/ null  2 >& 1

小伙伴们也可以下载DropBox客户端安装在自己的PC上,然后进行同步,手动运行以上脚本或者等待计划任务执行后,待自动同步后,即可在windows下查看的到刚才同步上去的备份文件啦!

好了,小伙伴们快去创建自己的异地备份策略吧~


附件:同步备份脚本。。。。。 backup.sh









本文转自 向阳草米奇 51CTO博客,原文链接:http://blog.51cto.com/grass51/1309401,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
存储 Linux
服务器数据恢复—Linux操作系统网站服务器数据恢复案例
服务器数据恢复环境: 一台linux操作系统网站服务器,该服务器上部署了几十个网站,使用一块SATA硬盘。 服务器故障&原因: 服务器在工作过程中突然宕机。管理员尝试重新启动服务器失败,于是将服务器上的硬盘拆下检测,发现很多坏扇区。联系当地的一家数据恢复公司处理,但是没有成功。
|
7月前
|
存储 SQL 运维
服务器数据恢复—Isilon存储误删除vmware虚拟机的数据恢复案例
Isilon存储使用的是分布式文件系统OneFS。在Isilon存储集群里面每个节点均为单一的OneFS文件系统,所以Isilon存储在进行横向扩展的同时不会影响数据的正常使用。Isilon存储集群所有节点提供相同的功能,节点与节点之间没有主备之分。当用户向Isilon存储集群中存储文件时,OneFS文件系统层面将文件划分为128K的片段分别存放到不同的节点中,而节点层面将128K的片段分成8K的小片段分别存放到节点的不同硬盘中。用户文件的Indoe信息、目录项及数据MAP则会分别存储在所有节点中,这样可以确保用户不管从哪个节点都可以访问到所有数据。Isilon存储在初始化时会让用户选择相应的
88 12
|
8月前
|
SQL 存储 数据库
服务器数据恢复—X3850服务器中虚拟机误删除的数据恢复案例
服务器数据恢复环境: 某品牌X3850系列服务器(用于VMware虚拟主机)+某品牌RD220i系列存储(用于存放虚拟机文件)+VMware ESXi虚拟化操作系统。 虚拟机操作系统:Windows Server,虚拟机上运行SQL Server数据库(宏桥和索菲两套应用的数据库)。 虚拟磁盘:数据盘(精简模式)+ 快照数据盘。 服务器故障: 意外断电导致某台虚拟机无法正常启动。管理员检查后发现此虚拟机除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。管理员联系VMware工程师寻求帮助。VMware工程师尝试新
服务器数据恢复—X3850服务器中虚拟机误删除的数据恢复案例
|
9月前
|
存储 Unix 关系型数据库
【服务器数据恢复】FreeNAS数据恢复案例
一台服务器通过FreeNAS(本案例使用的是UFS2文件系统)实现iSCSI存储,整个UFS2文件系统作为一个文件挂载到ESXi虚拟化系统(安装在另外2台服务器上)上。该虚拟化系统一共有5台虚拟机,其中有3台虚拟机中的数据比较重要:一台虚拟机上部署了ASP.net+SqlServer和PHP+mysql;第二台虚拟机安装的FreeBSD,部署了MySQL数据库;第三台虚拟机存放的是代码数据。
【服务器数据恢复】FreeNAS数据恢复案例
|
9月前
|
存储 数据挖掘 Linux
服务器数据恢复-linux操作系统服务器数据丢失的数据恢复案例
linux操作系统服务器数据恢复环境: 某品牌R730服务器+MD3200系列存储,linux操作系统。 服务器故障: 机房意外断电导致服务器linux操作系统部分文件丢失。
|
运维 数据挖掘 Linux
服务器数据恢复-linux操作系统下VMwave ESX数据恢复案例
服务器数据恢复环境: 一台某品牌x3950 X6型号服务器,linux操作系统,12块硬盘组建了一组raid阵列,上层运行VMwave ESX虚拟化平台。 服务器故障: 在服务器运行过程中,该raid阵列中有硬盘掉线,linux操作系统瘫痪,运行的5组VMwave ESX系统无法运行。 北亚企安数据恢复工程师将故障服务器中磁盘编号后取出,交由硬件工程师检测物理故障,经过检测发现故障服务器中的所有硬盘不存在物理故障。初步判断是esx文件系统损坏导致的linux操作系统瘫痪。
|
存储 缓存 网络协议
基于云存储网关的Veeam备份归档上云方案
传统备份厂商的异地备份方案是将数据备份至异地机房来保护数据。公共云的出现改变了异地备份的方案和架构。用户在面对公共云和传统备份架构时,该如何选择呢?本文结合Veeam备份软件的使用,一方面来阐述Veeam是如何与云存储网关产品结合将数据备份上云,另一方面也试着给出一些看法和建议。
2082 0
|
数据库 数据挖掘 关系型数据库
|
容灾 Linux 数据安全/隐私保护