一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

vps中定时备份VPS数据至Dropbox教程

时间:2015-06-05 编辑:简简单单 来源:一聚教程网


客户端法备份数据

1、安装及配置dropbox linux客户端

在VPS上安装linux命令行版本的dropbox:

32-bit:
cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86" | tar xzf -
 
64-bit:
cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
下载完成之后,运行dropbox

~/.dropbox-dist/dropboxd

第一次运行该命令,会提示访问URL,通过访问该URL就可以绑定VPS与dropbox账号。此时查看命令行,会提示绑定成功。

绑定之后,root目录下会自动创建名为Dropbox的文件夹,Dropbox会自动同步该文件夹内的文件。

2、使用dropbox linux客户端同步vps数据

我们一般备份网站数据及数据库数据,正常情况下网站WEB目录不在root文件夹下,我们可以通过软连接指向网站WEB目录,而数据库数据可以通过命令行导出,并通过软连接指向该文件。

为了方便区分目录,可以在Dropbox文件夹下新建backups文件夹,用于备份数据。

1)定时备份网站数据

将网站WEB目录连接到/Dropbox/backups文件夹下,假定/var/www/wordpress为网站web目录

cd ~/Dropbox/backups
ln -s /var/www/wordpress

2)定时备份数据库文件

新建一个定时备份数据库文件的脚本

vi ~/backup/mysqlbackup.sh

脚本内容如下:

echo "start mysql back up "${date} >> /root/backup/backup.log
mysqldump -uroot -p123456 wordpress >/root/backup/mysqlback.sql

其中,root为数据库的用户名,123456为数据库密码,wordpress为数据库名。

添加可执行权限

chmod a+x ~/backup/mysqlbackup.sh

将mysqlback.sql连接到/Dropbox/backups文件夹下


#!/bin/sh
cd ~/Dropbox/backups
ln -s ~/backup/mysqlback.sql

定时执行备份脚本文件,输入

crontab -e

添加以下内容

* 3 * * *  /root/backup/mysqlbackup.sh

3)定时开闭dropbox linux客户端
dropbox一直开着会占用vps的内存资源,没有必要一直开着,可以利用脚本定时运行和关闭dropbox。

创建脚本 ~/backup/dropboxswitch.sh

vi ~/backup/dropboxswitch.sh

内容如下

#!/bin/sh
date=`date +%Y%m%d_%H:%M:%S`
 
start() {
        echo "starting dropbox "${date} >> /root/backup/backup.log
        /root/dropbox/.dropbox-dist/dropbox &
        }
 
stop() {
        echo "stoping dropbox "${date} >> /root/backup/backup.log
        pkill dropbox
        }
 
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  esac

添加可执行权限

chmod a+x ~/backup/dropboxswitch.sh

然后定时每天凌晨4点启动dropbox,6点关闭:

crontab -e

添加以下内容

* 4 * * * /root/backup/dropboxswitch.sh start
* 6 * * * /root/backup/dropboxswitc.sh stop

脚本法备份数据

1、创建Dropbox应用

首先,需要创建一个Dropbox应用,可以从该网址进行创建:https://www.dropbox.com/developers/apps/create。

在这里,应用类型选择Dropbox API App,数据存储类型选择Files and datastores,权限选择Yes(应用只需要访问它创建的文件)。然后命名创建。

2、下载并执行dropbox_uploader.sh

dropbox_uploader 是一个第三方Dropbox备份脚本,首先下载脚本:

wget --no-check-certificate https://raw.githubusercontent.com/tennfy/Dropbox-Uploader/master/dropbox_uploader.sh
chmod a+x dropbox_uploader.sh

执行该脚本,绑定APP:

./dropbox_uploader.sh

根据提示输入Dropbox应用中的App key和App secret,许可类型选择a,确认y,复制给出的权限验证链接到浏览器,确认后回到终端按任意键完成。

dropbox_uploader1

之后可以执行下面的命令测试上传,提示Done就是绑定成功了:

./dropbox_uploader.sh upload /etc/passwd /backup/passwd.old

3、编写定时脚本

vi /root/backup.sh

内容如下:

#!/bin/bash
MYSQL_USER=root                            #mysql用户名
MYSQL_PASS=xxxxx                           #mysql密码
MYSQL_DATABASENAME=xxxxx                   #要备份的数据库名
WEB_DATA=/var/www/xxx                      #要备份的网站数据
#你要修改的地方从这里结束
# 定义备份存放目录
DROPBOX_DIR=/$(date +%Y-%m-%d) # Dropbox上的备份目录
LOCAL_BAK_DIR=/root/backup # 本地备份文件存放目录
#定义备份文件名字
DBBakName=Data_$(date +"%Y%m%d").tar.gz
WebBakName=Web_$(date +"%Y%m%d").tar.gz
# 定义旧数据名称
Old_DROPBOX_DIR=/$(date -d -3day +%Y-%m-%d)
OldDBBakName=Data_$(date -d -3day +"%Y%m%d").tar.gz
OldWebBakName=Web_$(date -d -3day +"%Y%m%d").tar.gz
#删除本地3天前的数据
rm -rf $LOCAL_BAK_DIR/$OldDBBakName $LOCAL_BAK_DIR/$OldWebBakName
./dropbox_uploader.sh delete $Old_DROPBOX_DIR/
#导出mysql数据库
mysqldump -u$MYSQL_USER -p$MYSQL_PASS $MYSQL_DATABASENAME > $LOCAL_BAK_DIR/wordpress.sql
#压缩数据库
tar zcvf $LOCAL_BAK_DIR/$DBBakName $LOCAL_BAK_DIR/wordpress.sql
rm -rf $LOCAL_BAK_DIR/wordpress.sql
#压缩网站数据
tar zcvf $LOCAL_BAK_DIR/$WebBakName $WEB_DATA
#开始上传
cd ~
./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$DBBakName $DROPBOX_DIR/$DBBakName
./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$WebBakName $DROPBOX_DIR/$WebBakName
echo -e "Backup Done!"
其中,用户可以根据自己的需求改编需要备份的目录,以及保留旧数据的时长(我这里设置的是3天)

如果mysql是编译安装,需要指定mysql的路径。

增加执行权限:

chmod +x /root/backup.sh

测试该备份脚本:

./backup.sh

4.设置定时任务

执行:

crontab –e

添加以下内容:

30 3 * * * /root/backup.sh

这样,就可以每天凌晨3:30自动备份到Dropbox了。

5.最后重启Crontab

service cron restart

重启之后就设置完成了

如果你不知道服务器当前时间,可以使用下面的命令,查看当前时间:

date -R

修改为当前时区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
即修改服务器时区为上海。

热门栏目