我在使用 AzCopy 时遇到了一个问题,我的脚本在 CMD 中运行正常,但通过批处理文件执行时却出现身份验证错误。以下是情况的细分:
目的是通过任务计划程序将我们的日常文件备份到存储帐户中;很可能每天/运行仅 1 个文件。
我的批处理脚本:
@echo off
cd "C:\Program Files\AzCopy"
azcopy cp "G:\Backup\UATBackups\*" "https://<storage-account-name>.blob.core.windows.net/test/?sp=rw&st=2024-10-08T15:28:58Z&se=2024-10-08T23:28:58Z&spr=https&sv=2022-11-02&sr=c&sig=<SAS-token>" --recursive=true --block-blob-tier=Cold --overwrite=false
当我在 CMD 中手动运行此命令时:(导航到 AzCopy 目录之后)
azcopy cp "G:\Backup\UATBackups\*" "https://<storage-account-name>.blob.core.windows.net/test/?sp=rw&st=2024-10-08T15:28:58Z&se=2024-10-08T23:28:58Z&spr=https&sv=2022-11-02&sr=c&sig=<SAS-token>" --recursive=true --block-blob-tier=Cold --overwrite=false
它运行完美,并且所有文件都按预期上传。
但是,当我运行批处理文件时,我得到:
RESPONSE Status: 403 Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
我还尝试修改批处理文件,以便它打开 CMD 并运行命令,就像我手动执行一样:
start cmd /k ""C:\Program Files\AzCopy\azcopy.exe" cp "G:\Backup\UATBackups\*" "https://<storage-account-name>.blob.core.windows.net/test/?sp=rw&st=2024-10-08T15:28:58Z&se=2024-10-08T23:28:58Z&spr=https&sv=2022-11-02&sr=c&sig=<SAS-token>" --recursive=true --block-blob-tier=Cold --overwrite=false"
但这给了我:
RESPONSE 401: 401 Server failed to authenticate the request. Please refer to the information in the www-authenticate header.
ERROR CODE: NoAuthenticationInformation
我已经检查过的事项:
- SAS 令牌有效且未过期。
- VM 时间已正确同步。
- 我使用同一个用户帐户来运行 CMD 和批处理文件。
我的问题:
- 为什么当我在 CMD 中手动运行该命令时,它能完美运行,但通过批处理文件运行时(即使使用相同的用户帐户)却出现 403 错误?
- 需要改变什么以及我如何解决这个问题!
任何帮助或建议都将不胜感激。谢谢!