Как избежать файлов, которые не найдены (WinError 3)?

Я пытался сделать резервную копию всего диска моего компьютера в облачном хранилище Google, люди в основном говорили мне, что это бессмысленно, и, обдумывая все это, я решил просто делать документы и рабочий стол, и моей целью было использовать облачный SDK Google, поскольку я Я новичок в этом, и мне нравится вызов. Итак, я набираю:

gsutil -m rsync -n -J -C -e -r -u -U C:\Users\~~~~\Documents gs://~~~~-pc/documents

Когда я отправляю это, я получаю это сообщение:

Обнаружено исключение без повторной попытки при отображении файла://C:\Users~~~~~\Documents: [WinError 3] Система не может найти указанный путь: 'C:\Users\~~~~~\Documents\~ ~~~~~~~~ Файлы\2015 NEGOTIATIONIS\2105 ФАЙЛ ПЕРЕГОВОРОВ - ГЛАВНАЯ\Реализация\Временные передачи и постоянная принудительная перегруппировка сил\Временные передачи и постоянная принудительная перегруппировка сил ОКОНЧАТЕЛЬНЫЙ 3 октября 2014.docx' CommandException: поймано исключение без повторной попытки - прерывание rsync

Пожалуйста помоги!!!

Примечание: "~" означает цензуру.

Редактировать: я сделал отладку, и я не знаю, что это значит, вот вывод, который не показывает мои личные данные:

Caught non-retryable exception while listing file://C:\Users\~~~~\Documents: [WinError 3] The system cannot find the path specified: 'C:\\Users\\~~~~\\Documents\\~~~~ Files\\2015 NEGOTIATIONIS\\2105 NEGOTIATIONS FILE - MAIN\\Implementation\\Temporary Transfers and Permanet Involuntary Force Rearragement\\Temporary Transfers and Permanent Involuntary Force Rearrangement FINAL October 3 2014.docx'
Traceback (most recent call last):
  File "C:\Users\~~~~\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\commands\rsync.py", line 653, in _ListUrlRootFunc
    out_file)
  File "C:\Users\~~~~\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\commands\rsync.py", line 903, in _BatchSort
    current_chunk = sorted(islice(in_iter, buffer_size))
  File "C:\Users\~~~~\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\commands\rsync.py", line 734, in _FieldedListingIterator
    for blr in iterator:
  File "C:\Users\~~~~\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\wildcard_iterator.py", line 701, in IterObjects
    bucket_listing_fields=bucket_listing_fields):
  File "C:\Users\~~~~\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\wildcard_iterator.py", line 721, in IterAll
    bucket_listing_fields=bucket_listing_fields):
  File "C:\Users\~~~~\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\wildcard_iterator.py", line 611, in __iter__
    blr_object = _GetFileObject(filepath) if include_size else None
  File "C:\Users\~~~~\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\wildcard_iterator.py", line 531, in _GetFileObject
    return apitools_messages.Object(size=os.path.getsize(filepath))
  File "C:\Users\~~~~\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\bundledpython\lib\genericpath.py", line 50, in getsize
    return os.stat(filename).st_size
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\~~~~\\Documents\\~~~~ Files\\2015 NEGOTIATIONIS\\2105 NEGOTIATIONS FILE - MAIN\\Implementation\\Temporary Transfers and Permanet Involuntary Force Rearragement\\Temporary Transfers and Permanent Involuntary Force Rearrangement FINAL October 3 2014.docx'

DEBUG: Exception stack trace:
    Traceback (most recent call last):
      File "C:\Users\~~~~\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\__main__.py", line 634, in _RunNamedCommandAndHandleExceptions
        user_project=user_project)
      File "C:\Users\~~~~\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\command_runner.py", line 411, in RunNamedCommand
        return_code = command_inst.RunCommand()
      File "C:\Users\~~~~\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\commands\rsync.py", line 1657, in RunCommand
        diff_iterator = _DiffIterator(self, src_url, dst_url)
      File "C:\Users\~~~~\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\commands\rsync.py", line 999, in __init__
        raise CommandException('Caught non-retryable exception - aborting rsync')
    gslib.exception.CommandException: CommandException: Caught non-retryable exception - aborting rsync

Я присоединюсь к голосу тех, кто предостерег вас от использования этого подхода. Как вы видели, ваш подход проблематичен, и есть риск, что вы будете думать, что сделали резервную копию файла, но это не так. Существует множество проверенных решений для резервного копирования (некоторые из которых используют Google Cloud Storage), которые вам подойдут. Тем не менее, если вы привержены этому подходу, проблема заключается в некоторой комбинации различий между файловыми системами Windows и Linux. Пробелы в именах часто проблематичны. Вы можете попробовать флаг rsync--protect-args.

DazWilkin 13.12.2020 19:21

Убедитесь, что вы прочитали все предостережения здесь: cloud.google.com/storage/docs/gsutil/commands/rsync

DazWilkin 13.12.2020 19:21
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
2
434
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша проблема вызвана MAX_PATH. По умолчанию 260 символов.

Способ 1 — указать пути UNC

Префикс пути с "\\?\". Это изменяет максимальное количество имен путей до 32 767 символов.

\\?\C:\Users\~~~~\Documents

Способ 2 — изменить реестр Windows

Для решения вашей проблемы требуется редактирование реестра для поддержки более длинных путей до 32 767 символов.

Измените этот раздел реестра:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled
Type: REG_DWORD
Value: 1

Прочтите этот документ для получения дополнительной информации:

Включить длинные пути в Windows 10 версии 1607 и выше

Другие вопросы по теме