在Ubuntu服务器上备份文件到自己的百度网盘

news/2024/12/12 17:04:23/

文章目录

  • 概述
  • 安装bypy
  • 同步文件
  • 定时任务脚本

概述

之前自购了一台阿里云服务器,系统镜像为Ubuntu 22.04, 并且搭建了LNMP开发环境(可以参考:《Ubuntu搭建PHP开发环境操作步骤(保姆级教程)》)。由于项目运行中会产生附件(比如图片、视频等二进制文件),一般情况下可以把网站的附件存储到OSS上,但是,OSS需要花钱,由于项目比较小,而且本着少花点钱的原则,还是把附件就放在了网站服务器上。那么,就需要考虑一个问题,附件文件的备份问题。如果服务器遭受攻击,那么有可能附件就找不回来了。于是乎,我就在想,能不能在Ubuntu服务器上免费的实现文件备份。最终,我发现了这个神器:bypy。

安装bypy

# 切换到root用户
sudo -i# 安装 pip3 (如果已安装,则跳过此步骤)
apt install python3-pip# 安装依赖
pip3 install requests (如果已安装,则跳过此步骤)# 安装bypy
pip3 install bypy # 如果最新版不能用,可以使用1.6.10版本: pip3 install bypy==1.6.10# 获取百度网盘的授权
bypy info

如果报错:Command ‘bypy’ not found, did you mean ,应该是没有切换到root用户

正常情况的话,就会出现下面的内容:

Please visit:
https://openapi.baidu.com/oauth/2.0/authorize?client_id=q8WE4EpCsau1oS0MplgMKNBn&response_type=code&redirect_uri=oob&scope=basic+netdisk
And authorize this app
Paste the Authorization Code here within 10 minutes.
Press [Enter] when you are done

访问提示的链接,就会打开百度网盘的授权页面,登录你的百度网盘账号,然后授权即可。

image-20241211144537997

接下来,把上面的授权码复制下来,粘贴到服务器的终端:

image-20241211144835477

同步文件

基本操作的命令如下:

# 上传服务器当前目录下的文件到百度云盘
bypy upload# 下载百度网盘上的内容到服务器的当前目录
bypy downdir# 比较服务器当前目录和网盘的文件是否一致
bypy compare# 查看网盘的文件列表
bypy list# 运行时添加-v参数,会显示进度详情。
# 运行时添加-d,会显示一些调试信息。

实际演示一下:

随便找个目录,创建两个测试文件,然后运行 bypy upload,接下来,去到 百度网盘-我的应用数据-bypy 文件夹查看:

image-20241211145516635

切换一个目录,运行 bypy downdir

image-20241211145655513
上传到网盘的指定目录:bypy upload ./ 2024/123/456/ 会将当前目录下的所有文件上传到网盘的 apps >bypy >2024>123>456目录下,别忘了456/后面的/
在这里插入图片描述

特别说明:

  • 增量备份:对于网盘已存在的文件,如果文件没有变化,再次同步会跳过。
  • 单向备份:对于已同步过的文件,如果删除了服务器上的文件,并不会删除百度网盘上的文件。

定时任务脚本

然后,通过crontab 写一个定时任务,就可以实现自动备份服务器上的文件到自己的网盘了,再也不怕服务器的大容量文件丢失了。

备份数据库的脚本 :

# export_sql.shmysqldump -u root -p123456 dbname > /home/admin/www/sql/dbname.sql

备份SQL文件和图片文件的脚本,图片文件按照年/月/日 的目录存放,备份昨天的:

# upload_img_to_bdwp.shsqlpath=/home/admin/www/sql
cd ${sqlpath}
echo ${sqlpath}
nohup bypy upload ./ sql >/dev/null 2>&1 &# 获取昨天的日期
yesterday=$(date -d "yesterday" +"%Y/%m/%d")
imgpath=/home/admin/www/img/file_${yesterday}
if [ ! -d ${imgpath} ]; thenecho "当前日期的图片文件目录不存在"exit 0
ficd ${imgpath}
echo ${imgpath}
nohup bypy upload ./ ${yesterday} >/dev/null 2>&1 &

定时任务脚本crontab -e

# 每天02:00 备份数据库
0 2 * * * sh /root/shell/export_sql.sh# 每天03:00 备份文件到百度网盘
0 3 * * * sh /root/shell/upload_img_to_bdwp.sh

http://www.ppmy.cn/news/1554549.html

相关文章

Phoenix5.1.3安装

环境说明 准备三台服务器,分别为:bigdata141(作为HBase主节点)、bigdata142、bigdata143,已经搭建好HBase集群,我这边HBase版本为2.2.7再准备一台服务器,bigdata144,可作为Phoenix客…

[Redis#19] 集群 | 数据分片 | docker模拟 | 故障转移 | 集群扩容

目录 集群 数据分片算法 1. 哈希求余 2 一致性哈希算法 3. 哈希槽分区算法 (Redis 使用) Docker搭建集群 i:创建目录和配置文件 编写 generate.sh 脚本 执行生成命令 ii:编写 docker-compose.yml 网络配置 iii: 构建集群 连接并验证集群 重…

实时数据开发|Flink状态计算 有状态VS无状态,区别和优劣

有状态计算是Flink非常重要的特性之一。 有状态计算是指在程序计算过程中,在Flink程序内部存储计算产生的中间结果,并提供给后续Function或算子计算结果使用。如图5-1所示,状态数据可以维系在本地存储中,这里的存储可以是Flink的…

深入解析神经网络的GPU显存占用与优化

文章目录 什么是显存?什么是神经网络? 神经网络如何使用显存?模型参数的显存占用激活值的显存占用梯度信息的显存占用实际计算示例 代码示例如何查看显存使用情况使用torch.cuda.memory_allocated使用torch.cuda.memory_reserved示例&#xf…

【C++】继承的介绍

继承 1.继承的概念及定义1.1继承的概念:1.2 继承定义1.3继承类模板 2.继承中的函数隐藏3.派生类的默认成员函数4.继承中的切割5.多继承及其菱形继承问题5.1继承模型5.2解决菱形继承问题的方法(虚继承) 6.继承和组合 1.继承的概念及定义 1.1继承的概念: …

多标签分类SOTA | ADDS论文解读

论文标题:Open Vocabulary Multi-Label Classification with Dual-Modal Decoder on Aligned Visual-Textual Features 论文传送门:https://arxiv.org/pdf/2208.09562 paperwithcode多标签分类排名: 这篇文章主要用来解决多标签分类问题&am…

Django Fixtures 使用指南:JSON 格式详解

在Django开发中,fixtures是一种非常有用的工具,它们可以帮助我们序列化数据库内容,并在不同的环境或测试中重用这些数据。本文将详细介绍Django fixtures的概念、如何生成和使用JSON格式的fixtures。 什么是Fixtures? Fixtures是…

如何使用 Python 发送 HTTP 请求?

在Python中发送HTTP请求最常用的库是requests,它提供了简单易用的API来发送各种类型的HTTP请求。 除此之外,还有标准库中的http.client(以前叫做httplib)和urllib,但它们相对更底层,代码量较大&#xff0c…