Портал отображает это
Blob not found.
ошибка
Это ошибка XML, которую я получаю, когда нажимаю
download
кнопка
<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>
Я пытался реализовать обходной путь для резервного копирования моей виртуальной машины Ubuntu IaaS v2 в Azure. Благодаря отличный ответ Недавно я получил сообщение Server Fault и решил, что лучше всего будет периодически создавать резервную копию моего сервера с помощью tar и cronjob.
Итак, я ввел в Google «tar backup on linux azure VM» - что привело меня к Эта статья, а именно: Как делать резервные копии Linux в Azure, не выключая виртуальную машину.
В руководстве описывается процесс, который выполняет команду 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-объектов требуют экранирования зарезервированных символов URL. Имя вашего большого двоичного объекта начинается с символа #
который является зарезервированным символом URL. Я подозреваю, что проблема разрешится сама собой, когда вы удалите этого персонажа (или покинете его). Примечание. Я не подтвердил это независимым тестом, но впервые увидел имя капли с #
персонаж...
Дополнительная информация об именовании BLOB-объектов Вот.
Решил вопрос. Здесь есть пара недостатков:
$distro
, который начинается с символа #
, который является зарезервированным символом URI. Я изменил сценарий так, чтобы он напоминал $type_$date
вместо. sudo
привилегии. Все, что мне нужно было сделать, это добавить sudo
как в tar
и azure storage
звонит, и все работает!