你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure Data Box 磁盘保留文件 ACL、属性和时间戳

Azure Data Box Disk 允许在将数据发送到 Azure 时保留访问控制列表(ACL)、时间戳和文件属性。 本文介绍在将数据复制到 Data Box Disk 时可以传输的元数据,以将其上传到 Azure 文件中。

传输的元数据

ACL、时间戳和文件属性是将数据从 Data Box 磁盘上传到 Azure 文件时传输的元数据。 在本文中,ACL、时间戳和文件属性统称为 元数据

可以使用 Windows 数据复制工具复制元数据。 将数据传输到 Blob 存储时,不会保留元数据。

本文的后续部分详细介绍了将数据从 Data Box Disk 上传到 Azure 文件时如何传输时间戳、文件属性和 ACL。

时间戳

以下时间戳被传递:

  • 创建时间
  • 最后写入时间

不会传输以下时间戳:

  • 最后访问时间

文件属性

除非另有说明,否则文件和目录上的文件属性都会传输。

传输以下文件属性:

  • FILE_ATTRIBUTE_READONLY(仅限文件)
  • FILE_ATTRIBUTE_HIDDEN
  • FILE_ATTRIBUTE_SYSTEM
  • FILE_ATTRIBUTE_DIRECTORY(仅限目录)
  • FILE_ATTRIBUTE_ARCHIVE
  • 文件属性:临时(仅限文件)
  • FILE_ATTRIBUTE_NO_SCRUB_DATA

不会传输以下文件属性:

  • FILE_ATTRIBUTE_OFFLINE
  • FILE_ATTRIBUTE_NOT_CONTENT_INDEXED

不会传输目录上的只读属性。

备用数据流和扩展属性

Azure 文件存储、页 Blob 或块 Blob 存储不支持备用数据流和扩展属性,因此复制数据时不会传输它们。

ACL

根据所使用的传输方法以及你使用的是 Windows 或 Linux 客户端,在将数据复制到 Azure 文件的过程中,可能会传输文件和文件夹上的部分或全部任意和默认访问控制列表(ACL)。

注释

不复制包含条件访问控制项 (ACE) 字符串的 ACL 的文件。 这是一个已知问题。 若要解决此问题,请通过装载共享并使用支持复制 ACL 的复制工具手动将这些文件复制到 Azure 文件共享。

复制数据和元数据

若要传输数据的 ACL、时间戳和属性,请使用以下过程将数据复制到 Data Box。

Windows 数据复制工具

若要将数据复制到 Data Box Disk,请使用文件复制工具,例如 robocopy。 以下示例命令可复制所有文件和目录,并将元数据与数据一起传输。

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

其中

选项 DESCRIPTION
/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 Data Box

注释

如果使用 /copyall 复制数据,则会将目录和文件上的源 ACL 传输到 Azure 文件。 如果仅对源数据具有读取访问权限,并且无法修改源数据,则仅对 Data Box 磁盘中的数据具有只读访问权限。 只有当你打算将目录和文件上的所有 ACL 连同数据一起复制时,才使用 /copyall

使用 robocopy 列出、复制和修改 Data Box 磁盘上的文件

下面是在使用 robocopy复制数据时将使用的一些常见方案。

  • 仅将数据复制到 Data Box Disk,目录和文件上没有 ACL

    使用 /dcopy:DAT 选项只复制数据、属性和时间戳。 目录和文件上的 ACL 不会被复制。

  • 将目录和文件上的数据和 ACL 复制到 Data Box Disk

    使用 /copyall 来复制所有源数据,包括目录和文件上的所有 ACL。

  • 使用 robocopy 列出 Data Box Disk 上的文件系统

    使用此命令列出目录内容:

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

    请注意,文件资源管理器不允许列出这些文件。

  • 在 Data Box 磁盘上复制或删除文件夹和文件

    使用此命令复制单个文件:

    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)复制源数据。 复制数据后,可以使用工具(如 smbcaclscifsacl)复制元数据。

以下示例命令执行第一步,使用 rsync 复制数据。

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

后续步骤