资讯动态

Python自动备份脚本实战:数据不丢,代码不慌

发布时间:2026/10/9 18:57:28 来源:尧图企业网站定制
前言数据丢了才想起来备份服务器宕机、误删文件、数据库清空这些事故每天都在发生。备份这件事手动做容易忘忘了就出事。**让脚本每天自动备份是最省心的方案。**今天分享一套Python自动备份脚本数据库、文件、配置一键打包定时自动执行留存最近N份磁盘不爆。—## 一、备份要备份什么-数据库网站/项目的核心数据-重要文件配置、代码、文档-服务器配置nginx、面板设置等思路每天定时打包 → 存到备份目录 → 只保留最近N份 → 可选上传云端。—## 二、核心备份脚本pythonimport shutilimport subprocessimport datetimeimport os# 备份目录BACKUP_DIR /root/backups# 要备份的文件/目录TARGETS [ /root/site, # 网站代码 /etc/nginx, # nginx配置]# 数据库信息DB_NAME myappDB_USER rootDB_PASS 你的数据库密码# 保留最近几份KEEP 7def backup_files(): 打包文件 date datetime.datetime.now().strftime(%Y%m%d_%H%M) archive os.path.join(BACKUP_DIR, ffiles_{date}.tar.gz) os.makedirs(BACKUP_DIR, exist_okTrue) for target in TARGETS: subprocess.run([tar, -czf, archive, target], checkTrue) return archivedef backup_db(): 备份数据库 date datetime.datetime.now().strftime(%Y%m%d_%H%M) dump os.path.join(BACKUP_DIR, fdb_{date}.sql) cmd fmysqldump -u{DB_USER} -p{DB_PASS} {DB_NAME} {dump} subprocess.run(cmd, shellTrue, checkTrue) return dumpdef cleanup(): 清理旧备份只保留最近K份 files sorted(os.listdir(BACKUP_DIR)) while len(files) KEEP: os.remove(os.path.join(BACKUP_DIR, files.pop(0)))if __name__ __main__: backup_files() backup_db() cleanup() print(f备份完成保留最近{KEEP}份)核心逻辑打包 → 导库 → 清理三步搞定。—## 三、配置定时任务bashcrontab -e每天凌晨备份一次0 2 * * * cd /root python3 backup.py backup.log 21凌晨2点自动备份早上起来看日志确认。—四、进阶备份到云端本地备份不够稳服务器挂了本地也没了加一步上传云端pythonimport boto3 # 或使用其他云存储SDKdef upload_to_cloud(local_file): # 示例上传到对象存储 client boto3.client(s3) client.upload_file(local_file, my-backup-bucket, os.path.basename(local_file))云端留一份双保险。—## 五、注意事项1.先手动跑一遍确认备份文件能正常生成、能正常恢复2.定期测试恢复备份再漂亮恢复不了等于白备3.密码别写死在脚本里用环境变量或配置文件管理—## 六、写在最后备份脚本的价值是出事那天才知道的。配置一次每天自动执行留存最近7份云端再存一份。从此数据不丢不是口号是脚本在帮你兜底。服务器2核2G就够跑云厂商官网新用户都有优惠活动几十块一年。有问题评论区交流关注我自动化脚本系列持续更新。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑