全部產品
Search
文件中心

Object Storage Service:bucket-versioning(版本控制)

更新時間:Jul 31, 2024

如果您希望在錯誤覆蓋或者刪除對象(Object)後,能夠將Object恢複至任意時刻的歷史版本。您需要通過bucket-versioning命令開啟版本控制。版本控制是針對Bucket層級的資料保護功能。開啟版本控制後,針對資料的覆蓋和刪除操作將會以歷史版本的形式儲存下來。

注意事項

  • 要設定版本控制狀態,您必須具有oss:PutBucketVersioning許可權;要擷取版本控制狀態,您必須具有oss:GetBucketVersioning許可權。具體操作,請參見為RAM使用者授權自訂的權限原則

  • 從ossutil 1.6.16版本開始,命令列中Binary名稱支援直接使用ossutil,您無需根據系統重新整理Binary名稱。如果您的ossutil版本低於1.6.16,則需要根據系統重新整理Binary名稱。更多資訊,請參見命令列工具ossutil命令參考

  • 關於版本控制的功能詳情,請參見版本控制概述

設定版本控制狀態

  • 命令格式

    ossutil bucket-versioning --method put oss://bucketname versioning

    參數說明如下:

    參數

    說明

    bucketname

    待設定版本控制狀態的目標Bucket名稱。

    versioning

    為目標Bucket設定版本控制狀態。取值如下:

    • enabled:開啟版本控制。當Bucket處於開啟版本控制狀態時,OSS將為新上傳的Object產生全域唯一的隨機字串版本ID。有關啟用版本控制狀態下Object相關操作的更多資訊,請參見開啟版本控制下Object的操作

    • suspended:暫停版本控制。當Bucket處於暫停版本控制狀態時,OSS將為新上傳的Object產生特殊字元串為“null”的版本ID。有關暫停版本控制狀態下Object的相關操作的更多資訊,請參見暫停版本控制下Object的操作

    重要

    預設情況下,Bucket版本控制狀態為“未開啟”。一旦Bucket開啟了版本控制,將無法返回至“未開啟”狀態。但是,您可以暫停Bucket版本控制。

  • 使用樣本

    對目標儲存空間examplebucket開啟版本控制。

    ossutil bucket-versioning --method put oss://examplebucket enabled

    對目標儲存空間examplebucket暫停版本控制。

    ossutil bucket-versioning --method put oss://examplebucket suspended

    以下輸出結果表明examplebucket已成功設定版本控制狀態。

    0.261209(s) elapsed

擷取版本控制狀態

  • 命令格式

    ossutil bucket-versioning --method get oss://bucketname
  • 使用樣本

    查詢examplebucket的版本控制狀態。

    ossutil bucket-versioning --method get oss://examplebucket

    以下輸出結果表明examplebucket已開啟版本控制。

    bucket versioning status:Enabled
    
    0.218001(s) elapsed

    以下輸出結果表明examplebucket已暫停版本控制。

    bucket versioning status:Suspended
    
    0.168791(s) elapsed

    以下輸出結果表明examplebucket未開啟版本控制。

    bucket versioning status:Null
    
    0.158691(s) elapsed

相關操作

  • 在開啟版本控制的Bucket中上傳檔案的行為與未開啟版本控制狀態下的上傳行為一致。但Bucket開啟版本控制後,OSS會為新上傳至Bucket的Object產生全域唯一的versionID。詳情請參見cp(上傳檔案)

  • 開啟Bucket的版本控制後,針對資料的覆蓋和刪除操作將會以歷史版本的形式儲存下來。您可以通過指定versionID的方式下載指定版本Object,詳情請參見cp(下載檔案)。您還可以通過指定versionID的方式將Object恢複至任意時刻的歷史版本,詳情請參見cp(拷貝檔案)

通用選項

當您需要通過命令列工具ossutil切換至另一個地區的Bucket時,可以通過-e選項指定該Bucket所屬的Endpoint。當您需要通過命令列工具ossutil切換至另一個阿里雲帳號下的Bucket時,可以通過-i選項指定該帳號的AccessKey ID,並通過-k選項指定該帳號的AccessKey Secret。

例如您需要為另一個阿里雲帳號下,華東1(杭州)名為examplebucket的儲存空間開啟版本控制,命令如下:

ossutil bucket-versioning--method put oss://examplebucket enabled -e oss-cn-hangzhou.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA****  -k 67DLVBkH7EamOjy2W5RVAHUY9H****

關於此命令的其他通用選項的更多資訊,請參見通用選項