[转]使用脚本定时备份VPS数据到Dropbox
一、登录Dropbox并创建一个APP
如果你还没有注册Dropbox,可以通过这个地址注册:https://www.dropbox.com/register
登录之后,通过这个地址创建Dropbox APP:https://www.dropbox.com/developers/apps
点击Create an app创建一个APP,填写相关信息之后,选择Full Dropbox之后点击Create创建。记住得到的App key和App secret,接下来会用到。
二、下载Dropbox-Uploader
下载地址:https://github.com/andreafabrizi/Dropbox-Uploader
下载之后上传至VPS的root目录。
或
三、使用命令直接下载赋予执行权限并绑定Dropbox APP
curl "https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
chmod +x dropbox_uploader.sh //设置权限
sh dropbox_uploader.sh //绑定APP
按提示分别输入App key和App secret,然后输入 Y 确认;
之后会出现如下画面:
复制图中的链接在浏览器中打开,并点击Allow绑定APP,然后回到Xshell按Enter。
之后可以执行下面的命令测试上传,提示Done就是绑定成功了。
./dropbox_uploader.sh upload /etc/passwd /backup/passwd.old
四、添加自动备份脚本
在Xshell中执行:
nano backup.sh
适当修改以下内容后,复制粘贴进去
#!/bin/bash
# Author: Jalena
# Website: http://jalena.bcsytv.com/archives/1099
# 常规定义
MYSQL_USER="1111"
MYSQL_PASS="1111"
DROPBOX_DIR="/backup/$(date +%Y-%m-%d)"
SPLIT="split"
BACK_DIR="backup"
# 备份网站数据目录
NGINX_DATA="/usr/local/nginx/conf/vhost"
BACKUP_BLOG="/home/wwwroot/blog"
BACKUP_DEFAULT="/home/wwwroot/default"
BACKUP_JOOMLA="/home/wwwroot/joomla"
# 定义备份文件名
mysql_DATA=mysql_$(date +"%Y%m%d").tar.gz
www_BLOG=blog_$(date +%Y%m%d).tar.gz
www_DEFAULT=default_$(date +%Y%m%d).tar.gz
split=split_default_$(date +%Y%m%d).tar.gz.
www_JOOMLA=joomla_$(date +%Y%m%d).tar.gz
nginx_CONFIG=nginx_$(date +%Y%m%d).tar.gz
# 定义Dropbox远程文件夹(3天删除一次)
Old_DROPBOX_DIR=/backup/$(date -d -3day +%Y-%m-%d)
# 判断本地备份目录,不存在则创建
if [ ! -d $BACK_DIR ] ;
then
mkdir -p "$BACK_DIR"
fi
# 进入备份目录
cd $BACK_DIR
# 备份所有数据库
# 导出需要备份的数据库,清除不需要备份的库
mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' > databases.db
sed -i '/performance_schema/d' databases.db
sed -i '/information_schema/d' databases.db
sed -i '/mysql/d' databases.db
for db in $(cat databases.db)
do
mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz
done
# 打包数据库
tar -zcvf $mysql_DATA *.sql.gz
# 打包本地网站数据
tar -zcvf $www_BLOG $BACKUP_BLOG
tar -zcvf $www_DEFAULT $BACKUP_DEFAULT
# 分包压缩为单个包100M
split -d -b 100m $www_DEFAULT $split
# 打包Nginx配置文件
tar -zcvf $nginx_CONFIG $NGINX_DATA/*.conf
# upload
cd ~
./dropbox_uploader.sh upload $BACK_DIR/$nginx_CONFIG $DROPBOX_DIR/$nginx_CONFIG
./dropbox_uploader.sh upload $BACK_DIR/$mysql_DATA $DROPBOX_DIR/$mysql_DATA
./dropbox_uploader.sh upload $BACK_DIR/$www_BLOG $DROPBOX_DIR/$www_BLOG
for file in $(find $BACK_DIR/split* | grep $)
do
sh dropbox_uploader.sh upload $file $DROPBOX_DIR/$SPLIT/$file
done
# Delete all local backup
rm -rf $BACK_DIR
# Delete the file 3 days ago
./dropbox_uploader.sh delete $Old_DROPBOX_DIR/
# DropBox info
./dropbox_uploader.sh info
exit 0
按CTRL + O保存,CTRL + X 退出即可。
五、赋予脚本权限
在Xshell执行
chmod +x backup.sh
六、设置定时任务
crontab -e
00 03 * * * /root/backup.sh
crontab -l
service cron restart //重启Crontab
表示每天凌晨三点执行备份脚本。
如果你的VPS是nano编辑器(最上有nano字样),加入之后按Ctrl+O或F3并按Enter保存,然后按Ctrl+X或F2退出;
另一种是vi编辑器,需要先按i键进入编辑模式,在末尾输入上面的命令之后,按ESC键,输入:wq ,再按Enter保存并退出即可。
更多Crontab使用方法请看:http://www.vpser.net/manage/crontab.html
七、最后
重启之后就设置完成了……
如果你不知道服务器当前时间,可以使用下面的命令;
查看当前时间:
date -R
修改当前时区:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
即修改服务器时区为上海。
本文系作者 @ninja911 原创发布在NinJa911 Blog站点。未经许可,禁止转载。
暂无评论数据