You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何备份启用分层命名空间的Azure Data Lake Storage账户

备份启用分层命名空间的Azure Data Lake Storage Gen2账户方案

针对你提到的Portal中数据保护选项有限、生命周期管理无复制功能的问题,以下是几种实用的备份方案:

1. 使用Azure CLI/PowerShell批量复制

通过命令行工具直接跨账户递归复制ADLS Gen2的文件和目录,适合一次性备份或简单定时任务(可结合Azure自动化账户定时执行):

Azure CLI示例

# 启动批量复制,递归复制源文件系统下所有内容到目标文件系统
az storage blob copy start-batch \
  --account-source <源ADLS账户名称> \
  --account-dest <目标存储账户名称> \
  --source-container <源文件系统名称> \
  --destination-container <目标文件系统名称> \
  --pattern "**" \
  --account-key-source <源账户密钥> \
  --account-key-dest <目标账户密钥>

PowerShell示例

# 配置源和目标账户上下文
$sourceContext = New-AzStorageContext -StorageAccountName <源ADLS账户名称> -StorageAccountKey <源账户密钥>
$destContext = New-AzStorageContext -StorageAccountName <目标存储账户名称> -StorageAccountKey <目标账户密钥>

# 递归复制源文件系统所有内容到目标文件系统
Get-AzStorageBlob -Container <源文件系统名称> -Context $sourceContext -Recurse | 
  Start-AzStorageBlobCopy -DestContainer <目标文件系统名称> -DestContext $destContext

2. 用Azure Data Factory (ADF) 构建定时备份流水线

ADF支持ADLS Gen2作为源和目标,可实现增量备份和自动化定时任务,适合长期定期备份需求:

  • 操作步骤:创建ADF实例 → 添加源/目标ADLS账户的链接服务 → 创建对应数据集 → 配置复制活动(可设置按文件最后修改时间过滤增量数据) → 添加定时触发器(如每日凌晨执行)。

3. 使用Azure Backup托管式备份

目前Azure Backup已支持备份启用分层命名空间的ADLS Gen2账户,提供托管式的备份和恢复能力:

  • 操作步骤:创建Recovery Services Vault → 在Vault中添加备份目标为ADLS Gen2账户 → 选择需备份的文件系统 → 配置备份策略(如保留周期、备份频率) → 启动备份任务。

4. 自定义Python脚本实现灵活备份

利用Azure Data Lake SDK编写自定义脚本,可根据需求定制备份逻辑(如过滤特定文件、增量同步):

from azure.storage.filedatalake import DataLakeServiceClient

# 替换为实际连接字符串
source_conn_str = "<源ADLS账户连接字符串>"
dest_conn_str = "<目标存储账户连接字符串>"

source_service = DataLakeServiceClient.from_connection_string(source_conn_str)
dest_service = DataLakeServiceClient.from_connection_string(dest_conn_str)

source_fs = source_service.get_file_system_client("<源文件系统名称>")
dest_fs = dest_service.get_file_system_client("<目标文件系统名称>")

def copy_dir(source_dir_client, dest_dir_client):
    # 遍历当前目录下所有路径
    for path in source_dir_client.get_paths():
        if path.is_directory:
            # 创建目标目录
            dest_dir_client.create_directory(path.name)
            # 递归复制子目录
            sub_source_dir = source_service.get_directory_client(source_fs, path.name)
            sub_dest_dir = dest_service.get_directory_client(dest_fs, path.name)
            copy_dir(sub_source_dir, sub_dest_dir)
        else:
            # 复制文件
            source_file = source_service.get_file_client(source_fs, path.name)
            dest_file = dest_service.get_file_client(dest_fs, path.name)
            # 从源文件下载并上传到目标
            with source_file.download_blob() as blob_data:
                dest_file.upload_blob(blob_data.readall(), overwrite=True)

# 启动根目录复制
copy_dir(source_fs.get_directory_client(""), dest_fs.get_directory_client(""))

可将脚本部署到Azure Functions或虚拟机,通过定时器触发执行。

注意事项

  • 权限:确保执行备份的主体(服务主体/用户)拥有源账户的Storage Blob Data Reader角色和目标账户的Storage Blob Data Contributor角色,或使用SAS令牌授权。
  • 目标账户:建议目标存储账户也启用分层命名空间,以保留原有的目录结构和文件属性。

内容的提问来源于stack exchange,提问作者HelmBurger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 08:07:45