当前位置: 首页 > news >正文

Shell脚本定时备份数据库目录到远程服务器,并保留指定数量的备份

1. 备份需求

        Shell脚本每天定时复制数据库目录到远程服务器,但是复制的备份时间都是数据库目录创建的时间,不是执行脚本的时间,那如何保留最近7个备份。

2. 解决方案

        核心思路是:在备份时主动为文件或目录打上当前时间戳,然后基于此时间戳实施保留策略。无需依赖文件系统的创建时间,而是通过脚本逻辑来管理。

3. 完整脚本

#!/bin/bash
# 数据库目录备份脚本(解决时间戳问题,保留最近7个备份)# --- 配置参数 ---
BACKUP_SRC="/mnt/postgresql/data"          # 请修改为您的数据库实际目录
BACKUP_BASE="/mnt/pg_bak"                 # 本地备份存放的基目录
REMOTE_SERVER="root@192.168.0.149"        # 远程服务器地址
REMOTE_PATH="/data/postgresql_bak_192.168.0.118"               # 远程服务器上的备份路径
BACKUP_COUNT=7                           # 要保留的备份份数
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_NAME="db_backup_${TIMESTAMP}"# --- 开始备份 ---
echo "$(date) 开始备份数据库..."# 创建本地带时间戳的备份目录
mkdir -p "${BACKUP_BASE}/${BACKUP_NAME}"
if [ $? -ne 0 ]; thenecho "错误:无法创建本地备份目录 ${BACKUP_BASE}/${BACKUP_NAME}"exit 1
fi# 复制数据(假设您有权限停止/锁定数据库后再复制,或数据库支持热备)
# 重要:为确保数据一致性,在复制前可能需要暂停数据库写入或使用数据库自带工具创建快照
cp -a "${BACKUP_SRC}"/* "${BACKUP_BASE}/${BACKUP_NAME}/" 2>/dev/null
if [ $? -eq 0 ]; thenecho "本地数据复制完成:${BACKUP_BASE}/${BACKUP_NAME}"
elseecho "错误:数据复制失败,请检查权限和路径"exit 1
fi# --- 同步到远程服务器 ---
echo "开始同步到远程服务器..."
rsync -avz --delete "${BACKUP_BASE}/${BACKUP_NAME}" "${REMOTE_SERVER}:${REMOTE_PATH}/"
if [ $? -eq 0 ]; thenecho "远程同步成功。"
elseecho "警告:远程同步可能存在问题。"
fi# --- 清理旧备份(保留最近7份)---
echo "清理本地旧备份(保留最新的 ${BACKUP_COUNT} 份)..."
cd "${BACKUP_BASE}"
# 列出所有备份目录并按时间倒序排序,删除第8个(含)之后的所有旧备份
ls -dt db_backup_*/ 2>/dev/null | tail -n +$((${BACKUP_COUNT} + 1)) | xargs -I {} rm -rf {}echo "清理远程旧备份..."
ssh "${REMOTE_SERVER}" "cd \"${REMOTE_PATH}\" && ls -dt db_backup_*/ 2>/dev/null | tail -n +$((${BACKUP_COUNT} + 1)) | xargs -I {} rm -rf {}"echo "$(date) 备份流程全部完成。当前备份:${BACKUP_NAME}"

4. 配置定时任务

vim   /etc/crontab

crontab  -e

http://www.dtcms.com/a/598640.html

相关文章:

  • style wordpress 主题企业网站优化咨询
  • 做一个手机购物网站多少钱3合1网站建设价格
  • 导航网站帝国cms模版关于申请建设门户网站的
  • 构建AI智能体:九十一、大模型三大适应技术详解:有监督微调、提示学习与语境学习
  • Linux下如何使用git工具
  • 朋友给我做网站网站解封原因
  • Android 协程间通信
  • 网站建设速度如何解决沧州做网络推广的平台
  • 网站建设系统 网站自助建站系统平湖网站制作
  • asp伪静态网站如何做筛选网站如何做微信支付宝支付宝支付接口
  • 温州苍南网站建设上海十大猎头公司排名
  • 在家做的手工活哪里有网站郑州短视频拍摄制作
  • 做网站好做网站公司职员工资
  • 线程不是独立的!而是同步的!
  • 招商加盟网站推广方案济南做网站要多少钱
  • 做网站apache如何网站建设找超速云建站
  • 网站关联页面如何做大连网龙网络科技
  • 网站推广策划的思路包括哪些内容中国黄页
  • LeetCode hot100:234 回文链表:快慢指针巧判回文链表
  • 合肥网站建设方案服务营销网站搭建建议
  • 【python】生成器
  • 昆明展示型网站开发网站添加百度地图导航
  • 网站地图什么时候提交好广州网站建设推广方法
  • python的网站开发免费软件库下载
  • 阿里云服务器创建网站吗动漫制作专业用什么笔记本电脑
  • 若依 springBoot 配置国际化
  • 十年经验网站开发公司安阳市商祺网络有限责任公司
  • 网络初识~
  • 织梦怎么做中英文网站做网站只做前端可以用吗
  • C 语言17:位操作符 | ^:从二进制编码到大小端