Web界面加持!数据库备份神器,助你轻松备份数据!

带Web界面的数据库/文件备份增强工具。原理:执行自定义shell命令输出文件,增强备份功能。同时支持: 文件、mysql、postgres...

  •  支持自定义命令
  •  支持执行shell输出的文件备份,原理上支持各种数据库/文件备份
  •  支持备份周期设置,几分钟到一年的备份周期也可以
  •  支持多个项目备份,最多16个
  •  支持备份后的文件另存到对象存储中 (在也不怕删库跑路了)
  •  可设置备份文件最大保存天数
  •  webhook通知
  •  支持加密关键信息(v1.3.0+)

docker中使用

  • 运行docker容器(/opt/backup-x-files可替换为主机的目录)
    # 默认启动rclone的配置会保存到/app/backup-x-files/rclone/rclone.conf:
    
    docker run -d --name backup-x --restart=always \-p 9977:9977 \-v /opt/backup-x-files:/app/backup-x-files \jeessy/backup-x
  • 登录 http://your_docker_ip:9977 并配置
  • docker容器默认安装default-mysql-client/postgres-client/s3sync/rclone/wget/curl/minio mc

系统中使用

  • 下载并解压https://github.com/jeessy2/backup-x/releases

  • 安装服务

    • Mac/Linux: ./backup-x -s install
    • Win(打开cmd): .\backup-x.exe -s install
    • 自定义参数 ./backup-x -s install -l 127.0.0.1:9977 -d /Users/name
      • -l 监听地址(默认监听:9977
      • -d 自定义备份目录地址(默认当前运行目录)
  • [可选] 服务卸载

    • Mac/Linux: ./backup-x -s uninstall
    • Win(打开cmd): .\backup-x.exe -s uninstall
  • 登录 http://127.0.0.1:9977 并配置


 备份脚本参考

  • postgres

    说明备份脚本
    备份单个PGPASSWORD="#{PWD}" pg_dump --host 127.0.0.1 --port 5432 --dbname name --user postgres --create --file #{DATE}.sql
    备份全部PGPASSWORD="#{PWD}" pg_dumpall --host 127.0.0.1 --port 5432 --user postgres --create --file #{DATE}.sql
    还原psql -U postgres -f 2021-11-12_10_29.sql
    还原指定psql -U postgres -d name -f 2021-11-12_10_29.sql
  • mysql/mariadb

    说明备份脚本
    备份单个mysqldump -h127.0.0.1 -uroot -p#{PWD} name > #{DATE}.sql
    备份全部mysqldump -h127.0.0.1 -uroot -p#{PWD} --all-databases > #{DATE}.sql
    还原mysql -uroot -p123456 name < 2021-11-12_10_29.sql
  • 文件

  • 备份对象存储到对象存储 s3sync
s3sync --filter-not-exist \--sk source_key -ss #{PWD} --se https://s3.source.com \--tk #{AccessKey} --ts #{SecretKey} --te #{Endpoint} \s3://backup/ s3://#{BucketName}/
  • 备份本地文件到对象存储 s3sync
s3sync --fs-disable-xattr --filter-not-exist \--tk #{AccessKey} --ts #{SecretKey} --te #{Endpoint} \fs:///opt/test/ s3://#{BucketName}/test/

  • 变量说明
变量名说明
#{DATE}年-月-日_时_分
#{PWD}下方的密码变量
#{Endpoint}下方的对象存储变量 Endpoint
#{AccessKey}下方的对象存储变量 AccessKey
#{SecretKey}下方的对象存储变量 SecretKey
#{BucketName}下方的对象存储变量 BucketName

webhook

  • 支持webhook, 备份更新成功或不成功时, 会回调填写的URL

  • 支持的变量

    变量名说明
    #{projectName}项目名称
    #{fileName}备份后的文件名称
    #{fileSize}文件大小 (MB)
    #{result}备份结果(成功/失败)
  • RequestBody为空GET请求,不为空POST请求

  • Server酱: https://sc.ftqq.com/[SCKEY].send?text=#{projectName}项目备份#{result},文件名:#{fileName},文件大小:#{fileSize}

  • Bark: https://api.day.app/[YOUR_KEY]/#{projectName}项目备份#{result},文件名:#{fileName},文件大小:#{fileSize}

  • 钉钉:

    • 钉钉电脑端 -> 群设置 -> 智能群助手 -> 添加机器人 -> 自定义
    • 只勾选 自定义关键词, 输入的关键字必须包含在RequestBody的content中, 如:项目备份
    • URL中输入钉钉给你的 Webhook地址
    • RequestBody中输入 {"msgtype": "text","text": {"content": "#{projectName}项目备份#{result},文件名:#{fileName},文件大小:#{fileSize}"}}


效果演示

服务配置的用户名密码是进入9977端口之前的登录密码 

Webhook配置备份结果通知

备份文件的存储配置

 钉钉Webhook配置通知结果:

本地文件

 这是小编在开发学习使用和总结的小Demo,  这中间或许也存在着不足,希望可以得到大家的理解和建议。如有侵权联系小编!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2980014.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

面试二十、BST二叉排序树

静态查找表&#xff1a; 当有序表是静态的&#xff0c;即其内容在创建后不再发生变化&#xff0c;适合使用顺序表作为存储结构。顺序表通过数组实现&#xff0c;可以提供常数时间的随机访问&#xff0c;因此在静态情况下&#xff0c;适合顺序表存储&#xff0c;这样可以简化数据…

项目暂停和重启运行,命令如何实现?

要通过命令行实现项目的暂停和重启运行&#xff0c;可以使用以下步骤&#xff1a; 1.查找项目进程ID&#xff1a;首先&#xff0c;你需要找到正在运行项目的进程ID&#xff08;PID&#xff09;。你可以使用 ps 命令来查找正在运行的进程&#xff0c;例如&#xff1a; ps aux …

如何批量修改图片的尺寸?轻松教你批量修改图片尺寸!三个快速有简单的方法

一&#xff0c;引言 在现代社会中&#xff0c;随着数字技术的快速发展&#xff0c;图片已经成为了我们日常生活中不可或缺的一部分。无论是在社交媒体上分享生活点滴&#xff0c;还是在工作中展示产品、宣传品牌&#xff0c;图片都扮演着重要的角色。然而&#xff0c;很多时候…

实现Spring底层机制(三)

文章目录 阶段4—实现BeanPostProcessor机制1.文件目录2.初始化方法实现1.编写初始化接口InitializingBean.java2.MonsterService.java实现初始化接口3.容器中的createBean方法增加初始化逻辑&#xff0c;判断对象类型是否是InitializingBean的子类型&#xff0c;如果是&#x…

在电脑上安装Linux?有手就行!

文章目录 安装虚拟机管理软件VM下载centos镜像文件开始安装创建虚拟机打开虚拟机&#xff0c;开始安装程序安装启动程序测试光盘选择语言进行安装前的配置安装 安装后操作 安装虚拟机管理软件VM 官方正版VMware下载&#xff08;16 pro&#xff09;&#xff1a;https://www.ali…

探索亚马逊云科技「生成式 AI 精英速成计划」

目录 前言「生成式 AI 精英速成计划」技术开发课程学习课程学习 总结 前言 亚马逊云科技&#xff08;Amazon Web Services&#xff0c;简称AWS&#xff09;作为全球领先的云计算服务提供商&#xff0c;一直以来在推动人工智能&#xff08;AI&#xff09;领域的发展中扮演着重要…

服务器 BMC(基板管理控制器,Baseboard Management Controller)认知

写在前面 工作中遇到&#xff0c;简单整理博文内容涉及 BMC 基本认知理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的风景已经和从前不一样了。——村上春树 基板管理控制器&#xff08;BMC&…

rust 学习笔记(13-19)

13 迭代器与闭包 Rust 的设计灵感来源于很多现存的语言和技术。其中一个显著的影响就是 函数式编程&#xff08;functional programming&#xff09;。函数式编程风格通常包含将函数作为参数值或其他函数的返回值、将函数赋值给变量以供之后执行等等。 闭包&#xff08;Closu…

【学习】服务器解决:重新分配同样端口号后,连不上VScode

原来服务器分配的环境有问题&#xff0c;重新分配了一下。还是同样的端口号&#xff0c;Xshell和xftp能够连接上&#xff0c;但是VScode连接不上。 问题解决: 清除本地 SSH 缓存中与远程主机相关的条目可以通过编辑 known_hosts 文件来实现。这个文件包含了您曾经连接过的远程主…

API请求报错 Required request body is missing问题解决

背景 在进行调用的时候&#xff0c;加载方法&#xff0c;提示以下错误 错误信息如下&#xff1a; {"code": 10001,"msg": "Required request body is missing: XXX","data": null,"extra": null }Required request body…

2015NOIP普及组真题 3. 求和

线上OJ&#xff1a; 一本通&#xff1a;http://ybt.ssoier.cn:8088/problem_show.php?pid1971 核心思想&#xff1a; 本题的约束条件有两个&#xff1a; 条件1、colorx colorz 条件2、x、y、z的坐标满足 y − x z − y&#xff08;即 y 在 x 和 z 的中心位置&#xff09; …

ESP32学习第一天-ESP32点亮LED,按键控制LED状态,LED流水灯

第一天使用到的函数: 函数第一个参数设置哪一个引脚&#xff0c;第二个参数设置引脚模式。 pinMode(led_pin,OUTPUT); //设置引脚模式 函数的第一个参数设置哪一个引脚&#xff0c;第二个参数设置是高电平还是低电平。 digitalWrite(led_pin,HIGH);//将引脚电平拉高 #incl…

spring一二三级缓存和@Lazy解决循环依赖流程

简单对象指的是 实例化后还没有属性注入的时候的早期bean lambda表达式用于判断a是否存在aop代理 假如a和b循环依赖&#xff0c;a实例化时&#xff0c; bean创建流程如下&#xff1a; 0&#xff0c;创建一个set记录当前正在实例化的bean&#xff0c; 1.实例化a的简单对象时…

电脑问题快速判断

电脑开机没有任何反应 检查电源 检查电源是否有问题或损坏&#xff0c;可以短接方法检测 板电源卡口对自己接第四或第五根线&#xff0c;若风扇匀速转动&#xff0c;电源无问题&#xff0c;若不转动或转一下停一下&#xff0c;电源有问题 检查内部连线 确保主板上的线插的…

linux下编译c++程序报错“undefined reference to `std::allocator<char>::allocator()‘”

问题 linux下编译c程序报错“undefined reference to std::allocator::allocator()”。 原因 找不到c标准库文件。 解决办法 开始尝试给gcc指令添加-L和-l选项指定库路径和库文件名&#xff0c;但是一直不成功&#xff0c;后来把gcc改为g就可以了。

Google Play App Store API 获取谷歌安卓应用商城app数据接口

iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的谷歌安卓应用商城google play app store数据采集API&#xff0c;供用户按需调用。 接口使用详情请参考Google Play App Store接口文档 接口列表 1. 获取指定app的基础信息 参数类型是否必填默认值示例值描…

重磅发布 | 《网络安全专用产品指南》(第一版)

2017年6月1日&#xff0c;《中华人民共和国网络安全法》正式实施&#xff0c;明确规定“网络关键设备和网络安全专用产品应当按照相关国家标准的强制性要求&#xff0c;由具备资格的机构安全认证合格或者安全检测符合要求后&#xff0c;方可销售或者提供。国家网信部门会同国务…

【python】python学生信息管理系统 ——数据库版(源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

js进行数据移除性能比较(splice,map)

当使用 splice() 方法处理大量数据时&#xff0c;确实会遇到性能问题&#xff0c;因为它涉及到移动数组中的元素&#xff0c;导致操作的时间复杂度为 O(n)。对于大量数据&#xff0c;频繁的插入和删除可能会导致性能下降。 1、设置数组数据为10000&#xff0c;使用splice移除数…

MySQL从入门到高级 --- 2.DDL基本操作

文章目录 第二章&#xff1a;2.基本操作 - DDL2.1 数据库的常用操作创建数据库选择要操作的数据库删除数据库修改数据库编码 2.2 表结构的常用操作创建表格式查看当前数据库的所有表名称查看指定某个表的创建语句查看表结构删除表 2.3 修改表结构添加列修改列名和类型删除列修改…