VPS自动备份数据到Dropbox

V

一 设置Dropbox

由于Dropbox强大的API,在不使用客户端的同时,可以使用第三方脚本直接上传文件。对比官方客户端运行起来上百M的内存占用,这个小小的脚本完全可以满足我们的需求。

Dropbox-Uploader https://github.com/andreafabrizi/Dropbox-Uploader

将脚本下载到使用目录,运行,此时根据提示设置自己的Dropbox应用API(就像申请Twitter API一样简单),然后按照步骤设置,然后就可以使用其命令上传/下载文件了

#示范
./dropbox_uploader.sh upload /etc/passwd /myfiles/passwd.old
./dropbox_uploader.sh upload /etc/passwd
./dropbox_uploader.sh download /backup.zip

二 使用脚本自动打包并上传

本脚本摘自Hostloc全球主机论坛,在基于VPS的配置进行相应修改——对应之前web服务器的相关配置

vi backup.sh
#!/bin/bash
#请自行修改以下目录
DROPBOX_DIR=/BackUp/$(date +%Y-%m-%d) #Dropbox上的目录
MYSQL_USER="root" #Mysql帐号
MYSQL_PASS="password" #Mysql密码
DOMAIN_DIR=/usr/local/webserver/nginx/conf/vhost #存储域名信息的目录
BACK_DATA=/home/www #用于存放备份文件的目录
DATA=/home/wwwroot #网站文件存放目录

#定义数据库的名字和旧数据库的名字
DataBakName=Database_$(date +"%Y-%m-%d").tar.gz
WebBakName=Data_$(date +%Y-%m-%d).tar.gz
DomainName=Domain_$(date +%Y-%m-%d).tar.gz
OldData=Database_$(date -d -6day +"%Y-%m-%d").tar.gz
OldWeb=Data_$(date -d -6day +"%Y-%m-%d").tar.gz
OldDomain=Domain_$(date -d -6day +"%Y-%m-%d").tar.gz

#定义Dropbox旧数据的名字 - 30天前
Old_DROPBOX_DIR=/BackUp/$(date -d -30day +%Y-%m-%d) #Dropbox上的目录
#删除本地6天前的数据
rm -rf $BACK_DATA/$OldData $BACK_DATA/$OldWeb $BACK_DATA/$OldDomain

cd $BACK_DATA

#使用命令导出SQL数据库,并且按数据库分个压缩
for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
    (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)
done

tar zcf $BACK_DATA/$DataBakName $BACK_DATA/*.sql.gz
rm -rf $BACK_DATA/*.sql.gz

#压缩网站数据
cd $DATA
tar zcf $BACK_DATA/$WebBakName ./*

#压缩域名信息
cd $DOMAIN_DIR
tar zcf $BACK_DATA/$DomainName ./*

cd $BACK_DATA
#开始上传
sh dropbox_uploader.sh upload  $BACK_DATA/$DataBakName $DROPBOX_DIR/$DataBakName
sh dropbox_uploader.sh upload  $BACK_DATA/$WebBakName $DROPBOX_DIR/$WebBakName
sh dropbox_uploader.sh upload  $BACK_DATA/$DomainName $DROPBOX_DIR/$DomainName

#开始删除远程30天前的文件
sh dropbox_uploader.sh delete $Old_DROPBOX_DIR/

echo -e "Thank you! all done"

然后把这个脚本加入到crontab里自动运行就ok了

About the author

Add comment

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

By now163

Your sidebar area is currently empty. Hurry up and add some widgets.