Skip to content

Commit

Permalink
增加rclone (#77)
Browse files Browse the repository at this point in the history
* 增加rclone
配置网页切换内容效果

* feature:增加rclone的配置路径到默认路径去

* fix: 调整docker部署的说明,增加rclone的路径说明

* feat:微调页面显示,按需使用
  • Loading branch information
langren1353 committed Aug 6, 2023
1 parent 150e9b6 commit 8e64557
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 13 deletions.
11 changes: 10 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ RUN go env -w GO111MODULE=on \
FROM golang:1.20 AS s3sync

WORKDIR /src/
RUN git clone --branch 2.55 https://github.com/larrabee/s3sync.git
RUN git clone --branch 2.61 https://github.com/larrabee/s3sync.git

WORKDIR /src/s3sync
ENV CGO_ENABLED 0
Expand All @@ -35,11 +35,20 @@ RUN sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-
RUN apt-get install -y postgresql-client-14 \
&& apt-get install -y default-mysql-client

# add RCLone to use directly
RUN mkdir -p /root/.config/rclone/ && \
apt-get install -y curl wget rclone vim

WORKDIR /app

VOLUME /app/backup-x-files

# config ENV and rclone-default-config-path
ENV TZ=Asia/Shanghai
ENV XDG_CONFIG_HOME=/app/backup-x-files

COPY --from=builder /app/backup-x /app/backup-x
COPY --from=s3sync /src/s3sync/s3sync /usr/local/bin/s3sync

EXPOSE 9977
ENTRYPOINT ["/app/backup-x"]
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,15 @@
## 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](https://github.com/larrabee/s3sync)
- docker容器默认安装default-mysql-client/postgres-client/[s3sync](https://github.com/larrabee/s3sync)/rclone/wget/curl

## 系统中使用
- 下载并解压[https://github.com/jeessy2/backup-x/releases](https://github.com/jeessy2/backup-x/releases)
Expand Down
6 changes: 3 additions & 3 deletions web/basic_auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func BasicAuth(f ViewFunc) ViewFunc {
}

if ld.FailTimes >= 5 {
log.Printf("%s 登陆失败超过5次! 并延时5分钟响应\n", r.RemoteAddr)
log.Printf("%s 登录失败超过5次! 并延时5分钟响应\n", r.RemoteAddr)
time.Sleep(5 * time.Minute)
if ld.FailTimes >= 5 {
ld.FailTimes = 0
Expand Down Expand Up @@ -67,14 +67,14 @@ func BasicAuth(f ViewFunc) ViewFunc {
}

ld.FailTimes = ld.FailTimes + 1
log.Printf("%s 登陆失败!\n", r.RemoteAddr)
log.Printf("%s 登录失败!\n", r.RemoteAddr)
}

// 认证失败,提示 401 Unauthorized
// Restricted 可以改成其他的值
w.Header().Set("WWW-Authenticate", `Basic realm="Restricted"`)
// 401 状态码
w.WriteHeader(http.StatusUnauthorized)
log.Printf("%s 请求登陆!\n", r.RemoteAddr)
log.Printf("%s 请求登录!\n", r.RemoteAddr)
}
}
52 changes: 44 additions & 8 deletions web/writing.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="jie">
<title>backup-x</title>
<title>Backup-X</title>
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="/static/bootstrap.min.css">
<link rel="stylesheet" href="/static/common.css">
Expand All @@ -18,9 +18,14 @@
<div class="navbar navbar-dark bg-dark shadow-sm">
<div class="container d-flex justify-content-between">
<a href="/" class="navbar-brand d-flex align-items-center">
<strong>backup-x</strong>
<strong>Backup-X</strong>
</a>
<a href="https://github.com/jeessy2/backup-x" target="_blank" style="color: white">
<strong>Github | Backup-X</strong>
<span class="badge badge-secondary">
{{.Version}}
</span>
</a>
<span class="badge badge-secondary">{{.Version}}</span>
</div>
</div>
</header>
Expand Down Expand Up @@ -261,7 +266,19 @@ <h5 class="portlet__head">对象存储配置</h5>
</div>

<div class="col-md-3">
<p class="font-weight-light text-break" style="margin-top: 115px;font-size: 13px;" id="logs"></p>
<div class="nav nav-tabs" role="tablist" style="margin-top: 50px;">
<a class="nav-item nav-link active" href="#x0" data-toggle="tab" onclick="changeLog(1)" role="tab">
备份日志
</a>
<a class="nav-item nav-link" href="#x1" data-toggle="tab" onclick="changeLog(2)" role="tab">
登录日志
</a>
<a class="nav-item nav-link" href="#x2" data-toggle="tab" onclick="changeLog(0)" role="tab">
全部日志
</a>
</div>

<p class="font-weight-light text-break" style="margin-top: 10px;font-size: 13px;" id="logs"></p>
<button type="button" class="btn btn-outline-primary btn-sm" id="clearLogBtn">清空日志</button>
</div>
</div>
Expand All @@ -270,10 +287,22 @@ <h5 class="portlet__head">对象存储配置</h5>

<script>
let contentIdx = 0
let logList = [] // 0:所有日志;1:日常日志;2:登录日志

function contentChange(i) {
contentIdx = i
}

function changeLog(type = 0) {
const curLogList = logList[type]
const totalLogList = logList[0]

const failedCount = totalLogList.filter(one => one.includes('登录失败')).length
const backupCount = totalLogList.filter(one => one.includes('正在备份项目')).length

const html = `备份执行次数:${backupCount}次<br/>历史登录失败:${failedCount}个<br/><br/>` + curLogList.join('<br/>')
$("#logs").html(html)
}

$(function(){
$(".submit_btn,.submit_btn_backup_all,.submit_btn_backup_idx").on('click',function(e) {
Expand Down Expand Up @@ -317,14 +346,14 @@ <h5 class="portlet__head">对象存储配置</h5>
let id = $(that).attr("id").split("_")[1]
let name = $(that).val()
let enabled = $("#Enabled_"+id).val()
$("#id_"+id).html(enabled == 0?name:name+'<span class="badge badge-pill badge-warning">停用</span>')
$("#id_"+id).html(enabled === 0?name:name+'<span class="badge badge-pill badge-warning">停用</span>')
}
// enabledChange
function enabledChange(that) {
let id = $(that).attr("id").split("_")[1]
let name = $("#ProjectName_"+id).val()
let enabled = $(that).val()
$("#id_"+id).html(enabled == 0?name:name+'<span class="badge badge-pill badge-warning">停用</span>')
$("#id_"+id).html(enabled === 0?name:name+'<span class="badge badge-pill badge-warning">停用</span>')
}


Expand All @@ -334,7 +363,14 @@ <h5 class="portlet__head">对象存储配置</h5>
<script>
function getLogs() {
$.get("/logs", function(result){
$("#logs").html(result)
const curList = result.split("<br/>").filter(one => one.length)

logList[0] = curList.map(one => one)

logList[1] = curList.filter(one => !one.includes("登录"))
logList[2] = curList.filter(one => one.includes("登录"))

changeLog(1)
})
}
getLogs()
Expand Down Expand Up @@ -378,4 +414,4 @@ <h5 class="portlet__head">对象存储配置</h5>
})
</script>

</html>
</html>

0 comments on commit 8e64557

Please sign in to comment.