目录
项目说明
本项目用于代码仓库bitbucket进行备份,通过配置访问凭证,拉取bitbucket所有的仓库,通过遍历仓库内的项目,使用git命令进行代码下载备份
本项目使用到的bitbucket服务器为 Atlassian Bitbucket v5.8.1
使用到的 bitbucket api
1、获取仓库列表
接口URL
http://{your bitbucket server url}/rest/api/1.0/projects
请求方式
GET
Content-Type
json
请求Header参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
Authorization | Bearer 管理员的访问凭证 | Text | 是 | 访问凭证 |
请求Query参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
limit | 10000 | Text | 否 | 请求返回的记录条数,默认值为25 |
curl --location --request GET --X GET 'http://{your bitbucket server url}/rest/api/1.0/projects?limit=1000' \
--header 'Authorization: Bearer 管理员的访问凭证' \
--header 'Content-Type: application/json' \
--data ''
管理员的访问凭证获取方式
1、使用管理员账号密码登录bitbucket服务器
2、点击用户头像,管理账户
3、点击左侧菜单列表中的 Personal access tokens
4、点击 Create a token 按钮,创建访问凭证
5、用户凭证需要单独记录,对话框关闭后,只能修改权限,无法查看密钥,只能删除后,重复上述操作
在这里插入图片描述
2、获取仓库下的项目列表
接口URL
http://{your bitbucket server url}/rest/api/1.0/projects/{projectKey}/repos?limit=1000
请求方式
GET
Content-Type
json
请求Header参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
Authorization | Bearer 管理员的访问凭证 | Text | 是 | 访问凭证 |
请求Query参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
limit | 1000 | Text | 否 | 请求返回的记录条数,默认值为25 |
curl --location --request GET --X GET 'http://{your bitbucket server url}/rest/api/1.0/projects/{projectKey}/repos?limit=1000' \
--header 'Authorization: Bearer 管理员的访问凭证' \
--header 'Content-Type: application/json' \
--data ''
bitbucket server rest apis
项目介绍
项目构成
├─java
│ └─com
│ └─tools
│ └─bitbucket
│ │ BitbucketApplication.java 启动类
│ ├─config
│ │ BitbucketConfig.java bitbucket配置类
│ │ ThreadPoolConfig.java 线程池配置类
│ ├─controller
│ │ BitbucketController.java
│ ├─pojo
│ │ AjaxResult.java
│ │ BackUpRequest.java
│ │ CloneObject.java
│ │ LinkObject.java
│ │ BitbucketRepository.java
│ │ Repository.java
│ ├─service
│ │ BackUpAsyncService.java
│ └─utils
│ BashUtils.java shell执行工具类
│ FileUtils.java 文件操作工具类
│ HttpUtils.java http请求工具栏
│ MailUtils.java 邮件发送工具类
│ SpringUtils.java spring工具类
│
└─resources
│ application.yml 配置文件
├─static
└─templates
配置文件说明
server:
#服务端口
port: 8888
# bitbucket 仓库配置
bitbucket:
#bitbucket 仓库url
baseUrl:
#管理员的访问凭证 或者有权查看所有仓库的用户访问凭证
adminToken:
#备份路径 ,不要包含中文 以及 空格,可以在备份时,临时将文件夹改为英文轮径,备份完成后再改为中文路径
backUpPath:
#需要备份的项目和仓库
backUpProjects:
# - key: "YSXM"
# name: "验收项目"
- key: "CSXM"
name: "测试项目"
repositoryList:
- href: "http://xxx/xxx.git"
name: "http"
#需要跳过的项目和仓库 例如 文件大于1G的仓库,建议手动备份
ignoreProjects:
# - key: "YSXM"
# name: "验收项目"
- key: "CSXM"
name: "测试项目"
repositoryList:
- href: "http://xxx/xxx.git"
name: "http"
# 邮箱配置
spring:
mail:
# 邮箱主机 smtp.163.com,smtp.qq.com,smtp.aliyun.com https://blog.51cto.com/aiyc/5153900
host: smtp.163.com
# 邮箱用户名
username: xxx@163.com
# 用户昵称,自定义配置
nickname: 运维部-xxx
# 授权码 https://consumer.huawei.com/cn/support/content/zh-cn15872099/
password:
# 端口
port: 465
# 协议
protocol: smtp
# 默认编码
default-encoding: UTF-8
# 开启SSL
properties:
mail:
smtp:
ssl:
enable: true
# 认证
auth: true
# 开启SSL安全模式
starttls:
enable: true
# 必须启动SSL安全模式
required: true
# 套接字工厂端口
socketFactory:
port: 465
# 套接字工厂类
class: javax.net.ssl.SSLSocketFactory
使用说明
1、修改配置文件
2、启动项目
3、通过接口调用工具发送post请求
4、等待邮件通知
影响初次备份速度的因素如下
网络IO(主要因素):项目运行时,网络使用率近乎100%
线程数:默认的线程数为5个,若cpu和内存使用率偏高,可以通过线程配置类自行修改
磁盘IO:几乎没有影响
初次备份完成后,可以适当调整线程数,提高同步效率
写在后面
本想通过代码,解放双手,结果代码又臭又长,到处都是 bad smell。。。