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

如何删除Azure File Share中特定时间段之前的旧文件

清除Azure文件共享中早于指定时间旧文件的实现方案

目前可以通过AZ CLI组合命令、自定义代码两种方式实现过期文件清理,具体实现方式如下:

方案1:使用AZ CLI实现

AZ CLI没有内置直接批量删除过期文件的专用命令,可以通过组合文件查询、筛选、删除命令实现需求:

  1. 首先配置自定义参数,计算过期截止时间
# 配置参数,替换为你自己的实际值
STORAGE_ACCOUNT="存储账户名称"
FILE_SHARE_NAME="文件共享名称"
RETENTION_DAYS=7 # 自定义保留天数,此处示例保留最近7天的文件

# Linux/macOS环境计算UTC格式的截止时间
CUTOFF_DATE=$(date -d "-$RETENTION_DAYS days" +%Y-%m-%dT%H:%M:%SZ)

# Windows PowerShell环境计算UTC格式的截止时间请使用以下命令
# $CUTOFF_DATE = (Get-Date).AddDays(-$RETENTION_DAYS).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
  1. 筛选并删除过期文件
# 先执行以下命令确认要删除的文件范围,确认无误后再拼接删除命令
az storage file list --share-name $FILE_SHARE_NAME \
  --account-name $STORAGE_ACCOUNT \
  --recursive \ # 有子目录时需要加该参数递归查询所有层级文件
  --query "[?properties.lastModified < '$CUTOFF_DATE'].name" -o tsv

# 确认筛选结果正确后,执行删除(Linux/macOS环境)
az storage file list --share-name $FILE_SHARE_NAME \
  --account-name $STORAGE_ACCOUNT \
  --recursive \
  --query "[?properties.lastModified < '$CUTOFF_DATE'].name" -o tsv | \
  xargs -I {} az storage file delete --share-name $FILE_SHARE_NAME \
  --account-name $STORAGE_ACCOUNT \
  --path {}

# PowerShell环境执行删除请使用以下命令
# az storage file list --share-name $FILE_SHARE_NAME --account-name $STORAGE_ACCOUNT --recursive --query "[?properties.lastModified < '$CUTOFF_DATE'].name" -o tsv | ForEach-Object { az storage file delete --share-name $FILE_SHARE_NAME --account-name $STORAGE_ACCOUNT --path $_ }

方案2:使用Python代码实现

适合需要自定义逻辑、批量处理大量文件的场景:

  1. 先安装依赖SDK
pip install azure-storage-file-share
  1. 清理代码示例
from azure.storage.fileshare import ShareServiceClient
from datetime import datetime, timedelta, timezone

# 配置参数
connection_string = "你的存储账户连接字符串"
share_name = "你的文件共享名称"
retention_days = 7 # 自定义保留天数

# 计算UTC时区的过期截止时间
cutoff_time = datetime.now(timezone.utc) - timedelta(days=retention_days)

# 初始化客户端
share_service_client = ShareServiceClient.from_connection_string(connection_string)
share_client = share_service_client.get_share_client(share_name)

# 遍历所有文件,删除符合条件的过期文件
for item in share_client.list_directories_and_files(include_properties=True, recursive=True):
    if not item.is_directory: # 跳过目录只处理文件
        if item.last_modified < cutoff_time:
            print(f"删除过期文件:{item.name}, 最后修改时间:{item.last_modified}")
            share_client.delete_file(item.name)

print("所有过期文件清理完成")

注意事项

  • 执行删除前务必先单独运行查询命令,确认要删除的文件范围正确,避免误删重要数据
  • 建议提前开启存储账户的软删除功能,作为误删后的兜底恢复机制
  • 清理超大量文件时可以添加并发控制、分页逻辑,提升清理效率

内容的提问来源于stack exchange,提问作者Muhammad Ali Nazarudeen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:24:00