使用 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)