fas:HandPointUp# OSS定义以及作用

概述

对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,数据持久性极高,数据可用性极高。可选择多种存储类型,全面优化存储成本。
OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。使用云提供的API、SDK接口或者OSS迁移工具轻松地将海量数据移入或移出云OSS。
云OSS有集中存储方式,标准存储(Standard)适用于移动应用、大型网站、图片分享或热点音视频,低频访问存储(Infrequent Access)、归档存储(Archive)、冷归档存储(Cold Archive)适用不经常访问数据,具有选择成本更低、存储期限更长的优势。
快速了解OSS

工作原理

数据以对象(Object)的形式存储在OSS的存储空间(Bucket )中。
要使用OSS存储数据,您需要先创建Bucket,并指定Bucket的地域、访问权限、存储类型等属性。创建Bucket后,您可以将数据以Object的形式上传到Bucket,并指定Object的文件名(Key)作为其唯一标识。
OSS以HTTP RESTful API的形式对外提供服务,访问不同地域需要不同的访问域名(Endpoint)。当您请求访问OSS时,OSS通过使用访问密钥(AccessKey ID和AccessKey Secret)对称加密的方法来验证某个请求的发送者身份。
Object操作在OSS上具有原子性和强一致性。

存储空间

存储空间是用户用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。用户可以根据实际需求,创建不同类型的存储空间来存储不同的数据。

对象

对象是OSS存储数据的基本单元,也被称为OSS的文件。和传统的文件系统不同,对象没有文件目录层级结构的关系。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成,并且由存储空间内部唯一的Key来标识。对象元信息是一组键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息。

对象名称

在各语言SDK中,ObjectKey、Key以及ObjectName是同一概念,均表示对Object执行相关操作时需要填写的Object名称。例如向某一存储空间上传Object时,ObjectKey表示上传的Object所在存储空间的完整名称,即包含文件后缀在内的完整路径,如填写为abc/efg/123.jpg。

地域

Region表示OSS的数据中心所在物理位置。用户可以根据费用、请求来源等选择合适的地域创建Bucket。一般来说,距离用户更近的Region访问速度更快。更多信息,请参见访问域名和数据中心。

访问域名

Endpoint表示OSS对外服务的访问域名。OSS以HTTP RESTful API的形式对外提供服务,当访问不同的Region的时候,需要不同的域名。通过内网和外网访问同一个Region所需要的Endpoint也是不同的。例如杭州Region的外网Endpoint是oss-cn-hangzhou.aliyuncs.com,内网Endpoint是oss-cn-hangzhou-internal.aliyuncs.com。更多信息,请参见访问域名和数据中心。

访问密钥

AccessKey简称AK,指的是访问身份验证中用到的AccessKey ID和AccessKey Secret。OSS通过使用AccessKey ID和AccessKey Secret对称加密的方法来验证某个请求的发送者身份。AccessKey ID用于标识用户;AccessKey Secret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,必须保密。

强一致性

Object操作在OSS上具有原子性,操作要么成功要么失败,不会存在有中间状态的Object。OSS保证用户一旦上传完成之后读到的Object是完整的,OSS不会返回给用户一个部分上传成功的Object。
Object操作在OSS同样具有强一致性,用户一旦收到了一个上传(PUT)成功的响应,该上传的Object就已经立即可读,且数据已经冗余写入到多个设备中。不存在上传的中间状态,即不会出现read-after-write却无法读取到数据的情况。删除操作也类似,即用户成功删除指定的Object后,该Object立即变为不存在。

OSS重要特性

版本控制

版本控制是针对存储空间(Bucket)级别的数据保护功能。开启版本控制后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。您在错误覆盖或者删除文件(Object)后,能够将Bucket中存储的Object恢复至任意时刻的历史版本。有关版本控制的更多信息,请参见版本控制介绍。

Bucket Policy

Bucket拥有者可通过Bucket Policy授权不同用户以何种权限访问指定的OSS资源。例如您需要进行跨账号或对匿名用户授权访问或管理整个Bucket或Bucket内的部分资源,或者需要对同账号下的不同RAM用户授予访问或管理Bucket资源的不同权限,例如只读、读写或完全控制的权限等。有关配置Bucket Policy的操作步骤,请参见通过Bucket Policy授权用户访问指定资源。

跨区域复制

跨区域复制(Cross-Region Replication)是跨不同OSS数据中心(地域)的Bucket自动、异步(近实时)复制Object,它会将Object的创建、更新和删除等操作从源存储空间复制到不同区域的目标存储空间。跨区域复制功能满足Bucket跨区域容灾或用户数据复制的需求。有关跨区域复制的更多信息,请参见跨区域复制概述。

数据加密

服务器端加密:上传文件时,OSS对收到的文件进行加密,再将得到的加密文件持久化保存;下载文件时,OSS自动将加密文件解密后返回给用户,并在返回的HTTP请求Header中,声明该文件进行了服务器端加密。有关服务器端加密的更多信息,请参见服务器端加密。
客户端加密:将文件上传到OSS之前在本地进行加密。有关客户端加密的更多信息,请参见客户端加密。

数据永久保存

除以下情况以外,OSS默认永久保存上传至Bucket的数据:

  1. 通过OSS控制台、API、SDK、ossutil或者ossbrowser等工具手动删除数据。更多信息,请参见删除文件。
  2. 通过生命周期规则在指定时间内自动删除数据。
  3. OSS停服后15天内未补足欠款。

OSS使用方式

OSS提供多种灵活的上传、下载和管理方式。

通过控制台管理OSS

OSS提供了Web服务页面,您可以登录OSS控制台管理您的OSS资源。更多信息,请参见OSS管理控制台概览。

通过API或SDK管理OSS

OSS提供RESTful API和各种语言的SDK开发包,方便您快速进行二次开发。更多信息,请参见OSS API参考和OSS SDK参考。

通过工具管理OSS

OSS提供图形化管理工具ossbrowser、命令行管理工具ossutil、FTP管理工具ossftp等各种类型的管理工具。更多信息,请参见OSS常用工具。

通过云存储网关管理OSS

OSS的存储空间内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。如果您想要像使用本地文件夹和磁盘那样来使用OSS存储服务,可以通过配置云存储网关来实现。更多信息,请参见云存储网关产品详情页面。

Bucket定义以及限制

通常定义

Bucket是一个用户用来管理所存储Object的存储空间。 每个用户可以拥有多个Bucket。 Bucket的名称在OSS的范围内必须是全局唯一的,一旦创建之后无法修改名称。 Bucket内部的Object数目是没有限制的。

阿里云Bucket限制

阿里云对象存储OSS Bucket数量限制为一个阿里云账号下100个;Bucket存储空间容量不受限;Bucket创建后名称、地域和存储类型不可以更改。
同一阿里云账号在同一地域内创建的存储空间总数不能超过100个。
存储空间创建成功后,其名称、所处地域、存储类型不能修改。
单个存储空间的容量不限制。

阿里云Bucket操作

创建Bucket

阿里云OSS控制台下面,创建了如下Bucket:
Bucketlist.pngAn image to describe post 阿里云OSS
进入 OSS管理控制台 ,选择 创建 Bucket,填写Bucket名称 和 地域 ,从速度考虑,地域一般选择常居地的附近。
其他的则是默认就行,确定创建Bucket
Bucket概览里可以查看数据用量,以及在下端由访问的各项地址

跨域设置

一个资源请求一个其它域名的资源时会发起一个跨域 HTTP 请求 (cross-origin HTTP request)。比如说,域名 A http://domaina.example 的某 Web 应用通过 <img> 标签引入了域名 B:http://domainb.foo 的某图片资源 http://domainb.foo/image.jpg,域名 A 的 Web 应用会触发浏览器发起一个跨域 HTTP 请求。

GET、POST、PUT、DELETE、HEAD等全选,可以满足正常存储云同步的相关要求

  • 配置选项位于
    • Bucket主页
      • 数据安全
        • 跨域设置
          • 规则样例
            • HEADER写入*号
app://obsidian.md
capacitor://localhost
http://localhost

Pasted image 20230108045446.pngAn image to describe post 阿里云OSS

子账号与授权

选择 AccessKey管理
选择子用户AccessKey管理
在 创建用户 页面,输入 登录名称显示名称
勾选 OpenAPI调用访问,决定账号具有 API 调用权限
得到AccessKey ID 和 AccessKey Secret,注意保存
Pasted image 20230108050021.pngAn image to describe post 阿里云OSS
进行授权管理
新创建的用户分配资源管理权限

  • 权限管理
  • Bucket授权管理
  • 分别对应子用户、Bucket或者目录、权限

Obsidian和OSS同步的方案

Remotely Save插件安装

选择 第三方插件(Community Plugins)
安装Remotely Save

Remotely Save参数配置

远程服务 选择 S3或兼容S3的服务 服务地址(Endpoint)和 区域(Region) 这两个
在上文创建的 Bucket 概览 页面
启用插件:设置页面里的第三方插件
进入配置:
服务地址(Endpoint) 对应 外网访问
区域(Region) 对应 ESC 的经典网络访问(内网)
配置可访问性
Access Key ID 、Secret Access Key确认无误
填写Bucket名称

Remotely Save功能使用

- 初始化同步
- 检查是否可以链接上
- 左侧边栏刷新按钮随时更新
- 开启并定义插件更新的间隔时长

Windows挂载OSS存储资源

相关工具

WinFsp

WinFsp(Windows File System Proxy)是一款 Windows 平台下的文件系统代理软件。类似 FUSE (Filesystem in Userspace)。

工具特点:

  1. 在用户模式下,可以轻易的创建文件系统,不受任何的限制(除了响应及时的文件系统请求)。
  2. 支持磁盘和基于网络的文件系统。
  3. 支持 NTFS 系统安全访问控制。
  4. 支持内存映射文件、缓存文件和新的缓存管理器。
  5. 支持文件更改通知。
  6. 支持文件锁。
  7. 支持文件共享,删除和重命名。
    样例版本:winfsp-1.11.22103.msi
    网盘下载 提取码:su4m

rclone

Rclone是一款命令行工具,支持在不同对象存储、网盘间同步、上传、下载数据。采用Go语言开发。支持本地与云存储间双向数据复制/同步,也支持不同云存储间的数据复制/同步。
rclone支持Linux、Windows、MacOS操作系统,但不支持CentOS/RHEL5.x

Rclone使用以及配置

Linux环境

安装

可以使用官方提供的安装脚本:
`curl https://rclone.org/install.sh | sudo bash
Rclone的配置
在迁移到云的场景下,需要先将云端存储添加到Rclone系统中。可直接修改配置文件添加云端存储,或者进入交互式配置***(Windows适用)***来选择,任选一种方式即可。

工具配置

修改配置文件

Rclone 配置文件存放在配置文件在 ~/.config/rclone/rclone.conf,可直接修改,以下为阿里香港OSS作为源的配置示例:

[ali-oss]
type = s3
provider = Alibaba
access_key_id = xxxxxxxxxxx
secret_access_key = xxxxxxxxxxx
endpoint = oss-cn-hongkong.aliyuncs.com
交互式配置

以下为阿里香港OSS作为源的配置示例:

运行 rclone config,并选择 n,这表示新建远程连接。
给新的远程连接起个名字,比如“ali-oss”
storage选择4 “Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS”
provider选择2 “Alibaba Cloud Object Storage System (OSS) formerly Aliyun”
env_auth选择false
输入阿里云access key/secret key
endpoint选择区域
acl可以直接enter
storage_class选择1 “default”

Windows 环境使用

样例版本:rclone-v1.58.0-windows-amd64.zip
网盘下载 提取码:e4j4

  • 将压缩包解压到本地。
  • 设置环境变量

打开任意文件夹,并在左侧导航目录下找到此电脑,单击右键选择属性 > 高级系统设置 > 环境变量 > 系统变量 > Path,或者运行框sysdm.cpl,单击新建。
在弹出的窗口中,填写 Rclone 解压后的路径(例如:E:\AutoRclone),单击确定。

  • 检查安装状态

打开 Windows 命令行窗口,输入rclone --version 命令,按 Enter,查看 Rclone 是否成功安装。

配置Remote

进入Remote配置环境
执行cmd命令:rclone config
创建新配置文件
n选择“New remote”,输入名称,本地磁盘将以此命名。
选择存储类型
选择“ Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Lyve Cloud, Minio, RackCorp, SeaweedFS, and Tencent COS”
选择供应商
选择“S3 provider”中的“ Tencent Cloud Object Storage (COS)”
选择验证选项
选择“ Enter AWS credentials in the next step.”,
输入SecretId
输入SecretKey
选择对象存储所在地域
据你的OSS所在地域选择。
选择本地映射磁盘的操作权限
选“1-默认权限”即可。
选择本地映射磁盘的存储类
选“1-默认存储类”即可。
选择高级配置选项
选“n-NO”即可。
选择配置文件保存选项
选“y”确认并完成配置。
执行后续操作
选“q-Quit config”退出配置。

挂载对象存储

执行挂载命令,将对象存储挂载为本地磁盘
挂载命令格式:rclone mount [remote name]:/ [盘符]: --no-check-certificate --allow-other --allow-non-empty
示例:rclone mount oss:/ z: --no-check-certificate --allow-other --allow-non-empty

自动化后台执行

bat批处理
#关闭命令行执行回显
@echo off
#执行挂载命令,将oss配置文件挂在为S盘
rclone mount oss:/ s: --no-check-certificate --allow-other --allow-non-empty
vbs后台处理
#创建脚本对象ws,继承shell类,用于执行命令行
set ws=WScript.CreateObject("WScript.Shell")
#针对创建的对象ws执行命令脚本,并静默运行
ws.Run "C:\oss-start.bat /start",0
设置为开机自动启动

将vbs脚本文件,存储于C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup之中

同步实现

Sync-toy工具

  • 采用SNYC-Toy工具界面实现本地存储和云端存储的手工同步
  • 使用计划任务的定时任务,配合Sync-toy文件夹中的SyncToyCmd.exe文件,在计划任务执行SyncToyCmd.exe -R参数
  • 使用计划任务中的触发功能,实现OSS挂载本地盘符后,启动同步任务
  • 设定开始任务为发生事件时
  • 日志选择Microsoft-Windows-PartitionDiagnostic
  • 源选择Partition
  • 事件ID选择1006
  • 执行SyncToyCmd.exe -R参数

[#参考](思源使用阿里云 OSS 同步详细教程 - 链滴 (ld246.com))