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

2023-05-16

引言

网站备份真的很重要,前段时间已经被坑过一次了,幸好数据没有完全丢,勉强恢复了,虽然丢失了几篇文章。之前一直是每隔几天手动备份一下重要的数据,然后下载到本地。但是有时候会忘记备份这件事,所以,自动进行备份就很有必要了。当然,要解决自动备份问题比较简单,些许脚本就能解决问题。问题是,总是把备份数据下载到本地,实在是比较麻烦(主要是浪费校园网流量!)。所以,本文就结合开源的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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • yum配置代理proxy

    yum代理proxy xff1a Linux CentOS设置全局代理 xff08 http xff09 说明 xff1a 为什么说是http代理 xff0c 其实这个还不能说是全称走代理 xff0c 罪名写的区别就是ICMP协议这个设置就
  • 002 如何将date命令显示的中文时间改为显示英文时间?

    本来执行date命令显示中文时间 date 2017年 11月 25日 星期六 15 39 49 CST lancer 64 ubuntu locale LANG 61 en US UTF 8 LANGUAGE 61 LC CTYPE 61
  • github pages 用法详解

    github pages 基础用法 1 URL 规则 假设你的 github 帐号为 mygithub xff0c 需要发布的仓库名为 myrepo xff0c 那么 pages 的 URL 为 xff1a https mygithub g
  • 文章标题

    刷leetcode的时候总是喜欢把别人家的C 43 43 和JAVA翻译成Python表达 xff0c 然后看自己代码能够短多少 所谓Pythonic啊 xff0c 真是个好东西 xff0c 但是未必能够让算法时间复杂度减低 xff0c 就
  • ld: error: undefined symbol: did you mean: extern “C“

    碰到个问题 xff0c 先看报错 xff1a FAILURE Build completed with 2 failures 1 Task failed with an exception What went wrong Execution
  • git 出现fatal: not a git repository (or any of the parent directories): .git 问题解决

    今天在一个新的磁盘上 xff0c 新建了一个目录 xff0c 打算把gitlab上的一个项目临时本地改一下 xff0c 结果本地执行git clone项目 xff0c 可以成功 xff0c 能把项目从gitlab上把代码同步下来 xff0c
  • Ring Buffer (circular Buffer)环形缓冲区简介

    关于环形缓冲区的知识 xff0c 请看这里 http en wikipedia org wiki Circular buffer 上面这个网址已经介绍得非常详细了 下面这个网址有 RingBuffer的C代码实现 xff0c 其实是一个C的
  • iOS——MRC和ARC实现原理

    Objective C提供了两种内存管理机制MRC xff08 Mannul Reference Counting xff09 和ARC xff08 Automatic Reference Counting xff09 xff0c 为Obj
  • [Python实战项目] - xpath 爬虫实战,获取纵横小说网连载小说最新章节(一)

    本教程可以一键获取连载小说最新章节 xff0c 只需要运行一下代码 xff0c 直接打开浏览器看小说未看的最新章节 开发环境 Python版本 xff1a python3 6Python第三方库 xff1a requests lxml we
  • 计算机组成原理选择题题库

    目录 第一套 第二套 第三套 第四套 第五套 第六套 第七套 第八套 第九套 第十套 第一套 一 选择题 xff08 每小题1分 xff0c 共15分 xff09 1 从器件角度看 xff0c 计算机经历了五代变化 但从系统结构看 xff0
  • 【面试必备】面向Android开发者的复习指南!最全的BAT大厂面试题整理

    近日一好友去阿里面试 xff0c 面试失败了 xff0c 分享了一个他最不擅长的算法面试题 题目是这样的 题目 xff1a 给定一个二叉搜索树 BST xff0c 找到树中第 K 小的节点 出题人 xff1a 阿里巴巴出题专家 xff1a
  • 文件选择器DocumentUI显示apk文件图标

    1 定位代码与调试 Hierarchy Viewer分析界面工具 xff0c uiautomatorviewer自动化查看器 xff0c 定位组件 添加调试信息 xff0c 调试定位代码 2 搜索获取apk文件图标 lt uses perm
  • Android adb 启动APP

    目录 启动命令一 常规命令 43 包名 activity二 常规命令 43 包名命令关闭App 获取包名和activity的路径代码获取1 命令获取 需要app运行在前台 xff0c 停留在启动界面 2命令获取 先执行命令 xff0c 再点
  • Android日志[基础篇]Android Log日志输出

    Android日志 基础篇 二 Android Studio修改LogCat日志的颜色 android util Log输出日志的常用方法如下 xff1a Log v String tag String msg Log d String t
  • Android WebView https白屏、Http和Https混合问题、证书配置和使用

    目录 前言启用https后白屏 xff08 证书错误 xff09 修改处理WebView中Http和Https混合问题处理办法Webview的几种内容加载模式 证书配置或处理https请求的证书okhttp进行请求 xff1a HttpsU
  • Java错误:找不到或无法加载主类

    目录 前言javac xxx java 编译需要相对物理路径java xxx 执行需要虚拟路径总结 前言 一般情况下 xff0c 我们都使用工具进行代码的编辑和调试 xff0c 例如eclipse Manven Android Studio
  • Edge 修改字符编码(详细图文)

    Microsoft Edge 版本 97 0 1072 62 官方内部版本 64 位 前言 如下图 xff0c 在访问页面时出现乱码 xff0c 而且一直返回的内容编码是UTF 8 xff0c 但Edge没找快捷的编码方式选择 方法一 In
  • Charles抓取HTTPS Windows Android iOS 图文详细

    文章目录 背景操作原理windows 安装CharlesCharles配置第一步 xff1a 配置HTTP代理 xff0c 这步与抓取HTTP请求是一样第二步 xff1a 配置SSL代理第三步 xff1a 为手机配置代理iPhone 代理配
  • Linux less 命令使用介绍

    文章目录 1 xff0e 命令格式2 xff0e 命令功能3 xff0e 命令参数4 xff0e 按键操作5 xff0e 示例1 查看文件内容2 ps查看进程信息并通过less分页显示3 查看命令历史使用记录并通过less分页显示5 浏览多
  • macOS/iOS WKWebview 下载文件

    WKWebview 下载文件需要通过JS注入的方式来下载 js下载的数据是base64编码的 xff0c 回到给原生后 xff0c 原生需要反编码后才是原始文件的数据 具体步骤 xff1a 配置WKWebview的js回调句柄 xff08

随机推荐

  • 【uniapp原生插件】招商银行一网通支付android&iOS

    招行支付插件说明 参考uni插件市场 wx gaogaoEagle 插件集成准备 从招行获得appid和appSchememanifest json中App原生插件配置 xff0c 云端插件选择试用或购买的插件 xff0c 并配置Andro
  • mongodb命令使用

    设置慢查询 db setProfilingLevel 1 200 查询副本集当前状况 需要将命令行切换到需要查询的副本集中 rs status 查询数据库当前情况 sh status 查询数据分片情况 db 集合名称 getShardDis
  • Duplicate class android.support.v4.app.INotificationSideChannel found in modules core-1.5.0-runtime

    冲突问题 androidx和support类冲突 xff0c 具体如下 xff1a Duplicate class android support v4 app INotificationSideChannel found span cla
  • 关于I帧/IDR、B帧、P帧、SPS、PPS

    在h264编解码中 xff0c 常常有I帧 IDR B帧 P帧 IDR NALU GOP xff0c 但往往没有关注细节 或者我们本身在实际应用中已使用过很多次 xff0c 但对相关的技术名词不清楚 在H264协议里定义了三种帧 xff0c
  • 如何保证数据库与缓存的数据一致性

    一 先删缓存 xff0c 再修改数据库 数据不一致的情况 一 线程A修改数据时 xff0c 需先执行删除缓存操作 二 其他线程只要在线程A删除缓存和执行update期间 xff0c 查询数据库得到了旧的数据 xff0c 此时就有极大的概率会
  • spring-jms/DefaultMessageListenerContainer配置

    一个DefaultMessageListenerContainer可以开启多个 concurrent AsyncMessageListenerInvoker并发 收消息 两种模式 模式一 xff1a 递增监听线程并调度 xff0c 监听线程
  • IDEA的Git操作——拉取、对比开发代码

    一 git原理 git是一个分布式的版本管理工具 xff0c 主要分为2个部分 xff1a 本地 xff1a 分为3个区 xff1a working space xff08 工作区 xff09 staging area xff08 暂存区
  • .sh文件无法执行

    sh文件无法执行 解决方法 xff1a chmod x xxx sh
  • html页面中查找元素 css

    1 根据某标签获取上层父标签 lt div id 61 34 div1 34 class 61 34 div1 34 gt lt a gt lt input type 61 34 text 34 gt lt img id 61 34 img
  • maven配置详解

    下载地址 xff1a Maven Download Apache Maven xff0c 添加环境变量 xff1a MAVEN HOME 一 配置文件 maven的配置文件主要有 settings xml 和pom xml 两个文件 1 其
  • 我的2014碎碎念—学习篇、实习篇、工作篇、生活篇

    继去年作了一次年度总结过后 xff0c 我就发誓说以后每年年末都要做一次总结 xff0c 这对自己是非常有帮助的 xff0c 无奈由于天性懒散 xff0c 2015年都过去好几天了 xff0c 才花了点心思整理下自己在过去一年里的所得所失
  • 百度2014研发类校园招聘笔试题解答

    先总体说下题型 xff0c 共有3道简答题 xff0c 3道算法编程题和1道系统设计题 xff0c 题目有难有易 xff0c 限时两小时完成 一 简答题 动态链接库和静态链接库的优缺点轮询任务调度和可抢占式调度有什么区别 xff1f 列出数
  • Rt-thread encoder 编码器不会溢出中断问题

    参考文章https blog csdn net qq 41285788 article details 102729020 并参考按照官方文档指导 xff0c 编译成功后下载运行测试发现 xff0c 虽然编码能计数 xff0c 但不能产生溢
  • 一个比较不错的CMD样式

    64 echo off reg add 34 HKEY CURRENT USER Console SystemRoot system32 cmd exe 34 ve f 1 gt nul reg add 34 HKEY CURRENT US
  • 京东2013校园招聘软件研发笔试题

    时间 xff1a 2012 9 11 地点 xff1a 川大 我只能说第一家公司 xff0c 不是一般的火爆 不得不吐槽一下 xff1a 京东宣讲完全没有计划 xff0c 只看到个下午两点半宣讲 xff0c 结果跑过去 xff0c 下午两点
  • 如何用天干地支计算年月日时?

    http zhidao baidu com question 145999147 html http blog sina com cn s blog 647277d90100kiun html
  • 完成任务自动关机 linux shell 脚本

    总觉的脚本可以写出来 xff0c 就是写不出来 xff0c 还是缺少锻炼 不得不说没有sed和awk xff0c 这个做起来真是 下面这个没用正则表达式 xff0c 暂时还不会 xff0c 看得那个符号晕晕的 这段时间学这个好了 其实这个写
  • 无法读取github中raw.githubusercontent.com解决办法

    想用github的raw文件做下pandas练习 xff0c 试了各种办法打不开 xff0c 比如更改host文件 xff08 可能是我的打开方式不对o o xff09 但是居然用大学时代的更改DNS的方式搞定了 xff08 噢耶 xff0
  • 【转载】写给电子信息工程专业的毕业生(一)

    一 继续深造 VS 找工作 在就业竞争异常激烈的今天 xff0c 也许大家大三起就开始忧心自己毕业后该何去何从了 摆在大家面前最为清晰的 xff0c 是两条路 xff1a 继续深造 xff08 考研 留学 xff09 和找工作 现在研究生扩
  • 通过python的百度云客户端可以把linux数据备份到百度云

    引言 网站备份真的很重要 xff0c 前段时间已经被坑过一次了 xff0c 幸好数据没有完全丢 xff0c 勉强恢复了 xff0c 虽然丢失了几篇文章 之前一直是每隔几天手动备份一下重要的数据 xff0c 然后下载到本地 但是有时候会忘记备