引言

网站备份真的很重要,前段时间已经被坑过一次了,幸好数据没有完全丢,勉强恢复了,虽然丢失了几篇文章。之前一直是每隔几天手动备份一下重要的数据,然后下载到本地。但是有时候会忘记备份这件事,所以,自动进行备份就很有必要了。当然,要解决自动备份问题比较简单,些许脚本就能解决问题。问题是,总是把备份数据下载到本地,实在是比较麻烦(主要是浪费校园网流量!)。所以,本文就结合开源的bypy百度云客户端,实现每天凌晨自动备份数据后同步到百度网盘的功能!

准备工作

  • 安装requests模块:bypy依赖这个模块:sudo pip install requests
  • 安装bypy百度云客户端:sudo pip install bypy
  • 配置客户端:
    • 在终端中输入bypy info,根据提示打开链接,并将授权码paste回终端,然后回车;
    • 使用bypy list测试查看网盘文件:实际的查看的是我的应用数据/bypy目录
      root@localhost:~# bypy list
      Encoding for StdOut: ANSI_X3.4-1968
      /apps/bypy ($t $f $s $m $d):
      D site-backup 0 2016-07-02, 02:51:14

脚本之旅

  • 在编写自动备份脚本前,需要知道究竟哪些目录比较重要,值得上传。此外,还应当了解mysql数据库备份的方法。好在这些都比较简单!
  • 我自己服务器上主要需要备份的目录有以下几个:
    • wordpress:这个是博客网站的文件夹,内容当然很重要,尤其是很多的媒体资源!
    • apache2:这个是apache2服务器配置目录,这个也很重要。
    • custom_scripts:这个目录是平时会更新的脚本合集,自然也应当定期备份咯。
    • shadowsocks:这个目录存放的是shadowsocks相关的配置文件以及监控脚本,其实不用每次都备份,不过不太大,所以顺带每天备份下好啦!
  • 除了要备份的目录外,还有wordpress数据库需要备份,备份的命令非常简单:mysqldump -uroot -ppassword database_name > data.sql
  • 在备份完了后,只需要使用bypy将备份好的数据上传到百度云即可。
  • 以下是为此编写的脚本,可以自动完成指定的备份和上传数据的任务:
  1. #!/bin/bash
  2. # Directories you want to backup
  3. back_dirs="/root/custom_scripts /root/shadowsocks /var/www/wordpress /etc/apache2"
  4. echo "========================================================================"
  5. echo "Backup begin:" `date "+%Y-%m-%d %H:%M:%S"`
  6. # Where to put the backup data.
  7. dest_dir="/root/site-backup"
  8. date_postfix=`date "+%Y%m%d"`
  9. # Step A: create directory for backups
  10. echo -n "Prepare to bakcup..."
  11. if [ ! -d $dest_dir ]; then
  12. /bin/mkdir -p $dest_dir
  13. else
  14. /bin/rm -r $dest_dir
  15. /bin/mkdir -p $dest_dir
  16. fi
  17. echo "done!"
  18. # Step B: stop website
  19. echo -n "Stop web server apache..."
  20. /etc/init.d/apache2 stop >/dev/null
  21. echo "done!"
  22. # Step C: backup each directories we've got
  23. for dir in $back_dirs
  24. do
  25. name=${dir##*/}
  26. echo -n "Backup directory: $dir, please wait..."
  27. archive_name="$name-$date_postfix".tar.gz
  28. /bin/tar -czpf $dest_dir/$archive_name $dir 2> /dev/null
  29. echo "done!"
  30. done
  31. # Step D: backup database
  32. echo -n "Backup database...."
  33. /usr/bin/mysqldump -uuser -ppassword wordpress > $dest_dir/"wordpress_"$date_postfix.sql
  34. echo "done!"
  35. # Step E: restart website
  36. echo -n "Start web server apache..."
  37. /etc/init.d/apache2 start >/dev/null
  38. echo "done!"
  39. # Step F: upload backup data to Baidu Cloud
  40. echo "Upload backup data to Baidu Cloud..."
  41. remote_dir="site-backup/$date_postfix"
  42. /usr/local/bin/bypy mkdir $remote_dir
  43. /usr/local/bin/bypy upload $dest_dir $remote_dir
  44. # Step G: clean backups.
  45. echo -n "Clean backups..."
  46. /bin/rm -r $dest_dir
  47. echo "done!"
  48. echo "Backup complete:" `date "+%Y-%m-%d %H:%M:%S"`
  49. echo ""
  50. exit 0

测试脚本

  • 为了方便起见,首先给脚本赋予可执行权限,然后链接到/usr/local/bin/site-backup上,这样就可以在任何目录下启动备份命令了!
  • 以下是测试执行的效果截图:
  • 以下是上传到百度云中的备份文件截图:

定时备份

  • 将任务添加到crontab即可(需要注意的是服务器与国内有12个小时的时差存在):
  1. # at 4.a.m every day
  2. 0 16 * * * /usr/local/bin/site-backup >> /var/log/site-backup.log

尚待改进

  • 由于当前网站备份出来的数据并非很大,所以采用了比较传统的完全备份再上传的方法;后期可以改进成每隔几天做一次完整备份,然后每天做增量备份的方式;
  • 并不需要在百度网盘中保存太多的备份数据,后期需要增加新的功能,用于删除太旧的备份数据,只保留最近一周或者若干天的备份即可。

参考

  • bypy文档
  • tar命令高级用法——备份
http://blog.chriscabin.com/others/wordpress/1194.html

通过python的百度云客户端可以把linux数据备份到百度云相关推荐

  1. 用多备份将网站数据备份到百度云,七牛云存储,阿里云OSS,亚马逊S3,金山云等云存储服务上

    真正运营过网站的人都知道,数据对一个网站来说至关重要,因此,网站数据备份也是日常必做工作.因为误操作,网站被攻击等种种原因都会导致数据丢失,这时,你才会明白"有备无患"的道理.备份 ...

  2. mysql rds备份_云数据库RDS如何进行数据备份

    前言:目前睿江云已经推出的RDS云数据库,用户无需进行额外的传统命令行配置,直接选购即可使用. 常见的RDS备份工具 目前睿江云也支持数据的备份,您可以选择数据备份的策略,进行备份. 那么常见的备份工 ...

  3. 云宏CTO张国强:云宏超融合大数据一体机,中国云数一体化神器!

    云宏是国内领先的云计算大数据关键技术及服务提供商,一直致力于云操作系统国产化替代工程.自主安全中国云的建设之中.2018年,云宏入选国际权威IT咨询机构Gartner<中国x86服务器虚拟化市场 ...

  4. python爬取网易云音乐薛之谦歌词数据,生成词云

    老薛最近频频上热搜,因为老薛的歌大部分是自己作词,所以感觉他的歌词和他应该有某种情感表达和联系吧. 于是用python爬了网易云音乐中老薛的歌词数据,并简单用wordcloud写了个词云统计. 难过, ...

  5. 服务器如何下载百度网盘文件?Linux服务器如何在百度网盘中连接、上传下载;在Linux服务器上下载百度云盘中的资料

    前言 百度云提供Python包bypy进行远程服务器的对接然后下载: https://github.com/houtianze/bypy 可以通过pip直接下载,授权本人的百度云账号后,就可以直接使L ...

  6. 如何利用阿里云服务器快照策略为数据备份

    阿里云服务器快照,是一个很好的备份容灾工具,不了解的可以先了解一下: 快照可以做什么? 这是一种便捷高效的数据保护服务手段,可以对重要业务数据进行备份,来应对误操作.攻击.病毒等导致的数据丢失风险.比 ...

  7. 中华云盒M1刷Linux教程,再谈中华云盒M1刷机详细教程,包教包会终结版

    本帖最后由 鸿雁前程 于 2016-10-7 01:35 编辑 最近有人联系我关于中华云盒M1的刷机问题,说自己尝试多次均不成功.考虑到论坛内中华云盒M1的刷机教程过于简单,所以专门抽时间重新刷了一下 ...

  8. 380免费云存储_从四个方面分析:云存储服务的特点、影响

    云存储就是将储存资源放到云上供人存取的一种新兴方案,使用者可以在任何时间.任何地方,透过任何可连网的装置连接到云上方便地存取数据.那么,云存储服务有什么特点,会给我们带来一些什么样的影响呢? 云存储是 ...

  9. 混合云存储组合拳:基于云存储网关与混合云备份的OSS数据备份方案

    前言 阿里云对象存储(OSS)用户众多.很多用户因为业务或者合规性需求,需要对OSS内的数据做备份,无论是线上备份,还是线下备份.用户可以选择使用OSS的开放API,按照业务需求,做数据的备份,也可以 ...

最新文章

  1. 云知声联合亿咖通科技成立合资公司,布局汽车 AI 芯片
  2. 如何实现一个malloc
  3. 基于Elasticsearch实现搜索建议
  4. Core Java笔记 6.部署应用程序
  5. SalesOrder Text determination
  6. [蓝桥杯]带分数-dfs
  7. mysql 锁机制及实现原理_MySQL-深入浅出锁分类及实现原理
  8. KMP算法 --- 在文本中寻找目标字符串
  9. NFT平台Chair.finance获得Polygon Grant及生态支持
  10. 【 开源计划 - Flutter组件 】 星星也可以如此闪耀 flutter_star
  11. vue 生命周期activated与created使用
  12. jdbc,基本数据库命令封装
  13. win10计算机维护,Win10系统打开或关闭自动维护功能的方法
  14. iOS视频开发(二):视频H264硬编码
  15. I am a boy!
  16. Unity3d 传送门效果制作
  17. BI神器Power Query(16)-- PQ制作时间维度表(5)
  18. 重启tomcat报错 Tomcat7“At least one JAR was scanned for TLDs yet contained no TLDs”
  19. Blender无法找到安装的插件
  20. pycharm专业版许可证申请(特定人群)

热门文章

  1. python学习——CMD中快速执行python文件
  2. 服务器硬盘接口图文观赏
  3. AMiner论文推荐——Image Cropping on Twitter
  4. python调用win32实现电脑语音 win32com.client.Dispatch('SAPI.SPVOICE') 出错的问题
  5. 数据恢复问题分析及注意事项
  6. Python 中 if not 用法
  7. web 前端和后台配合工作流程
  8. 使用python实现unix2dos和dos2unix命令
  9. Ubuntu修改系统时间
  10. “快到没朋友”的目标检测模型YOLO v3问世,之后arXiv垮掉了…