首页/新闻资讯/正文详情

基于 Shell 的本地数据库一键备份与恢复

发布时间:2026/9/27 8:45:22 来源:云帆数科 栏目:资讯中心
基于 Shell 的本地数据库一键备份与恢复
基于 Shell 的本地数据库一键备份与恢复在日常全栈开发与生产运维中数据库数据的安全性是悬在所有工程师头顶的达摩克利斯之剑本地执行测试脚本时不小心DROP掉了一张重要的数据表生产环境执行版本升级前需要对当前线上数据库做一次秒级的快照备份需要快速将生产环境的脱敏数据一键同步到本地开发环境进行复杂 Bug 复现。很多团队依赖庞大复杂的第三方备份 SaaS 工具配置繁琐且存在网络权限暴露的风险。用不到 30 行纯净严谨的 Bash Shell 脚本配合 Docker 原生命令我们可以打造一套秒级备份、自动 gzip 压缩、支持一键全量恢复的极简数据库容灾工具。极简备份脚本实现scripts/db-backup.sh#!/bin/bash set -euo pipefail # 基础配置 CONTAINER_NAMEstar-postgres DB_USERstar_dev DB_NAMEstar_app BACKUP_DIR./.backups/db TIMESTAMP$(date %Y%m%d_%H%M%S) BACKUP_FILE${BACKUP_DIR}/backup_${DB_NAME}_${TIMESTAMP}.sql.gz mkdir -p ${BACKUP_DIR} echo 正在执行数据库 [${DB_NAME}] 全量快照备份... # 1. 导出数据并实时通过 gzip 压缩 docker exec ${CONTAINER_NAME} pg_dump -U ${DB_USER} ${DB_NAME} | gzip ${BACKUP_FILE} FILE_SIZE$(ls -lh ${BACKUP_FILE} | awk {print $5}) echo ✅ 备份成功备份文件: ${BACKUP_FILE} (体积: ${FILE_SIZE}) # 2. 自动清理机制本地仅保留最近 10 次历史备份防止撑爆磁盘 echo 正在清理超过 10 个的陈旧备份快照... ls -t ${BACKUP_DIR}/backup_*.sql.gz | tail -n 11 | xargs -I {} rm -- {} 2/dev/null || true echo ✨ 备份收尾完毕极简一键恢复脚本实现scripts/db-restore.sh当发生误操作或需要回滚到特定快照时执行一键恢复#!/bin/bash set -euo pipefail CONTAINER_NAMEstar-postgres DB_USERstar_dev DB_NAMEstar_app BACKUP_DIR./.backups/db # 检查是否存在备份文件 LATEST_BACKUP$(ls -t ${BACKUP_DIR}/backup_*.sql.gz 2/dev/null | head -n 1 || true) if [ -z ${LATEST_BACKUP} ]; then echo ❌ 错误: 未在 ${BACKUP_DIR} 中找到任何可用的备份文件 exit 1 fi TARGET_FILE${1:-$LATEST_BACKUP} echo ⚠️ [高危警告] 即将使用快照 [${TARGET_FILE}] 覆盖当前数据库 [${DB_NAME}] read -p 确认继续执行覆盖恢复吗(y/N): confirm if [[ ! $confirm ~ ^[yY]$ ]]; then echo 操作已取消。 exit 0 fi echo 正在执行解压与全量数据库恢复... # 1. 终止已有活动连接防止锁冲突 docker exec ${CONTAINER_NAME} psql -U ${DB_USER} -d postgres -c \ SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname ${DB_NAME} AND pid pg_backend_pid(); /dev/null # 2. 重建干净数据库并导入 docker exec ${CONTAINER_NAME} psql -U ${DB_USER} -d postgres -c DROP DATABASE IF EXISTS ${DB_NAME}; /dev/null docker exec ${CONTAINER_NAME} psql -U ${DB_USER} -d postgres -c CREATE DATABASE ${DB_NAME}; /dev/null gunzip -c ${TARGET_FILE} | docker exec -i ${CONTAINER_NAME} psql -U ${DB_USER} -d ${DB_NAME} /dev/null echo 数据库恢复成功数据已完全还原至快照时间点。生产集成与定时任务Crontab在生产服务器上只需在crontab -e中配置一行定时任务# 每天凌晨 03:00 自动执行一次数据库冷备 0 3 * * * /bin/bash /opt/star-app/scripts/db-backup.sh /var/log/db_backup.log 21配合rclone或云厂商 CLI可顺手将压缩包同步至跨区域的云存储冷归档中每月存储成本不到 1 块钱。总结真正的安全感来自于底层的极简与可控。不到 30 行纯粹的 Shell 脚本把数据库备份与灾难恢复做到极致轻量、透明可靠。

相关推荐

WordPress识别移动性能优化:3步解决加载慢痛点
WordPress识别移动性能优化:3步解决加载慢痛点

WordPress识别移动性能优化:3步解决加载慢痛点 找建站公司时,最怕听到“这个功能要加钱”或者“服务器得换更贵的”。很多老板觉得,只要把网站做漂亮就行,结果上线后手机打开慢得像蜗牛,客户还没看清价格就关掉了页面。这种体验,比直接不建网… · 2026/9/27 8:45:22

ZK-Rollup 的哈希参数各不相同,EVM 凭什么一个预编译接住?拆解 EIP-5988 Poseidon 预编译
ZK-Rollup 的哈希参数各不相同,EVM 凭什么一个预编译接住?拆解 EIP-5988 Poseidon 预编译

ZK-Rollup 的哈希参数各不相同,EVM 凭什么一个预编译接住?拆解 EIP-5988 Poseidon 预编译 【免费下载链接】EIPs The Ethereum Improvement Proposal repository 项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs EIP-5988 是 EIPs 仓库里… · 2026/9/27 8:45:22

利用 Docker 搭建私有轻量跨设备剪贴板同步中心:RustDesk 与微剪贴板实践
利用 Docker 搭建私有轻量跨设备剪贴板同步中心:RustDesk 与微剪贴板实践

利用 Docker 搭建私有轻量跨设备剪贴板同步中心:RustDesk 与微剪贴板实践在日常居家多端协同(MacBook 笔记本、Windows 台式机、Linux 树莓派、iPad 平板与手机)中,跨设备文本与链接流转是一个每隔 5 分钟就要发生一次的高频动作&… · 2026/9/27 8:45:16

米拓cms可以做企业网站吗?一文搞懂避坑指南
米拓cms可以做企业网站吗?一文搞懂避坑指南

米拓cms可以做企业网站吗?一文搞懂避坑指南 网站做好了没人访问,这大概是很多老板和项目经理最头疼的噩梦。钱花了,时间耗了,结果打开后台一看,流量惨淡,转化率更是惨不忍睹。很多人第一反应是推广没做好,但在我看来,80%的问题出在建站初期——… · 2026/9/27 11:09:43

5类建站方案对比评测:网站是否需要备案全解析
5类建站方案对比评测:网站是否需要备案全解析

5类建站方案对比评测:网站是否需要备案全解析 还在为选好的模板网站太丑、功能又不够用而头疼?别急着加钱改代码,先搞清楚一个更根本的问题:你的网站到底 网站是否需要备案… · 2026/9/27 11:09:37

高精度数字式频率计数器与时频精准测试一体化方案解析
高精度数字式频率计数器与时频精准测试一体化方案解析

频率计数器这个工具,在时频测量领域其实是最基础的仪器之一。很多人一听到“频率计数器”,第一反应是“老古董”,觉得现在随便一台示波器、频谱仪都能看频率,何必单独配一台计数器。但真正做过高精度时频测试的人会明白&#xff0… · 2026/9/27 11:09:37

基于微信小程序的健身房预约系统-附源码
基于微信小程序的健身房预约系统-附源码

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台… · 2026/9/27 11:09:31

JSON:API 实战示例:Sparse Fieldsets、分页链接与错误对象完整指南
JSON:API 实战示例:Sparse Fieldsets、分页链接与错误对象完整指南

后端API设计 【免费下载链接】json-api A specification for building JSON APIs 项目地址: https://gitcode.com/gh_mirrors/js/json-api 点击查看 免费下载 导读 本文围绕 examples/index.md 中提供的官方实战示例,系统讲解 JSON:API 规范&#xff0… · 2026/9/27 11:09:25

YuE2 零样本翻唱完整指南:录音转旋律谱,换风格重制一首歌
YuE2 零样本翻唱完整指南:录音转旋律谱,换风格重制一首歌

YuE2 零样本翻唱完整指南:录音转旋律谱,换风格重制一首歌 【免费下载链接】YuE YuE2: frontier music generation with symbolic planning, zero-shot covers, and agentic music editing. 项目地址: https://gitcode.com/GitHub_Trending/yue/YuE … · 2026/9/27 11:09:25

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码