Большой двоичный объект не найден: ошибка при загрузке tar.gz в контейнер хранилища Azure с помощью сценария Linux

Ошибка

Портал отображает этот Blob not found. ошибка

enter image description here

Это ошибка 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>

Фон

Я пытался реализовать обходной путь для резервного копирования моей виртуальной машины Ubuntu IaaS v2 в Azure. Благодаря отличному ответу , который я недавно получил на Server Fault, я решил, что лучшим способом будет просто периодически создавать резервные копии моего сервера с помощью tar и cronjob.

Итак, я погуглил "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 не найден. Контейнер хранения настроен на "Контейнер" (в отличие от "Частный").

Я даже не знаю, как начать устранение неполадок. Что мне делать? Любая помощь будет оценена по достоинству. Большое спасибо!

1
задан 13 April 2017 в 15:14
2 ответа

Проблема решена. Здесь есть пара вещей:

  1. Сценарий создает большой двоичный объект с именем файла, начинающимся с $ distro , которое начинается с # , который является зарезервированным символом URI. . Я изменил сценарий, чтобы он напоминал $ type_ $ date .
  2. Команда хранилища BLOB-объектов завершилась ошибкой (незаметно), потому что сценарий не запускал их с sudo priveleges. Все, что мне нужно было сделать, это добавить sudo к вызовам tar и azure storage , и все заработало!
0
ответ дан 3 December 2019 в 23:56

Mae enwau blobiau yn gofyn ichi ddianc rhag nodau URL neilltuedig. Mae eich enw blob yn dechrau gyda # sy'n gymeriad URL neilltuedig. Rwy'n amau ​​y bydd y mater yn datrys ei hun pan fyddwch chi'n dileu'r cymeriad hwnnw (neu'n ei ddianc). Nodyn: Nid wyf wedi cadarnhau hyn gyda phrawf annibynnol, ond dyma'r tro cyntaf i mi weld enw blob erioed gyda chymeriad # ...

Mwy o wybodaeth am enwi blob yma .

1
ответ дан 3 December 2019 в 23:56

Теги

Похожие вопросы