对象存储 OSS 管理软链接

By | 2021年4月22日

软链接功能用于快速访问对象存储空间内的常用文件。设置软链接后,您可以通过软链接文件快速打开源文件,类似于Windows的快捷方式。本文介绍如何在受版本控制的存储空间(Bucket)中管理软链接。

创建软链接

软链接本身也可以有多个版本,每个不同的版本可以指向不同的TargetObject,版本ID由OSS自动生成,在响应header中返回x-oss-version-id。您可以通过创建软链接指向TargetObject的当前版本。

说明 在受版本控制的Bucket中,无法为删除标记(Delete Marker)创建软链接。

以下代码用于创建软链接:

using Aliyun.OSS;
var endpoint = "<yourEndpoint>";
var accessKeyId = "<yourAccessKeyId>";
var accessKeySecret = "<yourAccessKeySecret>";
var bucketName = "<yourBucketName>";
var targetObjectName = "<yourTargetObjectName>";
var symlinkObjectName = "<yourSymlinkObjectName>";
var objectContent = "More than just cloud.";
// 创建OssClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
    // 上传TargetObject。
    byte[] binaryData = Encoding.ASCII.GetBytes(objectContent);
    MemoryStream requestContent = new MemoryStream(binaryData);
    client.PutObject(bucketName, targetObjectName, requestContent);
    // 创建软链接。
    client.CreateSymlink(bucketName, symlinkObjectName, targetObjectName);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}

创建软链接的详细信息请参见PutSymlink

获取软链接

GetSymlink接口默认获取软链接的当前版本。允许通过指定versionId来获取指定版本。如果软链接的当前版本为删除标记,OSS会返回404 Not Found,在响应header中返回x-oss-delete-marker = true以及版本ID : x-oss-version-id。

说明 获取软链接操作需要您对该软链接有读权限。

以下代码用于获取软链接:

using Aliyun.OSS;
var endpoint = "<yourEndpoint>";
var accessKeyId = "<yourAccessKeyId>";
var accessKeySecret = "<yourAccessKeySecret>";
var bucketName = "<yourBucketName>";
var symlinkObjectName = "<yourSymlinkObjectName>";
var versionid = "<yourArchiveObjectVersionid>";
// 创建OssClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
    // 获取软链接指向的目标文件名称。
    var request = new GetSymlinkRequest(bucketName, symlinkObjectName)
    {
        // 获取指定版本的软链接的内容。
        VersionId = versionid
    };
    var ossSymlink = client.GetSymlink(request);
    Console.WriteLine("Target object is {0}", ossSymlink.Target);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}

获取软链接的详细信息请参见GetSymlink

请关注公众号获取更多资料

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注