使用 Azure 資料箱磁碟保留檔案 ACL、屬性和時間戳記
Azure 資料箱磁碟可讓您在將資料傳送至 Azure 時保留存取控制清單 (ACL)、時間戳記和檔案屬性。 本文說明將資料複製到資料箱磁碟,以上傳至Azure 檔案儲存體時可傳輸的中繼資料。
傳輸的中繼資料
ACL、時間戳記和檔案屬性是將資料從資料箱磁碟上傳至 Azure 檔案儲存體時所傳輸的中繼資料。 在本文中,ACL、時間戳記和檔案屬性統稱為中繼資料。
您可以使用 Windows 資料複製工具來複製中繼資料。 將資料傳送至 Blob 儲存體時,不會保留中繼資料。
本文的後續各節會詳細討論當資料箱磁碟中的資料上傳至 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 檔案儲存體期間傳輸。
注意
系統不會複製具有包含條件式存取控制項目 (ACE) 字串的檔案。 這是已知的問題。 若要解決此問題,請掛接共用,然後使用支援複製 ACL 的複製工具以手動方式將這些檔案複製到 Azure 檔案儲存體共用。
複製資料和中繼資料
若要傳輸資料的 ACL、時間戳記和屬性,請使用下列程式將資料複製到資料箱。
Windows 資料複製工具
若要將資料複製到資料箱磁碟,請使用檔案複製工具,例如 robocopy
。 下列範例命令會複製所有檔案和目錄,連同資料一起傳輸中繼資料。
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 檔案儲存體。 如果您只有來源資料的讀取權限而且無法修改來源資料,則您只有資料箱磁碟中資料的讀取權限。 只有在您想要複製目錄和檔案上的所有 ACL 和資料時使用 /copyall
。
使用 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
這類工具複製來源資料,但不會複製中繼資料。 複製資料之後,您可以使用 smbcacls
或 cifsacl
這類工具來複製中繼資料。
下列範例命令會執行第一個步驟,使用 rsync
複製資料。
cp -aR /etc /opt/
rsync -avP /etc /opt (-a copies a directory)