有人能帮我吗?我一直使用 deja-dup 备份我的 Ubuntu 14.04 机器。我有 duplicity 版本 0.6.23,deja-dup 版本 30.0。无论我选择哪个备份,都会出现错误。
当我使用 deja-dup UI 时,我只收到此错误:"BackendException: Error listng s3+http
[我在这里放了一个空格,因为它不让我发布链接]://mybucketname1/computer-XPS13-9333”
(为了发布的目的,我将匿名化错误消息和命令中的所有识别信息)
我尝试通过命令行使用 duplicity 进行一些变化,但没有任何效果。
此命令:
AWS_ACCESS_KEY_ID=XXXXXXXX AWS_SECRET_ACCESS_KEY=XXXXXXX duplicity restore s3+http
[我在这里放了一个空格,因为它不允许我发布链接] ://mybucketname1/computer-XPS13-9333 /media/standard/Seagate\ Backup\ Plus\ Drive/restore/
返回此错误:
PermanentRedirect The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.</Message><Bucket>mybucketname1</Bucket><Endpoint>mybucketname1.s3.amazonaws.com</Endpoint><RequestId>XXXXXXXX</RequestId><HostId>Pwl/XXXXXXXXXXXXXXXXXXXXXXXX=</HostId></Error>
因此我尝试使用不同的端点,并运行以下命令:
AWS_ACCESS_KEY_ID=XXXXXXXXX AWS_SECRET_ACCESS_KEY=XXXXXXXXX duplicity restore s3+http
[I'm putting a space heere because it won't let me post a link]
://mybucketname1.s3.amazonaws.com/computer-XPS13-9333 /media/standard/Seagate\ Backup\ Plus\ Drive/restore/
<Error><Code>NoSuchBucket</Code><Message>The specified bucket does not exist</Message><BucketName>mybucketname1.s3.amazonaws.com</BucketName><RequestId>XXXXXXXXX</RequestId><HostId>XXXXXXXXXXXXXXX</HostId></Error>
我认为它告诉我的端点可能是错误的,因此我尝试了在 S3 站点上找到的方法并运行了以下命令:
AWS_ACCESS_KEY_ID=XXXXXXXX AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXX duplicity restore s3+https
[I'm putting a space bere because it won't let me post a link]
://s3-us-west-2.amazonaws.com/mybucket1/computer-XPS13-9333 /media/standard/Seagate\ Backup\ Plus\ Drive/restore/
并收到此错误:
UnsupportedBackendScheme: scheme not supported in url: s3
我认为这可能是 http/https 问题,因此我尝试了与 http 相同的命令,并收到此错误,但我很确定这个端点不是我应该使用的真实 URL:
PermanentRedirect
您尝试访问的存储桶必须使用指定的端点进行寻址。请将所有后续请求发送至此端点。s3-us-west-2.amazonaws.coms3-us-west-2.amazonaws.com.s3.amazonaws.comXXXXXXXXXXXXXXXXXXXXX
有人有什么建议吗?我丢失了一堆数据,希望找回它们,然后开始使用 dropbox 或其他东西备份它们。我研究这个问题已经有一段时间了,显然 duplicity 有各种各样的问题,但我仍然没有找到解决办法。
答案1
我找到了答案,并回答了我自己的问题,以造福其他遇到类似问题的人。首先,我发现我无法一次恢复整个备份。它太大而且会超时。我必须采取的策略是一次恢复子目录。此外,当我尝试列出当前文件时,它不会返回任何内容。即使备份文件很大,它也说我没有要恢复的文件。我发现如果我使用该-t
标志,它就会起作用。这可能意味着我的上一次备份已损坏,但通过回顾一段时间(在我的情况下是 6 个月),它能够找到一些要恢复的文件。首先我必须获取文件列表,这样我才知道要恢复哪些文件:
AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxx AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxx PASSPHRASE=xxxxxxxxx duplicity list-current-files --timeout=2400 --tempdir /path/path/path/ --num-retries=500 -t 6M s3://s3-us-west-2.amazonaws.com/mybucketname1/computer-name | tee -a restore_file_list-6M.txt
这将为您提供一个文件restore_file_list-6M.txt
,您需要使用它来查找备份中的文件。
您还会注意到,不管文档怎么说,这s3+http://
是错误的,而是您想要的s3://
。
一旦我获得了备份中的文件列表restore_file_list-6M.txt
,我就可以使用以下命令一次恢复一个目录:
AWS_ACCESS_KEY_ID=XXXXXXXXXXX AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXX PASSPHRASE=XXXXXXXXXXXX duplicity restore --timeout=2400 --tempdir /path/path/path/ --allow-source-mismatch --file-to-restore source/in/backup --num-retries=500 -t 6M s3://s3-us-west-2.amazonaws.com/mybucketname1/computer-name /place/I/want/to/restore/to/
我不知道 --timeout 标志是否有任何功能,但 --num-retries 绝对很重要,因为它每个文件超时一次,有时会超时一百次以上才能成功下载文件。
现在,我再也不做虚伪的人了。