前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何将您的Git存储库备份到腾讯云COS

如何将您的Git存储库备份到腾讯云COS

原创
作者头像
水门
发布2018-08-13 16:40:08
4.4K0
发布2018-08-13 16:40:08
举报

介绍

依赖源代码存储库进行版本控制是一种最佳的方法,当代码更改导致应用程序崩溃或行为不正常时,可以恢复运行。但是,如果发生诸如不小心删除分支或无法访问存储库等严重性事件,我们应该利用其他更高级恢复策略。

将我们的代码存储库备份到对象存储基础架构中时,就为我们提供了可以在需要时恢复的数据的异地副本。COS是腾讯云的对象存储解决方案,为用户提供存储数字资产,文档和代码备份的地方。

COS允许我们使用Coscmd等工具与之交互。Coscmd是一个客户端工具,我们可以通过命令行或通过脚本来上传,检索和管理来自对象存储的数据。

在本教程中,我们将演示如何使用Coscmd将远程Git存储库备份到腾讯云 COS。为了实现这一目标,我们将安装和配置Git,安装Coscmd,并创建脚本以将Git存储库备份到我们的COS中。

准备

要使用COSs,您需要一个腾讯云帐户。如果您还没有,可以在注册页面注册。从那里,您需要设置您的腾讯云 COS并创建一个API密钥。创建后,您需要保留以下有关COS的详细信息secret_idsecret_keybucketregion等参数,这些参数请继续阅读本文获取。

一台已经设置好可以使用sudo命令的非root账号的Ubuntu 16.04服务器。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器

设置好COSs信息和服务器后,请继续下一部分以安装Git。

安装Git

在本教程中,我们将使用远程Git存储库,并将复制我们的服务器。Ubuntu安装了Git并准备在其默认存储库中使用,但此版本可能比最新版本旧。

我们可以使用apt包管理工具来更新本地包索引,下载并安装最新的Git版本。

代码语言:javascript
复制
$ sudo apt-get update
$ sudo apt-get install git

要以更恰当的方式安装Git并确保您拥有最新版本,可以参考如何在Ubuntu系统上安装Git

我们将从Git存储库的URL备份,因此我们不需要在本教程中配置Git。有关配置Git的指导,请参考如何在Ubuntu系统上安装Git

现在我们将继续克隆我们的远程Git存储库。

克隆远程Git存储库

为了克隆我们的Git存储库,我们将创建一个脚本来执行该任务。创建脚本允许我们使用变量并对确保我们不会在命令行上出错有帮助。

要编写我们的可执行脚本,我们将创建一个使用文本编辑器nano 创建一个名为cloneremote.sh的新shell脚本文件。

代码语言:javascript
复制
$ nano cloneremote.sh

在这个空白文件中,让我们编写以下脚本。

代码语言:javascript
复制
                                        cloneremote.sh
#!/bin/bash
​
remoterepo=your_remote_repository_url
localclonedir=repos
clonefilename=demoprojectlocal.git
​
git clone --mirror $remoterepo $localclonedir/$clonefilename

让我们来看看这个脚本的每个元素。

第一行 - #!/bin/bash表示该脚本将由Bash shell运行。从那里,我们定义将在命令中使用的变量,这些变量将在我们执行脚本后运行。这些变量定义了以下配置:

  • remoterepo正被分配在我们将从中备份的远程Git存储库URL中
  • localclonedir 指的是我们将远程存储库克隆到的服务器目录或文件夹,在本例中我们已经调用它,叫repos
  • clonefilename是指我们将提供给本地克隆存储库的文件名,在本例中我们称之为 demoprojectlocal.git

然后,在脚本末尾的命令中直接调用这些变量。

该脚本的最后一行使用从git命令开始的Git命令行客户端。从那里,我们要求clone使用--mirror标记克隆存储库,并将其作为存储库的镜像版本执行。这意味着克隆的存储库将与原始存储库完全相同。我们调用上面定义的三个使用$命名的变量。

如果您对所编写的脚本的正确率感到满意,可以通过输入CTRL+ x键退出nano编辑器,并在提示保存文件时按y

此时,我们可以使用以下命令运行shell脚本。

代码语言:javascript
复制
$ sh cloneremote.sh

运行该命令后,您将收到类似于以下内容的输出。

代码语言:javascript
复制
Output
Cloning into bare repository './repos/demoprojectlocal.git'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done.

此时,如果列出当前目录中的项目,您应该在那里看到备份目录,如果您移动到该目录,您将看到包含您在脚本中提供的文件名的子文件夹。该子目录是Git存储库的克隆。

通过克隆我们的远程Git存储库,我们现在可以继续安装Coscmd,我们可以使用它将存储库备份到对象存储中。

安装Coscmd

  1. 检查是否装载 Python,若没有安装,具体参考 Python 安装与配置
  2. 检查是否装载最新版本 pip,若没有安装,请前往 PyPA pip 文档 按照教程安装。
  3. 进入 Terminal 开始 pip 安装,执行命令如下:
代码语言:javascript
复制
pip install coscmd

安装成功后,用户可以通过 pip -vpip --version 命令查看当前版本信息。

配置Coscmd

要将此备份上传到我们的腾讯云COS,我们将使用coscmd工具。COSCMD 工具在使用前需要进行参数配置。用户可以通过如下命令来配置:

代码语言:javascript
复制
coscmd config -a <secret_id> -s <secret_key> -b <bucket> -r <region> [-m <max_thread>] [-p <parts_size>]

上述示例中使用"<>"的字段为必选参数,使用"[]"的字段为可选参数。其中:

名称

描述

有效值

secret_id

必选参数,APPID对应的密钥ID可从COS控制台左侧栏【密钥管理】或云API密钥控制台获取

字符串

secret_key

必选参数,APPID对应的密钥Key可从COS控制台左侧栏【密钥管理】或云API密钥控制台获取

字符串

bucket

必选参数,指定的存储桶名称,bucket的命名规则为{name}-{appid} ,参考创建存储桶

字符串

region

必选参数,存储桶所在地域。参考可用地域

字符串

max_thread

可选参数,多线程上传时的最大线程数(默认为5),有效值:1~10

数字

parts_size

可选参数,分块上传的单块大小(单位为MB,默认为1 MB),有效值:1~10

那么我的命令是:

代码语言:javascript
复制
coscmd config -a AK***********************La -s B*********************oG -b t*****eb -r ap-chengdu
​

我们将首先测试我们的coscmd配置并尝试访问我们的备份空间(在本教程中我们的空间被命名为mysql-backup-demo):

代码语言:javascript
复制
$ coscmd list -a
​

您应该看到输出你cos文件列表:

代码语言:javascript
复制
Starting new HTTPS connection (1): q**************.cos.ap-shanghai.myqcloud.com
   Kubernetes/                                   DIR
   Tencent-CIS/                                  DIR
   TencentDB/                                    DIR
​

此输出表明连接成功,coscmd可以将对象传输到腾讯云COS

将Git存储库备份到对象存储中

安装和配置了所有工具后,我们现在将创建一个脚本,该脚本将压缩本地存储库并将其推送到腾讯云 COS。

从我们的主目录中,调用我们的脚本movetoCOSs.sh并在nano内打开它。

代码语言:javascript
复制
$ cd ~
$ nano movetoCOSs.sh

我们将编写如下脚本。

代码语言:javascript
复制
                                   movetoCOSs.sh
#!/bin/sh
​
tar -zcvf archivedemoproject.tar.gz /repos/demoprojectlocal.git
coscmd upload archivedemoproject.tar.gz  

我们现在使用tar来压缩Git存储库,然后再将其发送到COS。在tar命令中,我们指定了四个标志:

  • z 使用gzip方法压缩
  • c 创建一个新文件而不是使用现有文件
  • v 表示我们对包含在压缩文件中的文件的详细信息
  • f 使用下一个字符串中定义的名称命名生成的文件

在标志之后,我们在这些情况下,为压缩文件命名为archivedemoproject.tar.gz。我们还提供了要压缩的目录的名称/repos/demoprojectlocal.git

然后执行Coscmd upload脚本以发送archivedemoproject.tar.gz到我们的目标COS。

在您可能常用于Coscmd的命令中,upload命令将文件发送到COSs。 其他可能有用的命令包括从COS下载文件的download命令,您可以通过执行没有选项的Coscmd来获取Coscmd接受的所有命令的列表。

要将备份复制到COS中,我们将执行该脚本。

代码语言:javascript
复制
$ sh movetoCOSs.sh

您将看到以下输出:

代码语言:javascript
复制
demoprojectlocal.git/
...demoprojectlocal.git/packed-refs
100%|█████████████████████████████████████████████████████████████████████████████████████████████████| 15.0/15.0 [00:00<00:00, 55.1KB/s]

您可以通过运行以下命令来检查进程是否正常工作:

代码语言:javascript
复制
$ coscmd list -a

您将看到以下输出,表明该文件位于您的COS中。

代码语言:javascript
复制
...
archivedemoproject.tar.gz                                     15      2018-08-10 16:11:17

我们现在已成功将Git存储库备份到腾讯云 COS中。

结论

为确保在需要时可以快速恢复代码,维护备份非常重要。在本教程中,我们介绍了如何使用Git在Coscmd客户端和shell脚本将远程Git存储库备份到腾讯云 COS。这只是数十种可能情况的其中一种,您可以使用COSs来帮助您实现深度恢复数据。如果您在生产环境使用,我还是建议您直接使用腾讯Git代码托管,为开发者提供基于 Git 的在线代码托管工具,包含代码提交/存储/下载/复刻/分支/历史/比对/合并等功能。可一站式完成对代码及代码质量管理,项目及项目人员管理,大大提升研发效率。 更多Linux教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Back Up Your Git Repository To COSs 》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 安装Git
  • 克隆远程Git存储库
  • 安装Coscmd
  • 配置Coscmd
  • 将Git存储库备份到对象存储中
  • 结论
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档