作为一名开发者或服务器管理员,我们心中永远悬着一把达摩克利斯之剑——数据丢失。无论是网站数据、项目代码还是珍贵的个人文件,一次意外就可能造成无法挽回的损失。
我们都知道备份的重要性,但现实往往是:
- 手动备份太繁琐:每次都要
tar
打包,再用 FTP/SCP 上传,费时费力,还容易忘记。 - 专业备份方案太贵:企业级的备份服务对于个人项目或小型团队来说是一笔不小的开销。
- 大文件上传是噩梦:一个几十 GB 的文件,传到一半网络中断,一切都要从头再来。
为了彻底解决这个痛点,我决定利用百度网盘巨大的免费存储空间,打造一个“一劳永逸”的自动化备份解决方案。今天,我非常自豪地向大家介绍我的开源项目——Baidu-Backup。
✨ Baidu-Backup:不止是一个上传脚本
Baidu-Backup
是一个功能强大且稳定可靠的 Python 脚本,它能将您的服务器数据自动备份到百度网盘,并智能地管理历史备份。
它不仅仅是“上传”,而是真正意义上的“自动化运维”。
让我们看看它有哪些酷炫的功能:
- 🚀 全自动,无人值守:脚本最神奇的地方在于它的授权管理机制。您只需要在第一次运行时手动授权一次,之后长达 10 年,它都可以自动刷新
Token
,无需任何人工干预。真正做到“Set it and forget it!” - ♻️ 智能备份轮替:云存储空间也不是无限的。您可以轻松设置只保留最近 N 份备份(例如,最近7天的备份)。脚本会在每次成功上传新备份后,自动检查并删除最旧的备份文件,完美实现了增量备份的周期性管理。
- 📦 大文件,毫无压力:脚本内置了分片上传和失败重试机制。即使是 TB 级别的超大文件,它也能稳稳地切成小块上传,即使中间网络波动,也会自动重试,确保备份任务的最终成功。
- 🔒 安全第一:我们绝不将敏感信息硬编码在代码里!您的
AppKey
和SecretKey
通过环境变量配置,与代码完全隔离,安全放心。 - 🧹 干净利落:任务结束后,脚本会自动清理在本地产生的临时压缩包,不留下一丝垃圾,时刻保持您的服务器整洁。
📖 快速上手指南
让这个备份神器为您的服务器保驾护航,只需要简单的几步。
第 1 步:获取百度开放平台凭证
首先,你需要一个应用的 AppKey
和 SecretKey
。
- 前往 百度网盘开放平台 并登录。
- 完成开发者认证,然后创建一个“个人应用-存储”类型的应用。
- 在应用详情页,你就能找到所需的
AppKey
和SecretKey
。
第 2 步:部署脚本和 SDK
将项目克隆到你的服务器上:
git clone https://github.com/lansepeach/Baidu-Backup.git
cd Baidu-Backup
然后,从官网下载 Python SDK,解压后将 openapi_client
文件夹整个复制到 Baidu-Backup
项目目录下。
第 3 步:安装依赖并配置
安装脚本所需的 Python 库:
pip install requests tqdm
或者
apt install -y python3-tqdm
然后,打开 backup_script.py
文件,修改顶部的配置区:
# 要备份的本地目录
LOCAL_DIR = "/var/www/my_website"
# 上传到网盘的目录
REMOTE_DIR = "/apps/你的应用名称/server_backups"
# 最多保留几份备份 (设置为0则全部保留)
MAX_BACKUPS = 7
最后,也是最重要的一步,设置环境变量:
export BAIDU_APP_KEY="你的AppKey"
export BAIDU_SECRET_KEY="你的SecretKey"
提示:为了让这个设置永久生效,建议将这两行命令添加到
~/.bashrc
或~/.profile
文件中。
第 4 步:启动!
万事俱备,让我们运行脚本:
python3 backup_script.py
首次运行,它会给你一个 URL。请在浏览器中打开它,登录并授权。然后将授权成功后页面上显示的 code
码粘贴回终端。
搞定!你的第一次备份已经开始了。从现在起,baidu_token.json
文件会自动生成,你的授权之旅正式开启。
⏰ 让它成为你的 7x24 小时数据卫士
当然,我们还需要让它每天自动执行。使用 crontab
设置一个定时任务是最佳选择。
# 编辑 crontab
crontab -e
# 添加下面这行,设置每天凌晨3点自动备份
0 3 * * * /usr/bin/python3 /path/to/your/Baidu-Backup/backup_script.py >> /var/log/backup.log 2>&1
现在,你可以高枕无忧了。你的数据正在被安全、可靠、智能地备份着。
🌟 写在最后
Baidu-Backup
是我出于解决自身痛点而开发的项目,它凝聚了我对自动化运维的思考和实践。现在,我将它开源,希望能帮助到更多像我一样的人。
如果你觉得这个项目对你有帮助,欢迎在 GitHub 上给我一个 Star ⭐!
项目地址: https://github.com/lansepeach/Baidu-Backup
如果你在使用中遇到任何问题,或者有任何绝妙的想法,都欢迎在 Issues 中提出来。让我们一起把它变得更好!
标签: Python
, 百度网盘
, 自动备份
, 服务器运维
, Linux
, 开源项目
, GitHub
, Shell脚本
Comments | Nothing