Как загрузить всю корзину в GCP? - PullRequest
0 голосов
/ 27 октября 2019

У меня проблема с загрузкой всей папки в GCP. Как я должен загрузить все ведро? Я запускаю этот код в среде оболочки GCP:

gsutil -m cp -R gs://my-uniquename-bucket ./C:\Users\Myname\Desktop\Bucket

и получаю сообщение об ошибке: "CommandException: целевой URL должен называть каталог, подкаталог или подкаталог сегмента для формы с несколькими источникамиcp command. Исключение CommandException: 7 файлов / объектов не могут быть переданы. "

Может ли кто-нибудь указать на ошибку в строке кода?

shareeditflag

Ответы [ 3 ]

3 голосов
/ 27 октября 2019

Ошибка лежит в пределах destination URL, как указано в сообщении об ошибке.

Я запускаю этот код в среде оболочки GCP

Помните, что вы запускаете команду из Cloud Shell , а не в локальном терминале илиКомандная строка Windows. Таким образом, он выдает эту ошибку, потому что не может найти указанный вами путь. Если вы проверяете файловую систему / структуру Cloud Shell, она больше напоминает среду Unix, в которой вместо этого вы можете указать следующее назначение: ~/bucketfiles/. Даже простой gsutil -m cp -R gs://bucket-name.appspot.com ./ будет работать, так как Cloud Shell может определить каталог ./, который является текущим каталогом.

Обойти эту проблему можно, выполнив команду в командной строке Windows. Вам необходимо установить Google Cloud SDK заранее.

Кроме того, это также можно сделать в Cloud Shell, хотя и с дополнительным шагом:

  1. ЗагрузитеBucket объектов, запустив gsutil -m cp -R gs://bucket-name ~/, который загрузит его в домашний каталог в Cloud Shell
  2. Перенесите файлы, загруженные в каталог ~/ (home) из Cloud Shell на локальный компьютер либо через Пользовательский интерфейс или с помощью команды gcloud alpha cloud-shell scp
2 голосов
/ 27 октября 2019

Ваш целевой путь неверен:

./C:\Users\Myname\Desktop\Bucket

Измените на:

/Users/Myname/Desktop/Bucket

C: - зарезервированное имя устройства. Вы не можете указать зарезервированные имена устройств в относительном пути. ./C: недействительно.

0 голосов
/ 14 ноября 2019

Не существует единого решения для загрузки полной корзины на локальный компьютер через Cloud Shell.

Лучший вариант для среды, подобной вашей (только с использованием интерфейса Cloud Shell, без * 1003). * установленный в вашей локальной системе), должен выполнить ряд шагов:

  • Загрузка всего пакета в среде Cloud Shell
  • Архив содержимого пакета
  • Загрузить архивированный файл
  • Загрузить файл через браузер
  • Очистить:
    • Удалить локальные файлы (локальные в контексте Cloud Shell)
    • Удалить сжатый файл корзины
  • Разархивировать корзину локально

Преимущество этого заключается в необходимости загружать только один файл на локальный компьютер.

Это может показаться большим количеством шагов для не-разработчика, но на самом деле это довольно просто:

Сначала запустите это в облачной оболочке:

mkdir /tmp/bucket-contents/
gsutil -m cp -R gs://my-uniquename-bucket /tmp/bucket-contents/
pushd /tmp/bucket-contents/ 
zip -r /tmp/zipped-bucket.zip .
popd
gsutil cp /tmp/zipped-bucket.zip gs://my-uniquename-bucket/zipped-bucket.zip

Затем, скачайте заархивированный файл черезgh эта ссылка: https://storage.cloud.google.com/my-uniquename-bucket/zipped-bucket.zip

Наконец, очистите:

rm -rf /tmp/bucket-contents
rm /tmp/zipped-bucket.zip
gsutil rm gs://my-uniquename-bucket/zipped-bucket.zip

После этих шагов у вас будет файл zipped-bucket.zip в вашей локальной системе, который вы можете распаковать с помощьюинструмент по вашему выбору.

Обратите внимание, что это может не сработать, если у вас слишком много данных в корзине, а среда Cloud Shell не может сохранить все данные, но вы можете повторить те же шаги для папок вместоведра, чтобы иметь управляемый размер.

...