基于對象元數(shù)據(jù)進(jìn)行篩選
本文將詳細(xì)為您介紹如何通過ossutil根據(jù)對象的元數(shù)據(jù)進(jìn)行過濾,篩選出您需要的內(nèi)容。
使用場景
對于包含大量對象(Object)的Bucket,直接瀏覽或處理會非常耗時。因此,ossutil 2.0提供了一系列高效的基于元數(shù)據(jù)進(jìn)行過濾的選項,允許用戶根據(jù)特定元數(shù)據(jù)屬性對Object進(jìn)行精準(zhǔn)篩選。
前提條件
元數(shù)據(jù)過濾
ossutil 2.0 支持基于Object元數(shù)據(jù)的精細(xì)化操作篩選,這一功能主要適用于多個高級命令,如 ls
(列舉資源)、cp
(上傳、下載、拷貝文件)和 rm
(刪除)。用戶可以根據(jù)對象的特定元數(shù)據(jù)屬性(如對象類型)進(jìn)行篩選,提高效率。
參數(shù)說明
參數(shù) | 類型 | 說明 |
--metadata-include | stringArray | 指定需包含的元數(shù)據(jù)規(guī)則,即僅顯示符合這些規(guī)則的Object。 |
--metadata-exclude | stringArray | 指定需排除的元數(shù)據(jù)規(guī)則,符合條件的Object將不被顯示。 |
--metadata-filter | stringArray | 直接定義元數(shù)據(jù)過濾規(guī)則,支持更靈活的匹配邏輯。 |
--metadata-filter-from | stringArray | 從外部文件讀取元數(shù)據(jù)過濾規(guī)則,便于復(fù)雜規(guī)則的管理和復(fù)用。 |
使用
--metadata-include
時,自動隱式追加一條排除所有其他類型文件的規(guī)則- **
至列表末尾。使用
--metadata-filter "+ 規(guī)則"
添加包含規(guī)則時,不會自動添加所有的排除規(guī)則,即--metadata-include "規(guī)則"
等于--metadata-filter "+ 規(guī)則"
+--metadata-filter "- **"
。例如,若要精確篩選出bucket中的所有JPEG圖像文件,需要設(shè)置為--metadata-filter "+ content-type=image/jpeg" --metadata-filter "- **"
在處理多文件規(guī)則列表時,文件順序遵循從左到右的規(guī)則執(zhí)行,而每個文件內(nèi)部的規(guī)則是按照自上而下順序執(zhí)行,并忽略空行及以
#
或;
開始的注釋行。匹配到首個規(guī)則后,會停止后續(xù)的規(guī)則檢查。
支持的元數(shù)據(jù)類型
存儲類型:采用x-oss-storage-class=value,value取值Standard、IA、Archive、ColdArchive、DeepColdArchive。
Object類型:采用x-oss-object-type=value,value取值Normal、Multipart、Appendable、Symlink。
解凍恢復(fù)狀態(tài):采用x-oss-restore=value,value根據(jù)實際值填寫。
Content-Type:采用 content-type=value,value根據(jù)實際值填寫。
用戶自定義元數(shù)據(jù):用戶自定義元數(shù)據(jù)應(yīng)遵循規(guī)范格式
x-oss-meta-aaa=value
,其中x-oss-meta-
是固定前綴,表示用戶自定義元數(shù)據(jù)的開始,而aaa
部分允許您根據(jù)需求自定義鍵名,value根據(jù)實際值填寫。例如x-oss-meta-location:hangzhou
。
示例
篩選特定存儲類型的對象
以下命令用于篩選
examplebucket
中存儲類型為標(biāo)準(zhǔn)存儲的對象。ossutil ls oss://examplebucket --metadata-include "x-oss-storage-class=Standard"
以下命令用于篩選
examplebucket
中歸檔,冷歸檔和深度冷歸檔類型的對象。ossutil ls oss://examplebucket --metadata-include "x-oss-storage-class=*Archive"
篩選特定解凍狀態(tài)的對象
參數(shù) | 類型 | 示例值 | 描述 |
x-oss-restore | 字符串 |
| 您可以調(diào)用
|
以下示例用于篩選
examplebucket
中正處于解凍狀態(tài)的對象,其中**標(biāo)識用來匹配任何時間。ossutil ls oss://examplebucket --metadata-include "x-oss-restore=ongoing-request=\"true\"**"
以下示例用于篩選
examplebucket
中已經(jīng)解凍完成的對象,其中**標(biāo)識用來匹配任何時間。ossutil ls oss://examplebucket --metadata-include "x-oss-restore=ongoing-request=\"false\"**"
篩選特定元數(shù)據(jù)屬性的對象
以下命令用于篩選
examplebucket
中所有JPEG格式的圖片文件,以便進(jìn)行特定的操作或數(shù)據(jù)分析:ossutil ls oss://examplebucket --metadata-include "content-type=image/jpeg"
以下命令用于篩選
examplebucket
中所有txt格式的文件,其后的*5.txt
規(guī)則實際上不會產(chǎn)生額外效果:ossutil ls oss://examplebucket --metadata-include "*.txt" --metadata-include "*5.txt"
篩選特定格式的對象
以下命令用于篩選examplebucket
中所有JPEG格式的圖片文件。使用--metadata-filter
參數(shù),并結(jié)合+
和-
符號來指定包含和排除條件。將列出存儲桶examplebucket
中所有Content-Type
為image/jpeg
的文件,而其他類型的文件將被排除在外。
ossutil ls oss://examplebucket --metadata-filter "+ content-type=image/jpeg" --metadata-filter "- **"
通過規(guī)則文件實現(xiàn)復(fù)雜條件篩選
當(dāng)過濾條件較為復(fù)雜或者需要同時應(yīng)用多個不同的過濾規(guī)則時,可以預(yù)先創(chuàng)建規(guī)則文件進(jìn)行篩選。
以下規(guī)則文件metadata_filters.txt
用于篩選出存儲類型為標(biāo)準(zhǔn)存儲的所有JPEG圖片:
# rules file: metadata_filters.txt
+ content-type=image/jpeg
+ x-oss-storage-class=Standard
- **
使用--metadata-filter-from
選項調(diào)用該規(guī)則文件來進(jìn)行篩選:
ossutil ls oss://examplebucket --metadata-filter-from metadata_filters.txt