作家
登录

自动备份网站并同步到 Dropbox

作者: 来源: 2013-09-18 13:16:44 阅读 我要评论

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

一、设置 Dropbox

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

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

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

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

二、同步备份脚本

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

  1. #!/bin/bash 
  2. # 一些配置 
  3. DROPBOX_DIR=/$(date +%Y-%m-%d) # Dropbox 目录,根目录 / 是你已经创建的 app 目录 
  4. MYSQL_USER="root" 
  5. MYSQL_PASS="password" 
  6. MYSQL_DB=('wordpress' 'project2') 
  7. BACK_DATA=/root/backup-data # 备份文件保存在本地的目录 
  8. DATA=/var/www # 需要备份的网站文件 
  9. # 定义备份文件名 
  10. DataBakName=Database_$(date +"%Y-%m-%d").tar.gz 
  11. WebBakName=Web_$(date +%Y-%m-%d).tar.gz 
  12. OldData=Database_$(date -d -6day +"%Y-%m-%d").tar.gz 
  13. OldWeb=Web_$(date -d -6day +"%Y-%m-%d").tar.gz 
  14. # Dropbox 里 30 天以上的旧数据可以清除 
  15. Old_DROPBOX_DIR=/$(date -d -30day +%Y-%m-%d) 
  16. # 清理本地保存了 6 天的备份 
  17. echo -ne "Delete local data of 6 days old..." 
  18. rm -rf $BACK_DATA/$OldData $BACK_DATA/$OldWeb 
  19. echo -e "Done" 
  20. cd $BACK_DATA 
  21. # 导出 MySQL 数据库,并压缩 
  22. echo -ne "Dump mysql..." 
  23. for db in ${MYSQL_DB[@]}; do 
  24. (/usr/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db}.sql) 
  25. done 
  26. tar zcf $BACK_DATA/$DataBakName *.sql 
  27. rm -rf $BACK_DATA/*.sql 
  28. echo -e "Done" 
  29. # 备份网站文件 
  30. echo -ne "Backup web files..." 
  31. cd $DATA 
  32. tar zcf $BACK_DATA/$WebBakName * 
  33. echo -e "Done" 
  34. cd $BACK_DATA 
  35. # 开始上传到 Dropbox 
  36. echo -e "Start uploading..." 
  37. ./dropbox_uploader.sh upload  $BACK_DATA/$DataBakName $DROPBOX_DIR/$DataBakName 
  38. ./dropbox_uploader.sh upload  $BACK_DATA/$WebBakName $DROPBOX_DIR/$WebBakName 
  39. # 清理 Dropbox 里 30 天前的旧数据 
  40. ./dropbox_uploader.sh delete $Old_DROPBOX_DIR/ 
  41. echo -e "Thank you! All done." 

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

【编辑推荐】

  1. 关于Unix操作系统自动备份详解
  2. 实用:Linux定期自动备份脚本
  3. Linux下的Mysql数据库自动备份
  4. MYSQL自动备份策略的方案

  推荐阅读

  云应用部署中的技术挑战

【2013年9月12日 51CTO外电头条】大部分围绕云计算开展的宣传活动都将重点放在基础设施、操作系统平台以及公共、私有或者混合云部署方面--但云计算实施流程中的重中之重应该在于应用程序。没有应用程序,我们根本无法>>>详细阅读


本文标题:自动备份网站并同步到 Dropbox

地址:http://www.17bianji.com/yunwei/33893.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)