Я использую Дубликат Deja для резервного копирования моего ноутбука к S3. Это работало на многие резервные копии, но с 20 дней назад прекратил работать.
Traceback (most recent call last):
File "/usr/bin/duplicity", line 1532, in <module>
with_tempdir(main)
File "/usr/bin/duplicity", line 1526, in with_tempdir
fn()
File "/usr/bin/duplicity", line 1364, in main
action = commandline.ProcessCommandLine(sys.argv[1:])
File "/usr/lib/python2.7/dist-packages/duplicity/commandline.py", line 1108, in ProcessCommandLine
globals.backend = backend.get_backend(args[0])
File "/usr/lib/python2.7/dist-packages/duplicity/backend.py", line 223, in get_backend
obj = get_backend_object(url_string)
File "/usr/lib/python2.7/dist-packages/duplicity/backend.py", line 209, in get_backend_object
return factory(pu)
File "/usr/lib/python2.7/dist-packages/duplicity/backends/_boto_single.py", line 161, in __init__
self.resetConnection()
File "/usr/lib/python2.7/dist-packages/duplicity/backends/_boto_single.py", line 194, in resetConnection
raise e
S3ResponseError: S3ResponseError: 403 Forbidden
Я проверил, что пользовательские политики корректны. Я проверил их в тестере политики AWS, а также использовал их с CLI AWS для списка блоков, читаю из резервного блока и пишу в резервный блок.
Резервные копии на моем рабочем столе все еще работают, и они используют те же учетные данные. Рабочий стол и резервные копии ноутбука не входят в тот же блок, но те же удостоверения пользователя используются.
Мое время машин не вне синхронизации.
Я проверил, что настройки дубликата deja корректны и в UI и в dconf редакторе.
Я использую свой ноутбук больше, чем мой рабочий стол, таким образом, возможно, что это получило некоторое обновление, которое, возможно, испортило вещи, но я не уверен что.
Закапывание в течение нескольких часов теперь и в замешательстве. Я хотел бы это резервное копирование прежде, чем попытаться обновить до 18,04 в ближайшем будущем.
информация о версии: aws-cli/1.15.79 Python/2.7.12 Linux/4.15.0-30-generic botocore/1.10.78 boto 2.49.0
botocore 1.10.78
Править: Вышеупомянутое было с Ubuntu 16. Я недавно обновил до Ubuntu 18, и все еще испытываю проблему. Я думаю, что это - та же проблема, но журналы несколько отличаются. Вот то, что они находятся на Ubuntu 18:
DUPLICITY: ERROR 30 S3ResponseError
DUPLICITY: . Traceback (innermost last):
DUPLICITY: . File "/usr/bin/duplicity", line 1555, in <module>
DUPLICITY: . with_tempdir(main)
DUPLICITY: . File "/usr/bin/duplicity", line 1541, in with_tempdir
DUPLICITY: . fn()
DUPLICITY: . File "/usr/bin/duplicity", line 1380, in main
DUPLICITY: . action = commandline.ProcessCommandLine(sys.argv[1:])
DUPLICITY: . File "/usr/lib/python2.7/dist-packages/duplicity/commandline.py", line 1127, in ProcessCommandLine
DUPLICITY: . globals.backend = backend.get_backend(args[0])
DUPLICITY: . File "/usr/lib/python2.7/dist-packages/duplicity/backend.py", line 223, in get_backend
DUPLICITY: . obj = get_backend_object(url_string)
DUPLICITY: . File "/usr/lib/python2.7/dist-packages/duplicity/backend.py", line 209, in get_backend_object
DUPLICITY: . return factory(pu)
DUPLICITY: . File "/usr/lib/python2.7/dist-packages/duplicity/backends/_boto_single.py", line 166, in __init__
DUPLICITY: . self.resetConnection()
DUPLICITY: . File "/usr/lib/python2.7/dist-packages/duplicity/backends/_boto_single.py", line 191, in resetConnection
DUPLICITY: . location=self.my_location)
DUPLICITY: . File "/home/aaronloes/.local/lib/python2.7/site-packages/boto/s3/connection.py", line 628, in create_bucket
DUPLICITY: . response.status, response.reason, body)
DUPLICITY: . S3ResponseError: S3ResponseError: 403 Forbidden
DUPLICITY: . <?xml version="1.0" encoding="UTF-8"?>
DUPLICITY: . <Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>XXXXXCENSORXXXXX</AWSAccessKeyId><StringToSign>PUT
Я убрал свой ключ в журналах, но я проверил, что это - корректный ключ. Я не уверен, как я могу заставить duplicity/dejadup предлагать мне мой секрет AWS снова, потому что, возможно, который кэшировался плохо так или иначе?
awscli 1.15.79
Python 2.7.15rc1 4.15.0-38-универсальный boto 2.49.0
botocore 1.10.78
Редактирование смогло заставить deja-дубликат предлагать мне новые учетные данные и все еще никакое различие. Я знаю без любого сомнения, что двуличность использует соответствующие учетные данные, и я знаю без сомнения, что учетные данные хороши.
Итак, я наконец понял это. Это заняло некоторое время, потому что я перестал использовать рассматриваемый компьютер в качестве основного. Недавно мне нужно было использовать его, и я решил попробовать еще раз, и ответ пришел ко мне.
В какой-то момент либо boto (маловероятно), либо duplicity/deja-dup перестали использовать учетные данные, которые я указал в его конфигурации, и начали использовать учетные данные, которые я установил в переменных среды. Предполагается, что Boto принимает предоставленные учетные данные, прежде чем искать среду, поэтому я предполагаю, что это как-то связано с двуличностью/дежа-дублированием. Я знаю, что произошли изменения, потому что я настроил резервное копирование и эти переменные среды в тот день, когда получил этот компьютер.
Я удалил переменные среды, и резервное копирование снова заработало.
Загадка наконец раскрыта.
Попробуйте переустановить дублирование. Большинство подобных проблем можно решить с помощью простой переустановки. В противном случае используйте tar для создания резервной копии диалогового окна / with и следующего кода:
#!/bin/sh
# Backup all files under / directory
# Display message with option to cancel
dialog --title "Backup" --msgbox "Time for backup! Press <Enter> to start backup or <Esc> to cancel." 0 0
# Return status of non-zero indicates cancel
if [ "$?" != "0" ]
then
dialog --title "Backup" --msgbox "Backup was canceled at your request." 0 0
else
tarlocation=$(dialog --inputbox "Where would you like to save the TAR file?" 0 0)
dialog --title "Backup" --infobox "Backup in progress..." 0 0
cd ~
# Backup using tar; redirect any errors to a
# temporary file
tar -czf $tarlocation 0 0 >|/tmp/ERRORS$ 2>&1
# zero status indicates backup was successful
if [ "$?" = "0" ]
then
dialog --title "Backup" --msgbox "Backup completed successfully." 0 0
else
# Backup failed, display error log
dialog --title "Backup" --msgbox "Backup failed -- Press <Enter> to see error log." 0 0
dialog --title "Error Log" --textbox /tmp/ERRORS$ 0 0
fi
fi
rm -f /tmp/ERRORS$
clear
Спасибо!