使用 Azure 資料箱保留檔案 ACL、屬性和時間戳記

Azure 資料箱可讓您在將資料傳送至 Azure 時保留存取控制清單(ACL)、時間戳記和檔案屬性。 本文說明透過伺服器訊息區將資料複製到資料箱時,您可以傳輸的中繼資料,以上傳至Azure 檔案儲存體。

傳輸的中繼資料

ACL、時間戳記和檔案屬性是將資料從資料箱上傳至Azure 檔案儲存體時所傳輸的中繼資料。 在本文中,ACL、時間戳記和檔案屬性會統稱為 中繼資料

您可以使用 Windows 和 Linux 資料複製工具來複製中繼資料。 將資料傳輸到 Blob 儲存體時,不會保留中繼資料。 透過 NFS 複製資料時,也不會傳輸中繼資料。

本文的後續各節會詳細討論當資料箱中的資料上傳至Azure 檔案儲存體時,時間戳記、檔案屬性和 ACL 的傳輸方式。

時間戳記

傳輸下列時間戳記:

  • CreationTime
  • LastWriteTime

不會傳輸下列時間戳記:

  • LastAccessTime

檔案屬性

除非另有說明,否則會傳輸檔案和目錄上的檔案屬性。

傳輸下列檔案屬性:

  • FILE_ATTRIBUTE_READONLY (僅限檔案)
  • FILE_ATTRIBUTE_HIDDEN
  • FILE_ATTRIBUTE_SYSTEM
  • FILE_ATTRIBUTE_DIRECTORY (僅限目錄)
  • FILE_ATTRIBUTE_ARCHIVE
  • FILE_ATTRIBUTE_TEMPORARY (僅限檔案)
  • FILE_ATTRIBUTE_NO_SCRUB_DATA

不會傳輸下列檔案屬性:

  • FILE_ATTRIBUTE_OFFLINE
  • FILE_ATTRIBUTE_NOT_CONTENT_INDEXED

目錄上的唯讀屬性不會傳送。

替代資料流程和擴充屬性

Azure 檔案儲存體、分頁 Blob 或區塊 Blob 儲存體不支援替代資料流程 和擴充屬性,因此在複製資料時不會傳輸它們。

ACL

根據所使用的傳輸方法,以及您是否使用 Windows 或 Linux 用戶端,在檔案和資料夾上的部分或所有任意和預設存取控制清單(ACL)可能會在資料複製期間傳輸至Azure 檔案儲存體。

ACL 的傳輸預設為啟用。 您可能想要在資料箱上的本機 Web UI 中停用此設定。 如需詳細資訊,請參閱 使用本機 Web UI 來管理您的資料箱和 Data Box Heavy

注意

不會複製包含條件式存取控制專案 (ACE) 字串的 ACL 檔案。 這是已知的問題。 若要解決此問題,請掛接共用,然後使用支援複製 ACL 的複製工具,手動將這些檔案複製到Azure 檔案儲存體共用。

透過 SMB 傳輸 ACL

SMB 檔案傳輸 期間,會傳輸下列 ACL:

  • 您複製到資料箱之目錄和檔案的任意 ACL(DACL)和系統 ACL(SCL)。
  • 如果您使用 Linux 用戶端,則只會傳輸 Windows NT ACL。

透過資料複製服務傳輸 ACL

在資料複製服務檔案傳輸 期間,會傳輸下列 ACL:

  • 您複製到資料箱之目錄和檔案的任意 ACL(DACL)和系統 ACL(SCL)。

若要從檔案複製 SCL,您必須為具有 SeBackupPrivilege 的使用者提供認證。 管理員istrators 或 Backup Operators 群組中的使用者預設會有此許可權

如果您沒有 SeBackupPrivilege

  • 您將無法複製Azure 檔案儲存體複製服務作業的 SCL。
  • 您可能會在錯誤記錄檔中遇到存取問題,並收到此錯誤: 由於許可權 不足,無法從共用讀取 SCL。

如需詳細資訊,請深入瞭解 SeBackupPrivilege

ACL 透過 NFS 傳輸

當您透過 NFS 複製資料時,不會傳輸 ACL(和中繼資料屬性)。

預設 ACL 傳輸

即使您的資料複製工具未複製 ACL,當您使用 Windows 用戶端時,目錄和檔案上的預設 ACL 也會傳輸至Azure 檔案儲存體。 當您使用 Linux 用戶端時,不會傳輸預設 ACL。

傳輸下列預設 ACL:

  • 帳戶權限:

    • 內建的 Administrator 帳戶
    • SYSTEM 帳戶
    • 用來在資料箱中掛接和複製資料的 SMB 共用使用者帳戶
  • 具有這些屬性的安全性描述元:DACL、擁有者、群組、SACL

複製資料和中繼資料

若要傳輸資料的 ACL、時間戳記和屬性,請使用下列程式將資料複製到資料箱。

Windows 資料複製工具

若要透過 SMB 將資料複製到資料箱,請使用 SMB 相容的檔案複製工具,例如 robocopy 。 下列範例命令會複製所有檔案和目錄,並將中繼資料連同資料一起傳輸。

使用 /copyall/dcopy:DAT 選項時,請確定必要的備份操作員許可權不會停用。 如需詳細資訊,請參閱 使用本機 Web UI 來管理您的資料箱和 Data Box Heavy

robocopy <Source> <Target> * /copyall /e /dcopy:DAT /B /r:3 /w:60 /is /nfl /ndl /np /MT:32 or 64 /fft /log+:<LogFile>

where

選項 描述
/copyall 複製所有屬性。
/e 複製子目錄,包括空白目錄。
/dcopy:DAT 複製資料、屬性和時間戳記。 注意:/dcopy:DAT 選項必須用來在目錄上傳輸 CreationTime
/B 以備份模式複製檔案。
/r:3 指定失敗複本的 3 次重試。
/w:60 指定重試之間的等候時間 60 秒。
/is 包含相同的檔案。
/nfl 不會記錄檔名稱。
/ndl 不會記錄目錄名稱。
/np 不會顯示覆製作業的進度。
/MT:32 or 64 使用多執行緒,搭配 32 或 64 個執行緒。
/fft 減少任何檔案系統的時間戳記細微性。
/log+:<LogFile> 將輸出附加至現有的記錄檔。

如需這些 robocopy 參數的詳細資訊,請參閱 教學課程:透過 SMB 將資料複製到 Azure 資料箱

注意

如果您使用 /copyall 來複製資料,目錄和檔案上的來源 ACL 會傳輸至Azure 檔案儲存體。 如果您只具有來源資料的讀取權限,而且無法修改來源資料,則只有資料箱中的資料具有唯讀許可權。 /copyall只有當您想要複製目錄和檔案上的所有 ACL 以及資料時,才使用 。

使用 robocopy 列出、複製、修改資料箱上的檔案

以下是使用 複製資料 robocopy 時所使用的一些常見案例。

  • 僅將資料複製到資料箱,目錄和檔案上沒有 ACL

    /dcopy:DAT使用 選項只複製資料、屬性、時間戳記。 不會複製目錄和檔案上的 ACL。

  • 將目錄和檔案上的資料和 ACL 複製到資料箱

    使用 /copyall 來複製所有來源資料,包括目錄和檔案上的所有 ACL。

  • 使用 robocopy 列出資料箱上的檔案系統

    使用此命令來列出目錄內容:

    robocopy <source-dir> NULL /l /s /xx /njh /njs /fp /B

    請注意,檔案總管不允許列出這些檔案。

  • 複製或刪除資料箱上的資料夾和檔案

    使用此命令複製單一檔案:

    robocopy <source-dir> <destination-dir> <file-name> /B

    使用此命令刪除單一檔案:

    robocopy <source-dir> <destination-dir> <file-name> /purge /B

    在上述命令中 <source-dir> ,不應該有 檔案: <file-name> 。 然後,上述命令會將目的地與來源同步,導致從目的地移除檔案。

    請注意,檔案總管可能不允許您執行上述作業。

如需詳細資訊,請參閱 使用 robocopy 命令

Linux 資料複製工具

在 Linux 中傳輸中繼資料是兩個步驟的程式。 首先,您會使用 之類的工具複製來源資料,而 rsync 此工具不會複製中繼資料。 複製資料之後,您可以使用 或 cifsacl 之類的 smbcacls 工具來複製中繼資料。

下列範例命令會執行第一個步驟,使用 rsync 複製資料。

cp -aR /etc /opt/ 
rsync -avP /etc /opt (-a copies a directory)

下一步