一行导入式Python项目实验备份工具
Project description
FastBackup ⚡
一行导入式Python项目实验备份工具
再也不用担心忘记上次的实验参数了!
🤔 为什么需要 FastBackup?
作为一个经常跑实验的开发者,你是否遇到过这些痛点:
- 🔄 "这次实验用的什么参数来着?"
- 😅 "上次的学习率是0.001还是0.01?"
- 😰 "改了一堆参数,结果还不如之前的版本..."
- 🤦♂️ "想回到上周的配置,但是记不清改了什么..."
FastBackup 一行代码解决所有问题!
🚀 特点
- 🎯 零配置: 只需一行导入,无需任何配置文件
- 💾 智能备份: 只在文件真正变化时才创建备份,避免重复
- 📁 自动检测: 智能识别项目根目录,无需手动指定路径
- 🔍 完整历史: 保留所有备份记录,支持一键恢复
- 🏃♂️ 超轻量: 纯Python标准库实现,零外部依赖
- 🛡️ 安全无忧: 本地存储,自动忽略git,不会泄露代码
📦 安装
pip install fastbackup
🎯 使用方法
最简单的使用 - 一行导入
在你的Python脚本开头添加这一行:
import fastbackup # 🎉 就这么简单!
# 你的实验代码
def train_model():
learning_rate = 0.001 # 这次用0.001
batch_size = 32 # 批次大小32
epochs = 100 # 训练100轮
# 模型训练代码...
model = create_model()
optimizer = Adam(lr=learning_rate)
for epoch in range(epochs):
# 训练逻辑...
pass
if __name__ == "__main__":
train_model()
就是这样! 每次运行脚本时,FastBackup会:
- ✅ 自动检测你的项目目录
- ✅ 智能判断是否有文件变化
- ✅ 只在需要时创建备份
- ✅ 在项目根目录创建
.fastbackup文件夹存储备份
📁 备份位置示例
假设你的项目结构:
my_experiment/
├── train.py # 你在这里 import fastbackup
├── model.py
├── config.py
└── utils.py
运行后自动创建:
my_experiment/
├── train.py
├── model.py
├── config.py
├── utils.py
├── .fastbackup/ # 🆕 备份目录
│ ├── backup_20240310_143022/ # 第一个版本
│ │ ├── train.py
│ │ ├── model.py
│ │ ├── config.py
│ │ ├── utils.py
│ │ └── backup_info.json
│ ├── backup_20240310_150134/ # 修改参数后的版本
│ │ └── ...
│ └── backup_20240311_091245/ # 今天的版本
│ └── ...
└── .gitignore # 🆕 自动更新
🔍 查看备份历史
命令行方式
$ fastbackup --list
📋 FastBackup 历史记录 (5 个备份):
------------------------------------------------------------
1. 2024-03-11 09:12:45 | 4 文件 | backup_20240311_091245
2. 2024-03-10 16:30:22 | 4 文件 | backup_20240310_163022
3. 2024-03-10 15:01:34 | 4 文件 | backup_20240310_150134
4. 2024-03-10 14:30:22 | 4 文件 | backup_20240310_143022
5. 2024-03-09 18:45:11 | 4 文件 | backup_20240309_184511
Python代码方式
import fastbackup
fastbackup.list_backups()
🎮 恢复备份
当你发现新版本效果不好,想回到之前的版本:
命令行恢复
$ fastbackup --restore backup_20240310_143022
🔄 恢复备份: backup_20240310_143022
✅ train.py
✅ model.py
✅ config.py
✅ utils.py
✨ 恢复完成! 共恢复 4 个文件
Python代码恢复
import fastbackup
fastbackup.restore("backup_20240310_143022")
🎯 实际使用场景
场景1:深度学习调参
import fastbackup
# Week 1: Baseline
learning_rate = 0.001
batch_size = 32
# Result: 85% accuracy
# Week 2: 尝试更大的学习率
learning_rate = 0.01 # 修改这里
batch_size = 32
# Result: 82% accuracy (更差了)
# Week 3: 回到baseline,尝试更大的batch size
learning_rate = 0.001 # 恢复baseline
batch_size = 64 # 只改这个
# Result: 87% accuracy (更好了!)
每次修改都会自动备份,你可以随时对比和恢复任何版本!
场景2:机器学习特征工程
import fastbackup
def preprocess_data():
# V1: 基础预处理
normalize = True
remove_outliers = False
feature_scaling = "standard"
# V2: 加上异常值处理
# remove_outliers = True # 效果提升2%
# V3: 尝试不同的缩放方法
# feature_scaling = "minmax" # 效果下降了
场景3:Web开发配置调试
import fastbackup
# 数据库配置实验
DATABASE_CONFIG = {
"pool_size": 10, # 连接池大小
"timeout": 30, # 超时时间
"retry_times": 3, # 重试次数
}
# API限流配置
RATE_LIMIT = {
"requests_per_minute": 100,
"burst_size": 20,
}
📊 运行时输出示例
$ python train.py
💾 FastBackup: 创建备份 backup_20240311_091245 (4 个文件)
Starting training...
Epoch 1/100: loss=0.45, accuracy=0.82
...
$ python train.py # 没有修改文件
🔄 FastBackup: 使用现有备份 backup_20240311_091245
Starting training...
...
🛠️ 高级功能
手动触发备份
import fastbackup
# 在关键节点手动备份
fastbackup.backup()
print("重要版本已备份!")
跨项目查看备份
import fastbackup
# 查看其他项目的备份
fastbackup.list_backups("/path/to/another/project")
# 恢复其他项目的备份
fastbackup.restore("backup_name", "/path/to/another/project")
命令行工具
# 查看版本
fastbackup --version
# 查看帮助
fastbackup --help
# 指定项目路径
fastbackup --list --project /path/to/project
🔧 配置说明
FastBackup 采用零配置设计,但你可以了解它的行为:
- 备份位置: 项目根目录的
.fastbackup/文件夹 - 备份内容: 只备份
.py文件 - 忽略目录: 自动跳过
.git、__pycache__、venv、node_modules等 - 变化检测: 基于文件MD5哈希,确保准确检测变化
- Git集成: 自动将
.fastbackup/添加到.gitignore
🚫 不会备份的内容
- 数据文件 (
.csv,.json,.txt等) - 模型权重 (
.pth,.h5,.ckpt等) - 虚拟环境 (
venv/,env/,.venv/) - Git目录 (
.git/) - 缓存文件 (
__pycache__/,.pytest_cache/) - 依赖目录 (
node_modules/)
🤝 贡献指南
我们欢迎所有形式的贡献!
报告问题
如果你遇到bug或有功能建议,请创建一个Issue。
❓ 常见问题
Q: 会影响程序运行速度吗?
A: 几乎不会。FastBackup采用智能检测,只在文件真正变化时才执行备份操作,通常耗时不超过几毫秒。
Q: 备份会占用很多空间吗?
A: 通常不会。只备份.py文件,而且可以定期清理旧备份。一个中型项目的备份通常只有几MB。
Q: 支持哪些Python版本?
A: Python 3.6+ 都支持,无外部依赖。
Q: 可以在生产环境使用吗?
A: FastBackup主要为开发和实验设计。在生产环境建议使用专业的版本控制和部署工具。
Q: 如何删除旧备份?
A: 直接删除 .fastbackup/ 目录下的对应文件夹即可,或者我们计划在未来版本中添加自动清理功能。
📜 许可证
本项目采用 MIT 许可证。详见 LICENSE 文件。
🎉 致谢
感谢所有为这个项目做出贡献的开发者!
如果 FastBackup 帮到了你,请给我们一个 ⭐ 星标!
Made with ❤️ by developers, for developers.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fastbackup-1.0.3.tar.gz.
File metadata
- Download URL: fastbackup-1.0.3.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2babcfec98045306126669448e1109ac709f3b1d63f529700c89ec4f5b7a53f3
|
|
| MD5 |
2c4c6d7efa0d7d0329177007cd47a10d
|
|
| BLAKE2b-256 |
aa7bd6b2542a636d4a72213ccea7ef806294cf4e50fdc91d836cd70cceb34759
|
File details
Details for the file fastbackup-1.0.3-py3-none-any.whl.
File metadata
- Download URL: fastbackup-1.0.3-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3537fad7cd2f2a1cde6a37d86cc4652a95489a3dc5071e5ece905ed317dba1d
|
|
| MD5 |
3485006d9593b0be0a07388af27b0e5f
|
|
| BLAKE2b-256 |
9d4054ff24e78ff330fee4222f1732bf00dd96489545b4bf785323f1d4da2d7d
|