# bitbucket **Repository Path**: beyoung1314/bitbucket ## Basic Information - **Project Name**: bitbucket - **Description**: bitbucket代码备份 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-09-21 - **Last Updated**: 2022-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目说明 本项目用于代码仓库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 | ```shell 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服务器 ![bitbucket 登录界面](assets/images/login.png) > 2、点击用户头像,管理账户 ![管理账户](assets/images/account.png) > 3、点击左侧菜单列表中的 Personal access tokens ![Personal access tokens](assets/images/tokens.png) > 4、点击 Create a token 按钮,创建访问凭证 ![创建token](assets/images/token_create01.png) ![img.png](assets/images/token_create02.png) ![img.png](assets/images/token_create03.png) > 5、用户凭证需要单独记录,对话框关闭后,只能修改权限,无法查看密钥,只能删除后,重复上述操作 ![img.png](assets/images/token_create04.png) ### 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 | ```shell 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 [bitbucket server rest apis 地址](https://developer.atlassian.com/server/bitbucket/rest/api-group-projects/) ## 项目介绍 ### 项目构成 ```shell ├─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 ``` ### 配置文件说明 ```shell 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。。。