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

自动化备份方案

背景说明

网上有很多教程,写的都是从零搭建一个什么什么,基本上都是从无到有的教程,但是,很少有文章提及搭建好之后如何备份,这次通过请教GitHub Copilot Chat,生成几个备份脚本,以备后用。

:本文涉及的所有脚本默认仅针对Linux环境。

备份MySQL

#!/bin/bash# Set the database name, backup directory, host, username, and password
database="<database>"
backup_directory="<backup_directory>"
host="<host>"
username="<username>"
password="<password>"# Create the backup directory if it doesn't exist
mkdir -p $backup_directory# Create a timestamped backup file name
backup_file="$backup_directory/$database-$(date +%Y-%m-%d-%H-%M-%S).sql"# Backup the database to the backup file
mysqldump -h $host -u $username -p$password $database > $backup_file# Delete backups older than 7 days
find $backup_directory -type f -name "$database-*.sql" -mtime +7 -deleteecho $backup_file

备份SQLite

#!/bin/bash# Set the database file path and backup directory
database="<database>"
backup_directory="<backup_directory>"# Create the backup directory if it doesn't exist
mkdir -p $backup_directory# Create a timestamped backup file name
backup_file="$backup_directory/$(basename $database)-$(date +%Y-%m-%d-%H-%M-%S).db"# Backup the database to the backup file using SQLite's .backup command
sqlite3 $database ".backup $backup_file"# Delete backups older than 7 days
find $backup_directory -type f -name "*.db" -mtime +7 -deleteecho $backup_file

备份目录

#!/bin/bash# Set the directory to backup and backup directory
directory="<directory>"
backup_directory="<backup_directory>"# Create the backup directory if it doesn't exist
mkdir -p $backup_directory# Create a timestamped backup file name
backup_file="$backup_directory/$(basename $directory)-$(date +%Y-%m-%d-%H-%M-%S).tar.gz"# Backup the directory to the backup file
tar -czf $backup_file $directory# Delete backups older than 7 days
find $backup_directory -type f -name "*.tar.gz" -mtime +7 -deleteecho $backup_file

上传至对象存储

因为平时腾讯云用的比较多,对腾讯云的产品比较熟悉,所以这里就以腾讯云的对象存储为例。

#!/bin/bashread fileprefix=$1
bucket=$2coscli cp $file "cos://$bucket/$prefix/$(basename $file)"

COSCLI 是腾讯云对象存储(Cloud Object Storage,COS)提供的客户端命令行工具。具体安装、配置参考官方文档。当然也可以选择s5cmd这种兼容s3协议的客户端,支持各家对象存储。

划重点

上面的内容看起来平平无奇,我主要想说的是最后这一段。

上文中的备份脚本有个细节,最后会输出备份文件的路径,目的是为了结合最后一个脚本上传至对象存储。

整体使用逻辑是:备份脚本分别写,上传脚本共用同一个。

这里以备份 /data/test/目录至对象存储的/test/路径下为示例说明具体使用:

backup.sh

#!/bin/bashdirectory="/data/test"
backup_directory="/data/backup/test"
mkdir -p $backup_directory
backup_file="$backup_directory/$(basename $directory)-$(date +%Y-%m-%d-%H-%M-%S).tar.gz"
cd $directory
tar -czf $backup_file .
find $backup_directory -type f -name "*.tar.gz" -mtime +7 -delete
echo $backup_file

upload.sh

#!/bin/bashread fileprefix=$1
bucket=$2coscli cp $file "cos://$bucket/$prefix/$(basename $file)"

备份命令如下:

./backup.sh | ./upload.sh test temp

结合crontab就可以实现定时备份了。

另外,对于对象存储上的内容,可以设置生命周期,自动删除旧的备份。如下图(腾讯的对象存储为例),设置了备份保留30天。

在这里插入图片描述

http://www.lryc.cn/news/143361.html

相关文章:

  • win11出现安全中心空白和IT管理员已限制对此应用的某些区域的访问
  • github实用指令(实验室打工人入门必备)
  • 6. 激活层
  • AIGC ChatGPT 制作地图可视化分析
  • 2023-08-24 LeetCode每日一题(统计参与通信的服务器)
  • 前端实习day35
  • Linux安装jupyter notebook
  • 【猿灰灰赠书活动 - 03期】- 【RHCSA/RHCE 红帽Linux认证学习指南(第7版) EX200 EX300】
  • 当 Tubi 遇到 Ruby
  • 【C++从0到王者】第二十四站:多态的底层原理
  • Java从入门到精通24==》数据库、SQL基本语句、DDL语句
  • 学习ts(十)装饰器
  • 如何在 Opera 中启用DNS over HTTPS
  • STM32 F103C8T6学习笔记13:IIC通信—AHT10温湿度传感器模块
  • QT基础使用:组件和代码关联(信号和槽)
  • TCP最大连接数问题总结
  • 【Docker】云原生利用Docker确保环境安全、部署的安全性、安全问题的主要表现和新兴技术产生
  • explain各个字段代表的意思
  • 【已解决】Windows10 pip安装报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x98
  • goland 中的调试器 -- Evaluate
  • 你知道公司内部维基到底有哪些功能吗
  • netdata监控服务器主机(包括Docker容器)
  • Mybatis学习|第一个Mybatis程序
  • 计算机网络MTU和MSS的区别
  • redis学习笔记 - 进阶部分
  • SE5 - BM1684 人工智能边缘开发板入门指南 -- 模型转换、交叉编译、yolov5、目标追踪
  • 基于Java+SpringBoot+vue前后端分离英语知识应用网站设计实现
  • vue使用vue-router报错
  • 编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。
  • js 类、原型及class