## dbackup
备份数据库服务

## 配置

配置使用TOML格式,示例如下:
```toml
[[PGConfig]]
pg_home = "C:/Program Files/PostgreSQL/10/bin" # pg 安装目录
host = "127.0.0.1"
port = 5432
db = ["test", "postgres"]
username = "abby"
password = "abby"
destination = "D:/backup"
keep = 3
cron = "*/1 * * * *" # 每分钟运行
options = ["-Fc", "--no-owner"]

[[PGConfig]]
host = "127.0.0.1"
port = 5433
db = ["db1", "db2"]
username = "admin"
password = "admin"
destination = "/data/backup"
keep = 10
cron = "* 1 * * *" # 每天1点0分0秒运行
options = ["--inserts"]
```

配置中`keep`表示保留最近 N 小时, `cron`表示何时执行备份任务,5个`*` 分别表示: 分, 时, 本月第几天,月,本周第几天,举例如下:


- `*/1 * * * *` 每1分钟执行  
- `0 */1 * * *` 每小1时执行  
- `0 0 */1 * * ` 每月1号执行  
- `23 2 1 * *`  每月1号2时23分执行  

更多参考 [这里](https://godoc.org/github.com/robfig/cron)  

## 用法  
1, Windows/Linux下直接运行  
2, 可选择安装为服务 `./dbackup -service install` (Linux下以root用户运行)  
  可用参数有 `-service start`, `-service stop`, `-service restart`, `-service install`, `-service uninstall`  
  
程序会读取程序所在目录下的`conf.toml`配置,并在当前目录下创建`log`目录用于记录日志  

## 注意
1, 如果可以找到`pg_dump`那们配置中的`pg_home`可以设置为空(即pg_home = "")  
2, 程序只会使用必要的参数用于连接数据库,额外的参数可以通过`options`传递  
3, 输出备份文件名为 `db_yyyymmdd-HHMMSS.dump` 且不可配置,存放位置为 `destination/db/db_yyyymmdd-HHMMSS.dump`         

## 示例  

每分钟备份一次,保留最近3分钟的备份  

![example](./example.png)