Coder Social home page Coder Social logo

jeessy2 / backup-x Goto Github PK

View Code? Open in Web Editor NEW
332.0 332.0 61.0 335 KB

带Web界面的数据库/文件备份增强工具. A database/file backup tool with web interfaces

License: MIT License

Dockerfile 2.26% Makefile 1.05% Go 63.33% CSS 1.62% HTML 31.75%
backup file-backup mysql postgresql

backup-x's People

Contributors

fengyanlin avatar jeessy2 avatar langren1353 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

backup-x's Issues

support for pg_dump's parallel dump

如果在備份 postgresql 時,使用如下的指令
pg_dump -j 4 -F d -f out.dir dbname
由於輸出是個目錄,而不是檔案,所以回傳的檔案大小會出錯

這是備份完成後,log 看到的樣子

2022/12/08 17:00:40 成功备份项目: n2, 文件名: n2-2022-12-08_17_00
2022/12/08 17:00:40 Webhook调用成功, 返回数据: {"id":"VIHfGPevC0x1","time":1670490040,"event":"message","topic":"channel","message":"n2 _Backup_成功,backup_file: n2-2022-12-08_17_00,size: 0 MB"} 

可以發現 filesize 是 0 MB 但實際上備份是成功的

請考慮看看要怎麼修改如果用 parallel dump 的話,要怎麼呈現 backup filesize ?

中文字符乱码的问题

如果备份脚本里有涉及中文字符,会有乱码的情况,导致无法执行成功
image
我在Client里的backup.go文件中,shellString写入前进行了GBK转码,就能正常执行

encoder := simplifiedchinese.GBK.NewEncoder()
shellString, err = encoder.String(shellString)

image
另外还有个问题,shell.CombinedOutput()这段代码,获取的内容,中文字符会变成x开头的字符
image

feature:关键信息加密

已经在内网使用了一段时间,很稳定,点个👍🏻。不过用的过程发现了一些可以改进的地方。

  1. 数据库备份的时候,-p123456这样的方式过于粗暴,不够安全【表面的安全都没有】,是否考虑支持用户自定的{pwd}这样的占位符占位,然后在下面添加变量的形式来支持,这个变量输入后可以是*号。
  2. AccessKey SecretKey ,特别是后者,目前还是明文显示的,建议改为*号。
    背后还可以自定义或者默认一个加密key,通过启动的时候传入,页面背后显示的都是加密后的字段,运行的时候,再解密一次更好。

使用建议:保存(天)数是否可以改为保存最后几份(数量)?以及备份错误的再次执行?

感谢开发者,这是一个非常棒的软件!
不过恰巧最近服务器出了故障,所以在使用中我有两个疑问:

  1. 如果我设置保存(天)为30
    恰好这30天我的数据库无法链接
    第31天,之前的备份是不是依然保存?
    如果不保存,那将是灾难!(比如我备份HomeAssistant的数据库,但是我又比较懒:)不会每天都去检查HomeAssistant是否有提示数据库失联,但其实HomeAssistant也会正常运行,通过Homekit看不到数据库是否错误)
    为了规避我只能选择将保存天数设置更大,但是显然我的硬盘/对象存储可能会满,导致最新的又无法备份

  2. 当数据库无法链接时,备份文件为0字节,显然这样的备份是无效的,但是系统好像没有判断依然生成了这个文件,可以看出2点整备份的文件是0字节,这样不管是保存天数还是保存数量,都无法解决因数据崩溃而导致的没有备份的问题。

ls -lha

total 412M
drwxr-x--- 1 root root 200 Jun 3 17:31 .
drwxr-xr-x 1 root root 86 Jun 2 10:15 ..
-rw-r--r-- 1 root root 0 Jun 2 10:15 2023-06-02_10_15.sql
-rw-r--r-- 1 root root 205M Jun 2 10:27 2023-06-02_10_27.sql
-rw-r--r-- 1 root root 0 Jun 3 02:00 2023-06-03_02_00.sql
-rw-r--r-- 1 root root 207M Jun 3 17:31 2023-06-03_17_31.sql

所以这里是否可以更改为数量,而不是天数?再加上判断备份文件大小的逻辑?如果备份文件为0,多久后再重试?
谢谢!

web页面设计建议(原型)

我这边没有专门存储设备,所以希望可以scp发送备份文件至指定服务器,web端如果有汇总查看,方便运维巡检。因为超过7个备份任务,webhook看不过来,不清晰。
下面是我设计的页面,原型文件你需要的话,给我发邮件: [email protected]

备份-web页面设计-V1

执行的时候报错

2022/08/06 07:10:31 执行shell的输出为空
2022/08/06 07:10:31 项目 DB_backup 没有输出包含 2022-08-06_07_10 的文件名

11

日志报错。有空的话求解答一下。感谢

2022/08/07 14:39:38 创建bucket: bitwarden 失败, ERR: AuthorizationHeaderMalformed: The authorization header is malformed; the region 'cn-north-1' is wrong; expecting 'us-west-1' status code: 400, request id: YM99XBP7RK09C90Y, host id: +h+BAP06aNfoeFZu+g8lmPLj0DjTtTaDUJw+VReegiyjUF95EyPoaXbARFqBAVm99+kmlhJk+Mc=
2022/08/07 14:39:38 正在备份项目: bitwarden_backup ...
2022/08/07 14:39:38 bitwarden_backup项目将在10.3小时后运行
2022/08/07 14:39:38 bitwarden_backup 执行shell的输出: 鼠标移动此处查看
2022/08/07 14:39:38 执行备份shell失败: time='2022-08-07T14:39:38+08:00' level=info msg='Starting sync' time='2022-08-07T14:39:38+08:00' level=error msg='Sync error: pipeline step: 0 (ListSource) failed with error: stat /root/bitwarden/data/db.sqlite3: no such file or directory, terminating' time='2022-08-07T14:39:38+08:00' level=info msg='Pipeline step finished' ErrorObj=1 InputObj=0 InputObjSpeed=0 OutputObj=0 OutputObjSpeed=0 stepName=ListSource stepNum=0 time='2022-08-07T14:39:38+08:00' level=info msg='Pipeline step finished' ErrorObj=0 InputObj=0 InputObjSpeed=0 OutputObj=0 OutputObjSpeed=0 stepName=FilterObjectsExistNot stepNum=1 time='2022-08-07T14:39:38+08:00' level=info msg='Pipeline step finished' ErrorObj=0 InputObj=0 InputObjSpeed=0 OutputObj=0 OutputObjSpeed=0 stepName=LoadObjData stepNum=2 time='2022-08-07T14:39:38+08:00' level=info msg='Pipeline step finished' ErrorObj=0 InputObj=0 InputObjSpeed=0 OutputObj=0 OutputObjSpeed=0 stepName=UploadObj stepNum=3 time='2022-08-07T14:39:38+08:00' level=info msg='Pipeline step finished' ErrorObj=0 InputObj=0 InputObjSpeed=0 OutputObj=0 OutputObjSpeed=0 stepName=Terminator stepNum=4 time='2022-08-07T14:39:38+08:00' level=info msg='Duration: 4.687948ms' durationSec=0.004685223 time='2022-08-07T14:39:38+08:00' level=error msg='Sync Failed' status=1

建议增加SCP传输文件功能 及 任务管理界面

1、两台服务器免密传输设置后(这样就能避免web端输入服务器密码了),可以使用scp功能发送备份文件。脚本示例如下:
scp -r $datepath [email protected]:/data/pgdb_backup/databack

 功能放到备份配置里面。

2、任务管理界面我是截图其他软件,做个类似查看页面就行,方便运维巡检备份任务情况

管理账号的安全性问题

我尝试密码框的type更改为text类型 能显示加密后的管理密码。目前这个加密强度能顶得住么。

为啥会出现这个错误

C:\Users\xx\Downloads\backup-x_2.1.6_Windows_x86_64\backup-x-files\imap>mysqldump -h127.0.0.1 -uroot -paegtImapfenX --all-databases 1>2023-03-16_23_21.sql 'mysqldump' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
我在docker 部署了一个应用
这个路径该怎么样的?
小白请教

钉钉 webhook 模式可以支持加签吗

现在没有提供加签密钥的输入,会报错
{"errcode":310000,"errmsg":"description:机器人发送签名不匹配;solution:请确认签名和生成签名的时间戳必须都放在调用的网址中,请确认机器人的密钥加密和填写正确;link:请参考本接口对应文档获得具体要求,或者在https://open.dingtalk.com/document/ 搜索相关文档;"}

可以支持加签吗?还是只支持不加签的方式

postgresql 备份 不支持14.1吗

2022/08/24 16:15:20 执行备份shell失败: pg_dump: error: server version: 14.1 (Debian 14.1-1.pgdg110+1); pg_dump version: 13.7 (Debian 13.7-0+deb11u1) pg_dump: error: aborting because of server version mismatch

centos 7.8 安装报错

2024/01/26 15:50:43 安装 backup-x 服务失败, ERR: exit status 1
2024/01/26 15:50:43 请确保使用如下命令: ./backup-x -s install

使用的是linux_x86_64.tar.gz的压缩包

很nice的同步工具

感谢作者一直在更新,一直在迭代
我这边提一个小的问题,docker的环境中没有rclone,这个是不是后续会有嵌入进去的想法呢

windows2012 执行备份操作。提示“执行shell的输出为空”

image

操作系统为:windows server 2012和2016军不能使用。
备份文件软件是放在:C:\inetpub\wwwroot
单独使用:SET MYSQL_PWD=1234qwer
"C:\mysql\bin\mysqldump" -h127.0.0.1 -uroot question > question-2022-09-09_06_26.sql 可以备份成功。

但是用备份软件,提示图片错误:
2022/09/16 11:19:04 question项目将在23.7小时后运行
2022/09/16 11:19:04 正在备份项目: question ...
2022/09/16 11:19:04 执行shell的输出为空
2022/09/16 11:19:04 执行备份shell失败:

经过观察发现,同样是在,备份文件夹(question)内没有生成shell脚本。

QA:数据库备份外还支持哪些操作?

ReadeMe中项目描述的是数据库的备份,文档也提到支持其他数据的备份,比如还有哪些?
我看容器里面没有ssh,那是否不支持跨主机的操作?比如我想备份A主机的/config目录,是否支持?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.