错误

错误

错误

门户显示此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

问题已解决。以下是一些错误:

  1. 该脚本创建文件名以 开头的 blob $distro,而文件名恰好以 开头#,这是一个保留的 URI 字符。我修改了脚本,使其类似于$type_$date
  2. 存储 blob 命令失败(悄无声息),因为脚本没有以sudo特权运行它们。我所要做的就是添加sudotarazure storage调用中,一切就都正常了!

相关内容