Azure 如何处理AZcopy失败的文件传输
我正在将大量小文件从本地文件系统复制到Azure blob存储。 很少有文件无法上传。 AZcopy似乎只记录这些失败,没有简单的方法来重试上载这些文件。 逐个搜索每个文件并手动上载是不可行的(时间方面)。Azure 如何处理AZcopy失败的文件传输,azure,azure-storage-blobs,azcopy,Azure,Azure Storage Blobs,Azcopy,我正在将大量小文件从本地文件系统复制到Azure blob存储。 很少有文件无法上传。 AZcopy似乎只记录这些失败,没有简单的方法来重试上载这些文件。 逐个搜索每个文件并手动上载是不可行的(时间方面)。 是否有任何建议来处理这些故障并重试自动上载到Blob?如果传输作业错误不是由sas令牌或身份验证导致的,您可以从下面的命令行尝试 显示失败作业的错误消息: azcopy jobs show <job-id> --with-status=Failed azcopy作业显示--状态
是否有任何建议来处理这些故障并重试自动上载到Blob?如果传输作业错误不是由sas令牌或身份验证导致的,您可以从下面的命令行尝试 显示失败作业的错误消息:
azcopy jobs show <job-id> --with-status=Failed
azcopy作业显示--状态为失败
修复它们,然后执行恢复命令:
azcopy jobs resume <job-id> --source-sas="<sas-token>"
azcopy jobs resume <job-id> --destination-sas="<sas-token>"
azcopy作业恢复--source sas=“”
azcopy作业继续--目标sas=“”
请参阅上述命令的声明:
azcopy jobs resume <job-id> --source-sas="<sas-token>"
azcopy jobs resume <job-id> --destination-sas="<sas-token>"
恢复作业时,AzCopy会查看作业计划文件。计划
“文件”列出了在启动时标识为要处理的所有文件
这项工作是第一次创建的。恢复作业时,AzCopy将尝试
传输计划文件中列出的所有文件
他们还没有被转移
我遇到过进程被终止的情况(可能发生在集装箱化环境中)。因此,我想最简单的方法是实现重试机制(灵感来源于)。我在下载时遇到了这个问题,但修复方法基本相同:
function azcopyWithRetry() {
local list_of_blobs=`echo ${1}`
local connection_string="https://${2}.blob.core.windows.net/${3}/*?${4}"
local download_path="/tmp/download"
local max_attempts="${5}"
local command="azcopy copy --include-path ${list_of_blobs} ${connection_string} ${download_path}"
local n=1
while true; do
${command} && break || {
if [[ $n -lt $max_attempts ]]; then
echo "WARN: Command failed, retrying. (attempt $n/$max_attempts) "
((n++))
sleep 1;
else
echo "FAIL: Command failed after $n attempts. Nothing will happen"
return 1
fi
}
done
}
您可以通过以下方式调用此函数:
export LIST_BLOBS="blobs.txt"
export AZ_ACCOUNT="..."
export AZ_CONTAINER="..."
export AZ_SAS_TOKEN="..."
azcopyWithRetry ${LIST_BLOBS} ${AZ_ACCOUNT} ${AZ_CONTAINER} ${AZ_SAS_TOKEN} 5
5次重试添加到此线程,因为我偶尔会遇到大量失败。对于填充空白目录的作用域场景,一个简单的解决方案是使用--overwrite=false命令再次运行azcopy copy命令