通过rclone结合阿里云OSS或者AWS S3发布和上线代码

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介:

在进行项目的开发时,在多数测试和上线操作的场景中,我们总是需要把代码或者打包好的代码部署到一个中间的服务器或者存储上。在不同给的情况下,尤其是在很多人合作的情形下,我们就会或多或少的遇到下面的问题:

  • 如果大家都在同一个办公场地,代码部署到一个内部的服务器中会很方便(或者以专用网络的形式的访问公司的数据中心),但是在远程办公的条件下(比如在疫情期间),就会存在很多安全性的问题。而且,在家办公的场景中,因为每个人的网络条件不一样,网络访问的便捷性也很成问题。
  • 不同的开发和运维人员需要设置不同的权限,需要有一个统一的授权系统来管理权限和授权,而且授权机制的管理最好可以和持续集成的服务可以很好地结合。
  • 为了方便版本回滚和问题排查,需要解决历史版本的代码或者软件包的保存问题。而且历史版本都保存的话,也会需要可以扩展,廉价且有冗余保障的存储空间。
  • 使用git等代码库存放需要打包的代码,会造成代码库的体积过大的,每一次fetch或者pull都非常的慢,消耗大量的时间。
  • 直接使用服务器作为这个代码中转很容易受到服务器故障的影响,如果是公司内网的服务器甚至还会受到停电等问题的影响。

我们再这篇文章里介绍一下rclone结合阿里云OSSAWS S3来说明一个方法,对于上述问题都可以提供更好的帮助。首先我们来看一下配置和使用方法。

rclone的安装与实用

rclone是一个类似于rsync的文件系统的命令行同步工具,区别在于,rclone是针对各种的云存储开发的,而且可以完成本地与云存储,以及不同的云存储之间的文件操作。

安装rclone最简单的方法就是直接执行远程的安装脚本(当然也可以根据具体发行版参考文档进行安装):

curl https://rclone.org/install.sh | sudo bash

在Linux上完成安装之后,rclone会默认从配置文件~/.config/rclone/rclone.conf中获取rclone的配置。我们既可以通过rclone的config命令来交互式修改这个配置,也可以直接编辑这个配置文件。

首先,我们来看一个阿里云OSS的配置(可以粘贴在rclone.conf中):

[oss-beijing]
type = s3
provider = Alibaba
env_auth = false
access_key_id = <YOUR_ACCESS_KEY_ID>
secret_access_key = <YOUR_SECRET_ACCESS_KEY>
endpoint = <YOUR_REGION>.aliyuncs.com
acl = private
storage_class = Standard

这里需要需要解释一下,其中[oss-beijing]是一个本地给阿里云OSS某一个区域的别名,在命令行中用来当做前缀使用,比如oss-beijing:my-bucket-name就是这个区域下面叫做my-bucket-name的桶(Bucket),而endpoint也要指定为对应的区域EndPoint(这个值可以在阿里云控制台查看到)。access_key_id和secret_access_key需要替换成权限适合的密钥对。

AWS S3的rclone的配置则更为简单:

[s3-beijing]
type = s3
provider = AWS
env_auth = true
region = cn-north-1
endpoint = https://s3.cn-north-1.amazonaws.com.cn

在这里指定endpointhttps://s3.cn-north-1.amazonaws.com.cn是为了rclone能够在AWS中国区的cn-north-1工作(宁夏区则需要另外一个地址)。而env_auth被指定为true,则是可以避免在rclone.conf中写上AWS的key和secret,而是直接使用~/.aws/中的配置。当然后,如果在环境中配置AWS使用了named profile时,也可以在运行rclone时,通过指定环境变量AWS_PROFILE=<your_profile_name>来使用某一个profile。

这个时候就可以使用一些命令来访问某些桶了:

# 列出my-bucket-name下的目录
rclone lsd oss-beijing:my-bucket-name
rclone lsd s3-beijing:my-bucket-name

# 以json形式列出my-bucket-name下的目录和文件
rclone lsjson oss-beijing:my-bucket-name
rclone lsjson s3-beijing:my-bucket-name

# 以json形式递归的列出my-bucket-name下目录和文件
# 这里的所谓递归其实并不是准确的描述,主要还是指列出Bucket下面全部的item
rclone lsjson oss-beijing:my-bucket-name -R
rclone lsjson s3-beijing:my-bucket-name -R

那么,在打包完成时,需要做的事情就是把本地的对应的目录同步到阿里云OSS或者S3中即可:

rclone sync <LOCAL_PATH> oss-beijing:my-bucket-name/target-path/
rclone sync <LOCAL_PATH> s3-beijing:my-bucket-name/target-path/

而在其他的主机上,也很方便将阿里云OSS或者S3中的对应目录同步回来:

rclone sync oss-beijing:my-bucket-name/target-path/ <LOCAL_PATH>
rclone sync s3-beijing:my-bucket-name/target-path/ <LOCAL_PATH>

注意sync命令会将目标路径完全同步为和本地一致的结构。

有关rclone具体使用方法,大家可以继续参考其官方文档。

一些需要注意的地方

回到一开始考虑的各种问题,在这里我们来补充一些需要注意的地方

  • 对于版本问题,建议在打包和同步的时候,把代码的版本号作为目录名同步到远端的存储中,这样在阿里云OSS或者S3就可以保存全部的代码包的历史。需要进行历史的冗余备份时,可以直接通过每个云服务商自己提供的机制来进行桶的复制,甚至还可以通过rclone来进行跨云服务商备份。如果不需要保存历史比较久的版本,也可以设置自动过期的机制。
  • 在权限管理方便,可以通过[阿里云的RAM]()和AWS的IAM为每一个参与建立单独的账号,并且可以在可以访问的Bucket的层面赋予权限。这样,每个账户可以通过自己的key/secret来进行访问。
  • 在rclone的lsjson命令中访问的数据中,有文件或者目录的创建时间等元信息,在同一个桶的路径下,可以通过这些来区分出最新同步的版本。
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
1月前
|
Java API 开发工具
如何用阿里云 oss 下载文件
阿里云对象存储服务(OSS)提供了多种方式下载文件,以下讲解下各种方式的下载方法
759 1
|
2月前
|
人工智能 运维 Kubernetes
阿里云容器服务ACK AI助手正式上线带来的便利性
作为开发者想必大家都知道,云原生容器技术的优势,尤其是近两年的随着容器技术的迅猛发展,Kubernetes(K8s)已成为广泛应用于容器编排和管理的领先解决方案,但是K8s的运维复杂度一直是挑战之一。为了应对这一问题,就在最近,阿里云容器服务团队正式发布了ACK AI助手,这是一款旨在通过大模型增强智能诊断的产品,旨在帮助企业和开发者降低Kubernetes(K8s)的运维复杂度。那么本文就来详细讲讲关于这款产品,让我们结合实际案例分享一下K8s的运维经验,探讨ACK AI助手能否有效降低K8s的运维复杂度,并展望ACK AI助手正式版上线后的新功能。
264 2
阿里云容器服务ACK AI助手正式上线带来的便利性
|
28天前
|
存储 安全 对象存储
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
本文详细介绍了怎样帮助新手小白从注册,购买阿里云OSS,到一步一步配置OSS做为图床,和PicGo、Typora软件连接,配置好关联之后,在使用Typora写文章时,如果需要插入图片,只需要将图片复制粘贴到Typora的编辑区域,就会自动通过PicGo上传到指定图床,自动复制外网能访问的URL并展示,简直不要太方便,极大的解决了编辑文章时复制处理图片链接的痛点。
147 2
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
|
1月前
|
弹性计算 前端开发 小程序
微信小程序上传文件至阿里云OSS直传(java后端签名+前端直传)
当前的通用文件上传方式是通过前端上传到服务器,再由服务器转存至对象存储。这种方式在处理小文件时效率尚可,但大文件上传因受限于服务器带宽,速度较慢。例如,一个100MB的文件在5Mbps带宽的阿里云ECS上上传至服务器需160秒。为解决此问题,可以采用后端签名的方式,使微信小程序直接上传文件到阿里云OSS,绕过服务器中转。具体操作包括在JAVA后端引入相关依赖,生成签名,并在微信小程序前端使用这个签名进行文件上传,注意设置正确的请求头和formData参数。这样能提高大文件上传的速度。
|
4天前
|
存储 Java API
阿里云oss简介和使用流程
本文档介绍了如何准备阿里云OSS(对象存储服务)并开始使用它。首先,需要注册阿里云账号并进行实名认证,然后购买OSS资源包。在阿里云控制台中,可以创建和管理OSS存储空间(称为“Bucket”)。接着,文章简要介绍了阿里云OSS,它是一个基于云端的对象存储服务,提供高可靠性、高性能、低成本和易于使用的特性。 在阿里云OSS控制台,用户可以进行文件的上传和下载操作。通过API,开发者可以使用各种编程语言(如Java)来创建、删除Bucket以及上传、下载和删除文件。例如,Java代码示例展示了如何创建Bucket、上传文件、删除文件以及下载文件到本地的操作。
|
11天前
|
开发工具 对象存储
阿里云OSS文件上传
阿里云OSS文件上传
53 0
|
11天前
|
存储 缓存 Java
阿里云OSS实战从入门到大神
说起阿里云OSS,那作用和功能都是非常强大的,它可以存放图片,音频,视频等资源文件,这些资源文件,你不必存放到服务器的硬盘里,这样既可以节省服务器硬盘空间,又可以降低服务器的读写压力,非常适合大并发的架构。
52 0
|
23天前
|
存储 对象存储 容器
阿里云OSS对象存储基础入门
阿里云OSS对象存储基础入门
87 0
|
1月前
|
存储 域名解析 应用服务中间件
阿里云OSS对象存储,实现内网访问,免流量费用
阿里云OSS对象存储,实现内网访问,免流量费用
414 1
|
2月前
|
存储 Oracle 关系型数据库
Typora+PicGo+super-prefix+阿里云OSS设置图床
Typora+PicGo+super-prefix+阿里云OSS设置图床