自动备份网站并同步到 Dropbox

林继 WordPress 1,246 共写了381个字 (2014-01-11 23:11:27) 没有评论 打印 扫描二维码 百度已收录

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,然后按照步骤设置,就可以使用其命令上传和下载文件了。

dropbox_app_create

二、同步备份脚本

脚本根据自己的 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. # 定义备份文件名
  11. DataBakName=Database_$(date +"%Y-%m-%d").tar.gz
  12. WebBakName=Web_$(date +%Y-%m-%d).tar.gz
  13. OldData=Database_$(date -d -6day +"%Y-%m-%d").tar.gz
  14. OldWeb=Web_$(date -d -6day +"%Y-%m-%d").tar.gz
  15. # Dropbox 里 30 天以上的旧数据可以清除
  16. Old_DROPBOX_DIR=/$(date -d -30day +%Y-%m-%d) 
  17. # 清理本地保存了 6 天的备份
  18. echo -ne "Delete local data of 6 days old..."
  19. rm -rf $BACK_DATA/$OldData $BACK_DATA/$OldWeb
  20. echo -e "Done"
  21.  
  22. cd $BACK_DATA
  23. # 导出 MySQL 数据库,并压缩
  24. echo -ne "Dump mysql..."
  25. for db in ${MYSQL_DB[@]}; do
  26.     (/usr/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db}.sql)
  27. done
  28. tar zcf $BACK_DATA/$DataBakName *.sql
  29. rm -rf $BACK_DATA/*.sql
  30. echo -e "Done"
  31.  
  32. # 备份网站文件
  33. echo -ne "Backup web files..."
  34. cd $DATA
  35. tar zcf $BACK_DATA/$WebBakName *
  36. echo -e "Done"
  37.  
  38. cd $BACK_DATA
  39. # 开始上传到 Dropbox
  40. echo -e "Start uploading..."
  41. ./dropbox_uploader.sh upload  $BACK_DATA/$DataBakName $DROPBOX_DIR/$DataBakName
  42. ./dropbox_uploader.sh upload  $BACK_DATA/$WebBakName $DROPBOX_DIR/$WebBakName
  43.  
  44. # 清理 Dropbox 里 30 天前的旧数据
  45. ./dropbox_uploader.sh delete $Old_DROPBOX_DIR/
  46.  
  47. echo -e "Thank you! All done."

然后使用 crontab,让此脚本每几天定时自动运行,网站的所有数据就会安全地备份到 Dropbox 了。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >