命名和參考共用、目錄、檔案和元數據
記憶體帳戶可以包含零個或多個 Azure 檔案共用。 共用包含屬性、元數據,以及零個或多個檔案或目錄。 目錄包含屬性和零個或多個檔案或目錄。 檔案是由二進位數據、屬性和元數據所組成的任何單一實體。
資源名稱
參考共用、目錄或檔案的 URI 必須是唯一的。 在指定的記憶體帳戶內,每個共用都必須有唯一的名稱。 指定共用或目錄內的每個檔案也必須在該共享或目錄中有唯一的名稱。
如果您嘗試建立名稱違反命名規則的共用、目錄或檔案,要求會失敗,狀態代碼為 400 (不正確的要求)。
共用名稱
檔案服務共用名稱的規則比SMB共用名稱的SMB通訊協定所規定的規則更嚴格,因此Blob和檔案服務可以共用容器和共用的類似命名慣例。 共用的命名限制如下所示:
- 共用名稱必須是有效的 DNS 名稱。
- 共用名稱必須以字母或數字開頭,而且只能包含字母、數位和連字元/減號(-) 字元。
- 每個連字元/減號 (-) 字元必須緊接在前面,後面接著字母或數位;共用名稱中不允許連續連字元。
- 共用名稱中的所有字母都必須是小寫。
- 共用名稱長度必須介於 3 到 63 個字元之間。
下表比較 Azure 檔案記憶體和 Azure Blob 記憶體的命名限制:
命名和參考容器、Blob 和元數據 | SMB 共用名稱限制 |
---|---|
• 容器名稱必須是有效的 DNS 名稱。 • 容器名稱必須以字母或數字開頭,而且只能包含字母、數位和連字元/減號(-) 字元。 • 每個連字元/減號 (-) 字元必須緊接在前面,後面接著字母或數位;容器名稱中不允許連續連字元。 • 容器名稱中的所有字母都必須是小寫。 • 容器名稱長度必須 3 到 63 個字元。 |
• 共用名稱長度不得超過80個字元。 • 下列字元在共享名稱中是非法的: \ / [ ] : ¦ < > + = ; , * ? " • 控制範圍0x00到0x1F、內含的字元在共享名稱中是非法的。 • 所有其他 Unicode 字元都是合法的。 • 名稱會保留大小寫,且不區分大小寫。 |
目錄和檔名
Azure 檔案服務會針對目錄和檔名強制執行下列命名規則:
- 目錄和檔名會保留大小寫且不區分大小寫。
- 目錄和檔案元件名稱長度不得超過 255 個字元。
- 目錄名稱不能以正斜線字元 (/) 結尾。 如果提供,系統會自動移除。
- 檔名不得以正斜線字元 (/) 結尾。
- 保留的 URL 字元必須正確逸出。
- 不允許下列字元:
" \ / : | < > * ?
- 不允許非法 URL 路徑字元。 程序代碼點,例如
\uE000
,而在NTFS檔名中有效,則不是有效的Unicode字元。 此外,也不允許某些 ASCII 或 Unicode 字元,例如控制字元(0x00
至0x1F
)。 如需在 HTTP/1.1 中控管 Unicode 字串的規則,請參閱 RFC 2616 第 2.2 節:基本規則 和 RFC 3987。 - 不支援無效的 Unicode 字元(稱為無效的代理字組)。
- 不允許下列檔名:LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、PRN、AUX、NUL、CON、CLOCK$、dot character (.)和兩個點字元(..)。
- 從 2021-12-02 版開始,目錄和檔名可透過所有作業支援 U+FFFE 和 U+FFFF 字元。 SMB 和 REST 通訊協定也支援這些字元。 清單目錄和檔案 和 清單句柄 作業需要這些字元的特殊處理,如各自的檔中所述。
根據預設,啟用SMB通訊協定的檔案共用會忽略或排除在要求URL中目錄結尾的點 (.) 字元和檔名。
- 例如,如果正在建立名為
file1...
的檔案,則會忽略結尾的點,並建立名為file1
的檔案。 這同樣適用於路徑中的目錄。 如果檔案建立要求包含路徑\Dir1\Dir2…\File1
,則會在\Dir1\Dir2\File1
建立檔案。 - 不過,從版本 2022-11-02開始,您可以將
x-ms-allow-trailing-dot
標頭設定為 URL 要求中的true
來覆寫預設行為。 - 例如,如果您要建立名為
file1...
的檔案並包含尾端點,則x-ms-allow-trailing-dot
應該包含在要求標頭中,並將 設定為true
。 同樣適用於建立目錄名稱。 - 如果是檔案複製要求,如果您想要在原始程式檔名稱中包含尾端點,則必須將
x-ms-source-allow-trailing-dot
標頭設定為true
。 如需詳細資訊,請參閱每個個別 REST API 的可用標頭選項。
根據預設,在啟用 NFS 通訊協定的檔案共用中,目錄結尾的點 (.) 字元和要求 URL 中的檔名 不會忽略。
下表比較 Azure 檔案記憶體和 Azure Blob 記憶體的命名限制:
命名和參考容器、Blob 和元數據 | SMB 通訊協定名稱限制 |
---|---|
• Blob 名稱長度必須至少為一個字元,且長度不能超過 1,024 個字元。 • Blob 名稱區分大小寫。 • 保留的 URL 字元必須正確逸出。 • Blob 名稱可以以虛擬目錄分隔符結尾,例如正斜線 (/) • 不允許非法的 URL 路徑字元:程式代碼點,例如 \uE000,而在 NTFS 檔名中有效,則不是有效的 Unicode 字元。 此外,也不允許某些 ASCII 或 Unicode 字元,例如控制字元(0x00至0x1F)。 如需在 HTTP/1.1 中控管 Unicode 字串的規則,請參閱 RFC 2616 第 2.2 節:基本規則 和 RFC 3987。 |
• 路徑名稱長度不能超過 32,760 個字元。 • 每個路徑名稱元件(檔案/目錄)長度不得超過 255 個字元。 • 路徑名稱是由一或多個路徑名稱元件所組成,以 (\) 向後斜線字元分隔。 • 路徑名稱會保留大小寫,且不區分大小寫(兩個名稱只允許大小寫不同)。 • 不能有與檔案路徑相同的目錄路徑。 • 元件名稱中下列字元不合法: \ / : ¦ < > * ? " • 控制範圍0x00到0x1F、內含的字元在共享名稱中是非法的。 |
路徑名稱
路徑名稱是由一或多個路徑名稱元件(目錄或檔名)所組成,並以正斜線 (/) 字元分隔。 最後一個路徑名稱元件以外的所有路徑名稱元件代表目錄。 最後一個路徑名稱元件代表目錄或檔案。 適用下列命名規則:
- 路徑名稱長度不能超過 2,048 個字元。 路徑中的個別元件長度上限為 255 個字元。
- 路徑名稱是由一或多個路徑名稱元件所組成,以正斜線 (/) 字元分隔。
- 路徑中的子目錄深度不能超過 250。
- 同名不能用於共用相同父目錄的檔案和目錄。 例如,每個具名
data
的檔案和目錄都不能存在於相同的父路徑下。
元數據名稱
共用或檔案資源的元數據會儲存為與資源相關聯的名稱/值組。 中繼資料名稱必須遵循 C# 識別子的命名規則,。
元數據名稱會保留建立它們的大小寫,但在設定或讀取時不區分大小寫。 如果針對資源提交兩個或多個具有相同名稱的元數據標頭,Azure 檔案服務會傳回狀態代碼 400 (不正確的要求)。
資源 URI 語法
每個資源都有對應的基底 URI,其會參考資源本身。 針對記憶體帳戶,基底 URI 僅包含帳戶的名稱:
https://myaccount.file.core.windows.net
針對共用,基底 URI 包含帳戶的名稱和共享的名稱:
https://myaccount.file.core.windows.net/myshare
針對目錄,基底 URI 包含帳戶的名稱、共用的名稱,以及目錄的路徑:
https://myaccount.file.core.windows.net/myshare/myparentdir/mydir
對於檔案,基底 URI 包含帳戶的名稱、共用的名稱,以及檔案的路徑:
https://myaccount.file.core.windows.net/myshare/myfile
https://myaccount.file.core.windows.net/myshare/mydir/myfile
https://myaccount.file.core.windows.net/myshare/myparentdir/mydir/myfile