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

文章目录

概述

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

安装bypy

shell 复制代码
# 切换到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

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

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

同步文件

基本操作的命令如下:

shell 复制代码
# 上传服务器当前目录下的文件到百度云盘
bypy upload

# 下载百度网盘上的内容到服务器的当前目录
bypy downdir

# 比较服务器当前目录和网盘的文件是否一致
bypy compare

# 查看网盘的文件列表
bypy list

# 运行时添加-v参数,会显示进度详情。
# 运行时添加-d,会显示一些调试信息。

实际演示一下:

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

切换一个目录,运行 bypy downdir

上传到网盘的指定目录:bypy upload ./ 2024/123/456/ 会将当前目录下的所有文件上传到网盘的 apps >bypy >2024>123>456目录下,别忘了456/后面的/

特别说明:

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

定时任务脚本

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

备份数据库的脚本 :

shell 复制代码
# export_sql.sh

mysqldump -u root -p123456 dbname > /home/admin/www/sql/dbname.sql

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

shell 复制代码
# upload_img_to_bdwp.sh

sqlpath=/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} ]; then
    echo "当前日期的图片文件目录不存在"
    exit 0
fi

cd ${imgpath}
echo ${imgpath}
nohup bypy upload ./ ${yesterday} >/dev/null 2>&1 &

定时任务脚本crontab -e

shell 复制代码
# 每天02:00 备份数据库
0 2 * * * sh /root/shell/export_sql.sh

# 每天03:00 备份文件到百度网盘
0 3 * * * sh /root/shell/upload_img_to_bdwp.sh
相关推荐
π大星星️34 分钟前
基于LNMP架构的个人博客系统部署
服务器·架构
孙克旭_4 小时前
PXE_Kickstart_无人值守自动化安装系统
linux·运维·自动化
皓月盈江5 小时前
Linux电脑本机使用小皮面板集成环境开发调试WEB项目
linux·php·web开发·phpstudy·小皮面板·集成环境·www.xp.cn
深井冰水5 小时前
mac M2能安装的虚拟机和linux系统系统
linux·macos
leoufung5 小时前
内核内存锁定机制与用户空间内存锁定的交互分析
linux·kernel
菜菜why7 小时前
AutoDL租用服务器教程
服务器
IT专业服务商7 小时前
联想 SR550 服务器,配置 RAID 5教程!
运维·服务器·windows·microsoft·硬件架构
忧虑的乌龟蛋7 小时前
嵌入式Linux I2C驱动开发详解
linux·驱动开发·嵌入式·iic·i2c·读数据·写数据
I_Scholar8 小时前
OPENSSL-1.1.1的使用及注意事项
linux·ssl
Johny_Zhao8 小时前
K8S+nginx+MYSQL+TOMCAT高可用架构企业自建网站
linux·网络·mysql·nginx·网络安全·信息安全·tomcat·云计算·shell·yum源·系统运维·itsm