带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:
-
[可选] 服务卸载
- Mac/Linux:
./backup-x -s uninstall
- Win(打开cmd):
.\backup-x.exe -s uninstall
- Mac/Linux:
- 登录 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, 这中间或许也存在着不足,希望可以得到大家的理解和建议。如有侵权联系小编!