命名和參考共用、目錄、檔案和元數據

記憶體帳戶可以包含零或多個 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 路徑字元。 在NTFS檔名中有效的代碼點 \uE000不是有效的 Unicode 字元。 此外,也不允許某些 ASCII 或 Unicode 字元,例如控制字元 (0x00) 0x1F 。 如需控管 HTTP/1.1 中 Unicode 字串的規則 ,請參閱 RFC 2616 第 2.2 節:基本規則RFC 3987
  • 不支援無效的 Unicode 字元 (稱為無效的 Surrogate 字組) 。
  • 不允許下列檔名: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通訊協定。 清單目錄和檔案和清單句柄作業需要這些字元的特殊處理,如其各自的檔所述。

根據預設,目錄結尾的點 (.) 字元會忽略或離開要求 URL 中的檔名。

  • 例如,如果正在建立名為 file1... 的檔案,則會忽略結尾的點,並建立名為 file1 的檔案。 同樣適用於路徑中的目錄。 如果檔案建立要求包含路徑 \Dir1\Dir2…\File1 ,則會在 建立 \Dir1\Dir2\File1檔案。
  • 不過,從 2022-11-02 版開始,您可以在 URL 要求中將標頭 x-ms-allow-trailing-dot 設定為 true 來覆寫預設行為。
  • 例如,如果您要建立名為 file1... 的檔案,並包含尾端點, x-ms-allow-trailing-dot 則 應該包含在要求標頭中,並將 設定為 true。 這也適用於建立目錄名稱。
  • 如果是檔案複製要求,如果您想要在原始程式檔名稱中包含尾端點, x-ms-source-allow-trailing-dot 標頭必須設定為 true。 如需詳細資訊,請參閱每個個別 REST API 的可用標頭選項。

下表比較 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  

另請參閱