Недавно я попытался переключить диск Google, на который загружаю свои резервные копии, но теперь утилита резервного копирования (deja-dup) просто не работает. Когда я пытаюсь сделать резервную копию, она просканирует, а затем истечет время ожидания с
Giving up after 5 attempts. timeout: The read operation timed out
. Как мне решить эту проблему и отладить?
Я попытался удалить все свои онлайн-аккаунты и добавить новую учетную запись Google, которую хочу использовать. (и google, и ubuntu one) Я также пробовал переустановить duplicity
и deja-dup
и сбросить все мои настройки для deja-dup. Пока ничего не работает, и при запуске deja-dup
с терминала нет никаких сообщений об ошибках.
Редактировать 1:
Как предложил codlord, я запустил deja dup с ] DEJA_DUP_DEBUG
установлен. Вот вывод журнала:
....
DUPLICITY: INFO 1
DUPLICITY: . Added incremental Backupset (start_time: Thu Nov 5 07:57:24 2020 / end_time: Thu Nov 12 08:05:49 2020)
DUPLICITY: DEBUG 1
DUPLICITY: . Added set Thu Nov 12 08:05:49 2020 to pre-existing chain [Thu Aug 20 18:47:31 2020]-[Thu Nov 12 08:05:49 2020]
DUPLICITY: NOTICE 1
DUPLICITY: . Synchronizing remote metadata to local cache...
DUPLICITY: NOTICE 1
DUPLICITY: . Copying duplicity-full-signatures.20200821T014731Z.sigtar.gz to local cache.
DUPLICITY: DEBUG 1
DUPLICITY: . Registering (mktemp) temporary file /tmp/duplicity-2izahox3-tempdir/mktemp-aww0pdv8-2
DUPLICITY: INFO 1
DUPLICITY: . PyDrive backend: found file 'duplicity-full-signatures.20200821T014731Z.sigtar.gz' with id 135UZSkFvRDv7egAogXy6MYaHiH3iopqN on server, adding to cache
DUPLICITY: DEBUG 1
DUPLICITY: . Backtrace of previous error: Traceback (innermost last):
DUPLICITY: . File "/usr/lib/python3/dist-packages/duplicity/backend.py", line 376, in inner_retry
DUPLICITY: . return fn(self, *args)
DUPLICITY: . File "/usr/lib/python3/dist-packages/duplicity/backend.py", line 570, in get
DUPLICITY: . self.backend._get(remote_filename, local_path)
DUPLICITY: . File "/usr/lib/python3/dist-packages/duplicity/backends/pydrivebackend.py", line 186, in _get
DUPLICITY: . drive_file.GetContentFile(util.fsdecode(local_path.name))
DUPLICITY: . File "/usr/lib/python3/dist-packages/pydrive/files.py", line 210, in GetContentFile
DUPLICITY: . self.FetchContent(mimetype, remove_bom)
DUPLICITY: . File "/usr/lib/python3/dist-packages/pydrive/files.py", line 43, in _decorated
DUPLICITY: . return decoratee(self, *args, **kwargs)
DUPLICITY: . File "/usr/lib/python3/dist-packages/pydrive/files.py", line 255, in FetchContent
DUPLICITY: . self.content = io.BytesIO(self._DownloadFromUrl(download_url))
DUPLICITY: . File "/usr/lib/python3/dist-packages/pydrive/auth.py", line 75, in _decorated
DUPLICITY: . return decoratee(self, *args, **kwargs)
DUPLICITY: . File "/usr/lib/python3/dist-packages/pydrive/files.py", line 503, in _DownloadFromUrl
DUPLICITY: . resp, content = self.http.request(url)
DUPLICITY: . File "/usr/lib/python3/dist-packages/oauth2client/transport.py", line 173, in new_request
DUPLICITY: . resp, content = request(orig_request_method, uri, method, body,
DUPLICITY: . File "/usr/lib/python3/dist-packages/oauth2client/transport.py", line 280, in request
DUPLICITY: . return http_callable(uri, method=method, body=body, headers=headers,
DUPLICITY: . File "/home/grant/.local/lib/python3.8/site-packages/httplib2/__init__.py", line 1985, in request
DUPLICITY: . (response, content) = self._request(
DUPLICITY: . File "/home/grant/.local/lib/python3.8/site-packages/httplib2/__init__.py", line 1650, in _request
DUPLICITY: . (response, content) = self._conn_request(
DUPLICITY: . File "/home/grant/.local/lib/python3.8/site-packages/httplib2/__init__.py", line 1589, in _conn_request
DUPLICITY: . response = conn.getresponse()
DUPLICITY: . File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
DUPLICITY: . response.begin()
DUPLICITY: . File "/usr/lib/python3.8/http/client.py", line 307, in begin
DUPLICITY: . version, status, reason = self._read_status()
DUPLICITY: . File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
DUPLICITY: . line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
DUPLICITY: . File "/usr/lib/python3.8/socket.py", line 669, in readinto
DUPLICITY: . return self._sock.recv_into(b)
DUPLICITY: . File "/usr/lib/python3.8/ssl.py", line 1241, in recv_into
DUPLICITY: . return self.read(nbytes, buffer)
DUPLICITY: . File "/usr/lib/python3.8/ssl.py", line 1099, in read
DUPLICITY: . return self._sslobj.read(len, buffer)
DUPLICITY: . socket.timeout: The read operation timed out
DUPLICITY: .
DUPLICITY: WARNING 1
DUPLICITY: . Attempt 1 failed. timeout: The read operation timed out
DUPLICITY: INFO 1
DUPLICITY: . PyDrive backend: found file 'duplicity-full-signatures.20200821T014731Z.sigtar.gz' with id 135UZSkFvRDv7egAogXy6MYaHiH3iopqN in ID cache
.... // at this point the error would repeat 4 more times and deja-dup would give up.
Кажется, это означает, что deja-dup может получить доступ к моему диску, но некоторые операции чтения не работают?
Я проверил свой диск и обнаружил, что файл duplicity-full-signatures.20200821T014731Z.sigtar.gz
не существует. Может, deja-dup пытается его прочитать, но не может, поскольку его не существует? Как мне это исправить?
На самом деле это не ответ на ваш вопрос как таковой, а альтернатива, которая может решить вашу проблему - крепление для диска Google, которое выглядит и действует как любое другое крепление или жесткий диск. Я использую deja-up
для резервного копирования файлов, чтобы ездить таким образом, и у меня никогда не было проблем.
В прошлом у меня было множество проблем с использованием диска Google в Ubuntu со встроенной поддержкой. Это может делать основы, но это все. Поэтому я перешел на использование google-drive-ocamlfuse
отсюда: https://github.com/astrada/google-drive-ocamlfuse
Все подробности на странице продукта github, но я думаю, что я сделал следующее:
Установить пакет google-drive-ocamlfuse:
sudo add-apt-repository ppa:alessandro-strada/ppa
sudo apt-get update
sudo apt-get install google-drive-ocamlfuse
Войти в веб-браузер, чтобы получить токены доступа:
google-drive-ocamlfuse -label YOUR_GOOGLE_ACCOUNT_HERE
Создать точку монтирования:
mkdir /home/wherever/Documents/mygoogledrive
Смонтировать:
google-drive-ocamlfuse -label mygoogledrive /home/wherever/Documents/mygoogledrive
И использовать fusermount -u /home/wherever/Documents/mygoogledrive
для размонтирования или fusermount -uz /home/wherever/Documents/mygoogledrive
для отложенного размонтирования, если -u не работает.
Лично у меня есть только сценарий запуска, который запускает команды размонтирования и монтирования, и если у меня возникнут какие-либо проблемы, я просто перезапущу сценарий.