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

如何在Azure Storage AzCopy Sync中过滤同步的空文件?

过滤空文件的AzCopy同步方案

核心思路

AzCopy本身没有直接跳过空文件的内置参数,因此通过Shell脚本先筛选出符合命名规则且大小大于0的有效文件,再生成文件列表供AzCopy同步时调用,以此实现空文件过滤。

具体实现步骤

1. 生成有效文件列表

在源目录下筛选出文件名匹配PPP*.*.pgp且非空的文件,生成临时列表文件:

find "/sftp/sourceFolder" -maxdepth 1 -type f -name "PPP*.*.pgp" ! -size 0 > /tmp/valid_files.txt

参数说明:

  • -maxdepth 1:匹配你当前--recursive=false的需求,仅扫描源目录本身,不遍历子文件夹
  • -type f:仅筛选普通文件,排除目录等其他类型
  • ! -size 0:排除大小为0字节的空文件

2. 基于文件列表执行同步

使用AzCopy的--list-of-files参数指定刚才生成的有效文件列表,执行同步:

./azcopy sync "/sftp/sourceFolder" "https://mypersonal.blob.core.windows.net/payment" --recursive=false --list-of-files=/tmp/valid_files.txt

注意:这里无需再添加--include参数,因为文件列表已经完成了规则匹配。

3. 清理临时文件(可选)

同步完成后删除临时列表文件,避免冗余:

rm /tmp/valid_files.txt

整合为一键执行脚本

将上述步骤封装为Shell脚本,方便日常调用:

#!/bin/bash

# 定义固定参数
SOURCE_DIR="/sftp/sourceFolder"
DEST_URL="https://mypersonal.blob.core.windows.net/payment"
FILE_PATTERN="PPP*.*.pgp"
TEMP_LIST="/tmp/valid_files.txt"

# 生成非空符合规则的文件列表
find "$SOURCE_DIR" -maxdepth 1 -type f -name "$FILE_PATTERN" ! -size 0 > "$TEMP_LIST"

# 执行AzCopy同步
./azcopy sync "$SOURCE_DIR" "$DEST_URL" --recursive=false --list-of-files="$TEMP_LIST"

# 清理临时文件
rm "$TEMP_LIST"

给脚本添加执行权限后即可直接运行:

chmod +x sync_non_empty_files.sh
./sync_non_empty_files.sh

注意事项

  • 如果你的AzCopy需要额外身份验证参数(如SAS Token、OAuth令牌),直接追加到AzCopy命令末尾即可
  • 临时文件路径可根据系统权限调整,确保脚本有读写权限
  • 若需保留临时文件用于排查问题,可删除脚本最后一行的rm命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:54:55