错误
门户显示此
Blob not found.
错误
download
这是我点击按钮时收到的 XML 错误
<Error>
<Code>ResourceNotFound</Code>
<Message>
The specified resource does not exist. RequestId:bea21dfd-0001-004f-26e0-220af6000000 Time:2015-11-19T15:38:55.9836819Z
</Message>
</Error>
背景
我一直在尝试实施一种解决方法来在 Azure 中备份我的 IaaS v2 Ubuntu VM。感谢很好的答案我最近收到了服务器故障报告,我决定最好的方法是使用 tar 和 cronjob 定期备份我的服务器。
因此,我谷歌搜索了“Linux Azure VM 上的 tar 备份”,结果找到了本文,即:如何在不关闭虚拟机的情况下在 Azure 上进行 Linux 备份。
本教程概述了一个流程,执行 tar 命令, 进而使用列出的凭据将 tar 上传到 Azure 存储容器。以下是相关脚本:
#!/bin/bash
# full system backup
# Backup destination
backdest=/opt/backup
# Labels for backup name
pc=${HOSTNAME}
distro=`uname -a | awk '{print $4}'`
type=full
date=$(date "+%F")
backupfile="$backdest/$distro-$type-$date.tar.gz"
username=`whoami`
#blob storage variables
storageAccountName=storageaccountname
storageAccountKey=mylongassstoragekey
storageContainer=backupcontainername
# Exclude file location
prog=${0##*/} # Program name from filename
excdir=`pwd`
exclude_file="$excdir/$prog-exc.txt"
#check backup destination is there
if [ ! -d "$backdest" ]; then
mkdir -p $backdest
fi
# Check if exclude file exists
if [ ! -f $exclude_file ]; then
echo "checking exclude $exclude_file"
echo -n "No exclude file exists, continue? (y/n): "
read continue
if [ $continue == "n" ]; then exit; fi
fi
#don't use nohup we want to make this blocking
tar --exclude-from=$exclude_file -czpvf $backupfile /
#after tar is finished move to blob storage
azure storage blob upload -a $storageAccountName --container $storageContainer -k $storageAccountKey $backupfile
echo "all done!"
一切似乎都进展顺利,脚本运行备份,然后将 tar.gz 作为块 blob 上传。但是,从上面的错误中可以看出,找不到 Blob。存储容器设置为“容器”(而不是“私有”)。
我根本不知道该如何开始排除故障。我该怎么办?任何帮助我都会很感激。非常感谢!
答案1
Blob 名称要求您转义保留的 URL 字符。您的 Blob 名称以 开头,#
这是一个保留的 URL 字符。我怀疑当您删除该字符(或将其转义)时,问题会自行解决。注意:我还没有通过独立测试证实这一点,但这是我第一次看到带有字符的 blob 名称#
......
有关 blob 命名的更多信息这里。
答案2
问题已解决。以下是一些错误:
- 该脚本创建文件名以 开头的 blob
$distro
,而文件名恰好以 开头#
,这是一个保留的 URI 字符。我修改了脚本,使其类似于$type_$date
。 - 存储 blob 命令失败(悄无声息),因为脚本没有以
sudo
特权运行它们。我所要做的就是添加sudo
到tar
和azure storage
调用中,一切就都正常了!