
# 软链接
类似于Windows的快捷方式，软链接（Symbolic Link）用于提高资源管理灵活性和访问便捷性。创建一个指向目标对象的软链接，打开软链接即可访问目标对象。软链接的使用场景主要有：
- **对象迁移** **过渡期间的平滑衔接**：当对象存储路径进行变更时，希望通过旧的路径继续访问，避免修改客户端代码。软链接可作为过渡方案，确保业务无感知。例如文件从old-path/file.txt迁移到new-path/file.txt，可创建一个软链接 old-path/file.txt 指向 new-path/file.txt，这样用户仍然可以通过 old-path/file.txt 访问到文件。
- **提高文件访问灵活性，节省存储成本**：通过创建多个软链接，可以为同一个文件设置多个访问路径，而无需复制文件本身。这不仅节省了存储成本，还简化了文件管理。
- **文件更新时的无缝切换**：当需要更新某个文件时，直接覆盖原文件可能导致短暂的不可用时间，或者需要复杂的切换逻辑，使用软链接可以实现无缝切换。例如您原先的文件是data/file.txt，后续修改后的新文件是data/new-file.txt，创建软链接data/file.txt指向data/new-file.txt，客户端可以继续通过 data/file.txt 访问到最新的内容，无需修改客户端业务逻辑。
- **简化复杂路径的访问**：复杂的对象路径不方便记忆或直接访问，通过创建一个简短的软链接，可以为复杂路径的文件提供一个简单的访问入口。
#### 约束限制
![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/caution_3.0-zh-cn.png)
当前功能仅部分区域支持（例如华东二等），具体支持情况以控制台实际展示为准。
| 约束类别 | 具体约束                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|
| 功能约束 | - 仅支持对象桶，**不支持并行文件系统**创建软链接。  - **不支持跨区域复制和同区域复制功能**，即无法使用该功能复制软链接对象。  - 软链接对象**不支持目标CDN刷新**，即软链接的目标对象变化不能通过软链接访问及时触发CDN刷新。  - 软链接对象本身**不支持服务器端加密**。   |
| 其他约束 | - 目标对象可以是对象、文件夹，但不能是软链接。  - 软链接对象的对象名长度不能超过1024字节。  - 移动、删除目标对象后，您将无法通过软链接访问目标对象。                                                                                                                                                                                                                         |
   
#### 注意事项
- 软链接对象的**etag值**：将目标对象的对象名作为内容进行计算产生的etag。
- 软链接对象的**存储类别**：支持标准、低频、归档和深度归档存储类别。软链接本身无需恢复操作（恢复软链接报错405，提示OperationNotSupported），但是如果软链接指向的目标对象是归档、深度归档对象，需要先恢复目标对象，才能通过软链接正常下载（GetObject）目标对象。
- 软链接对象加入**桶清单**的统计范围：桶存量统计时，将软链接对象与普通对象做一样的统计处理，软链接对象的对象大小为目标对象的对象名长度。
- **跨桶复制**软链接对象，如果目标桶中也存在与源桶中同名的目标对象，目标桶中的软链接对象也能正常访问目标桶中的目标对象。
- 软链接对象的[元数据](https://support.huaweicloud.com/usermanual-obs/obs_03_0324.html#ZH-CN_TOPIC_0000002394391341)**，** 与目标对象是相互独立。例如**Content-Type** ，您可以在[创建软链接](https://support.huaweicloud.com/api-obs/obs_04_0186.html)时通过Content-Type头域设置，也可以在创建后通过[修改对象元数据](https://support.huaweicloud.com/api-obs/obs_04_0091.html)接口设置。如果未设置，系统会默认将软链接Content-Type设置为binary/octet-stream。
 
#### 相关权限
表1软链接操作相关权限 
| 操作           | 需要的权限                                                                         |
|:---|:---|
| 创建软链接        | 需要PutObject权限，创建软链接不会校验您对目标对象是否有访问权限。                                         |
| 通过软链接访问目标对象  | 通过HeadObject/GetObject接口访问，软链接的访问权限遵循**最小权限原则，**需要同时拥有软链接对象和目标对象的GetObject权限。 |
| 获取软链接对象本身的信息 | 通过获取软链接GetSymlink接口访问，需要GetObject权限。                                          |
| 复制软链接        | 需要GetObject、PutObject权限，复制操作不支持修改，即不能通过头域重新设置软链接指向的目标对象**。**                  |
| 删除软链接        | 需要DeleteObject权限，删除目标对象和删除软链接相互独立，不会互相影响。                                     |
   
建议使用IAM或桶策略进行授权，相关授权方式介绍可参见[OBS权限控制概述](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0001.html)，配置方式详见[使用IAM自定义策略](https://support.huaweicloud.com/usermanual-obs/obs_03_0121.html)、[配置对象策略](https://support.huaweicloud.com/usermanual-obs/obs_03_0075.html)。
#### 与多版本结合
**未开启多版本时**：
- 创建软链接时，如果同一路径下存在同名软链接，则旧链接会被新链接覆盖。
- 创建软链接时，如果同一路径下存在同名的普通对象（非软链接），则普通对象会被软链接覆盖。
**开启多版本时**：
- 创建软链接时，如果同一路径下存在同名软链接，则旧链接成为历史版本，新链接成为当前版本。
- 创建软链接时，如果同一路径下存在同名的普通对象（非软链接），当前对象是新生成的软链接，普通对象会成为历史版本。
- 桶开启多版本控制后，软链接对象也可以拥有多个版本，每个版本都有唯一的VersionID，且当前版本和历史版本都可以指向一个目标对象。需要注意的是，如果指向的目标对象也拥有多个版本，软链接只能指向目标对象的最新版本，无法指向目标对象的历史版本。
图1软链接与多版本结合   
![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002352481612.png "点击放大")
#### 软链接相关操作
#### 使用OBS控制台
1. 在OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)左侧导航栏选择"桶列表"。
2. 在桶列表中，单击待操作的桶，进入"对象"页面。
3. 找到目标文件，单击右侧操作列的"设置软链接"。
4. 在弹窗中填写软链接信息，单击"确定"。 
   设置软链接对象路径时，请遵循界面提示的路径规则。假设您当前的文件在/file/目录下：
   - 如果选择绝对路径，命名为linktest1，则软连接所在路径是/linktest1。
   
   - 如果选择当前路径，命名为linktest2，则软连接所在路径是/file/linktest2。
   
   
   图2设置软链接   
   ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002465704005.png)
   
   ![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/caution_3.0-zh-cn.png)
   当您为 myfile.jpg 这类带扩展名的文件创建了一个不带扩展名的软链接（例如，软链接名为 myfile）时，会在访问和下载时遇到以下情况：
   - 通过[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)或者URL在线预览通常正常。
   
   - 下载后无法直接打开：当您下载这个文件时，系统会默认使用软链接的名称（myfile）作为保存后的文件名。由于缺少了 .jpg 这个扩展名，您的操作系统无法自动识别该文件的类型，因而不知道应该用哪个程序来打开它，通常会将其标记为"未知文件"类型。如需打开文件，请添加正确的文件扩展名。
    
   
   

5. 设置完成后，软链接也会显示在对象列表中，![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002432093024.png)表示软链接文件。单击软链接名称可以查看详细信息。
   
   图3软链接文件   
   ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002465544773.png)
   
   
   
 
#### 使用API
[创建软链接](https://support.huaweicloud.com/api-obs/obs_04_0186.html)
[获取软链接](https://support.huaweicloud.com/api-obs/obs_04_0187.html)
#### 使用SDK
| [Java](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_2313.html) | Python：暂不支持 | PHP：暂不支持 | Node.js：暂不支持 | iOS：暂不支持 | GO：暂不支持 | C：暂不支持 | [BrowserJS](https://support.huaweicloud.com/sdk-browserjs-devg-obs/obs_24_0708.html) | Android：暂不支持 | .NET：暂不支持 |
|---|---|---|---|---|---|---|---|---|---|
   
