Файл оценки документа был сохранен в каком-то каталоге после того, как в этом каталоге был создан подкаталог

Обновлено: 07.07.2024

В Amazon S3 корзины и объекты являются основными ресурсами, а объекты хранятся в корзинах. Amazon S3 имеет плоскую структуру, а не иерархию, как в файловой системе. Однако для простоты организации консоль Amazon S3 поддерживает концепцию папки в качестве средства группировки объектов. Для этого используется префикс общего имени для объектов (то есть объекты имеют имена, начинающиеся с общей строки). Имена объектов также называются именами ключей.

Например, вы можете создать на консоли папку с именем photos и сохранить в ней объект с именем myphoto.jpg. Затем объект сохраняется с именем ключа photos/myphoto.jpg , где photos/ — это префикс.

Вот еще два примера:

Если в корзине есть три объекта — logs/date1.txt, logs/date2.txt и logs/date3.txt, — в консоли отобразится папка с именем logs. Если вы откроете папку в консоли, вы увидите три объекта: date1.txt, date2.txt и date3.txt.

Если у вас есть объект с именем photos/2017/example.jpg , консоль покажет вам папку с именем photos, содержащую папку 2017 . В папке 2017 будет находиться объект example.jpg .

У вас могут быть папки внутри папок, но не сегменты внутри сегментов. Вы можете загружать и копировать объекты прямо в папку. Папки можно создавать, удалять и делать общедоступными, но их нельзя переименовывать. Объекты можно копировать из одной папки в другую.

Консоль Amazon S3 рассматривает все объекты, которые имеют символ косой черты ("/") в качестве последнего (завершающего) символа в имени ключа, как папку, например, examplekeyname/ . Вы не можете загрузить объект, имя ключа которого заканчивается символом «/», используя консоль Amazon S3. Однако вы можете загружать объекты с символом «/» в конце с помощью Amazon S3 API, используя AWS CLI, AWS SDK или REST API.

Объект, имя которого заканчивается знаком "/", отображается как папка в консоли Amazon S3. Консоль Amazon S3 не отображает содержимое и метаданные для такого объекта. Когда вы используете консоль для копирования объекта с символом "/" в конце, в месте назначения создается новая папка, но данные и метаданные объекта не копируются.

Темы

Создание папки

В этом разделе описывается, как использовать консоль Amazon S3 для создания папки.

Если ваша политика сегмента запрещает загрузку объектов в этот сегмент без тегов, метаданных или получателей списка управления доступом (ACL), вы не сможете создать папку с помощью этой конфигурации. Вместо этого загрузите пустую папку и укажите эти параметры в конфигурации загрузки.

Чтобы создать папку

В списке сегментов выберите имя сегмента, в котором вы хотите создать папку.

Если ваша политика сегмента запрещает загрузку объектов в этот сегмент без шифрования, вы должны выбрать Включить в разделе Шифрование на стороне сервера.

Выберите Создать папку.

Введите имя папки (например, избранное-фото). Затем выберите Создать папку.

Сделать папки общедоступными

Мы рекомендуем заблокировать любой публичный доступ к вашим папкам и корзинам Amazon S3, если вам специально не нужна общедоступная папка или корзина. Когда вы делаете папку общедоступной, любой пользователь Интернета может просматривать все объекты, сгруппированные в этой папке.

В консоли Amazon S3 вы можете сделать папку общедоступной. Вы также можете сделать папку общедоступной, создав политику корзины, которая ограничивает доступ по префиксу. Дополнительную информацию см. в разделе Управление идентификацией и доступом в Amazon S3.

После того как вы сделаете папку общедоступной в консоли Amazon S3, вы не сможете снова сделать ее частной. Вместо этого вы должны установить разрешения для каждого отдельного объекта в общей папке, чтобы объекты не имели общего доступа. Дополнительные сведения см. в разделе Настройка списков контроля доступа.

Удаление папок

В этом разделе объясняется, как использовать консоль Amazon S3 для удаления папок из корзины S3.

Информацию о функциях и ценах Amazon S3 см. в разделе Amazon S3 .

Чтобы удалить папки из корзины S3

В списке сегментов выберите имя сегмента, из которого вы хотите удалить папки.

В списке объектов установите флажки рядом с папками и объектами, которые вы хотите удалить.

Выберите «Удалить».

На странице "Удалить объекты" убедитесь, что в списке указаны имена папок, которые вы выбрали для удаления.

В поле "Удалить объекты" введите "Удалить" и выберите "Удалить объекты".

Это действие удаляет все указанные объекты. При удалении папок дождитесь завершения действия удаления, прежде чем добавлять новые объекты в папку. В противном случае новые объекты также могут быть удалены.

Bolaji Ayodeji

Боладжи Айодеджи

С момента создания Unix в 1970-х годах многие операционные системы использовали его в качестве основы. Многие из этих операционных систем потерпели неудачу, в то время как другие преуспели.

Linux — одна из самых популярных операционных систем на базе Unix. Это открытый исходный код, который используется по всему миру во многих отраслях.

Одной из замечательных особенностей операционной системы Linux является интерфейс командной строки (CLI), который позволяет пользователям взаимодействовать со своим компьютером из оболочки. Оболочка Linux представляет собой среду REPL (чтение, оценка, печать, цикл), в которой пользователи могут вводить команду, а оболочка запускает ее и возвращает результат.

Команда ls — это одна из многих команд Linux, которые позволяют пользователю просматривать файлы или каталоги из интерфейса командной строки.

В этой статье мы подробно рассмотрим команду ls и некоторые из наиболее важных флагов, которые вам понадобятся в повседневной жизни.

Предпосылки

  • Компьютер с каталогами и файлами
  • Установите один из дистрибутивов Linux
  • Базовые знания о навигации по интерфейсу командной строки.
  • Улыбка на вашем лице :)

Команда Linux ls

Команда ls используется для вывода списка файлов или каталогов в Linux и других операционных системах на базе Unix.

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

Запустите терминал и введите ls, чтобы увидеть это в действии:

Как составить список файлов в каталоге с параметрами

Команда ls также принимает некоторые флаги (известные также как параметры), которые представляют собой дополнительную информацию, изменяющую способ отображения файлов или каталогов в вашем терминале.

Другими словами, флаги изменяют работу команды ls:

PS: слово «содержимое», используемое в статье, относится к перечисленным файлам и каталогам, а не к фактическому содержимому файлов/каталогов ?

Список файлов в текущем рабочем каталоге

Введите команду ls, чтобы просмотреть содержимое текущего рабочего каталога:

Список файлов в другом каталоге

Введите команду ls [здесь путь к каталогу], чтобы просмотреть содержимое другого каталога:

Список файлов в корневом каталоге

Введите команду ls /, чтобы просмотреть содержимое корневого каталога:

Список файлов в родительском каталоге

Введите команду ls .., чтобы отобразить содержимое родительского каталога на один уровень выше. Используйте ls ../.. для содержимого двумя уровнями выше:

Список файлов в домашнем каталоге пользователя (/home/user)

Введите команду ls ~, чтобы просмотреть содержимое домашнего каталога пользователя:

Список только каталогов

Введите команду ls -d */, чтобы вывести список только каталогов:

Список файлов с подкаталогами

Введите команду ls *, чтобы просмотреть содержимое каталога с его подкаталогами:

Рекурсивный список файлов

Введите команду ls -R, чтобы вывести список всех файлов и каталогов с соответствующими подкаталогами до последнего файла:

Screenshot-2020-09-01-at-9.04.56-AM

Если у вас много файлов, это может занять очень много времени, так как каждый отдельный файл в каждом каталоге будет распечатан. Вместо этого вы можете указать каталог для запуска этой команды, например: ls Downloads -R

Список файлов с их размерами

Введите команду ls -s (s в нижнем регистре), чтобы отобразить файлы или каталоги с их размерами:

Список файлов в длинном формате

Введите команду ls -l, чтобы просмотреть содержимое каталога в формате таблицы со столбцами, включая:

Список файлов в длинном формате с удобочитаемыми размерами файлов

Введите команду ls -lh, чтобы вывести список файлов или каталогов в том же формате таблицы, что и выше, но с другим столбцом, представляющим размер каждого файла/каталога:

Обратите внимание, что размеры указаны в байтах (Б), мегабайтах (МБ), гигабайтах (ГБ) или терабайтах (ТБ), если размер файла или каталога превышает 1024 байта.

Список файлов, включая скрытые файлы

Введите команду ls -a, чтобы вывести список файлов или каталогов, включая скрытые файлы или каталоги. В Linux все, что начинается с . считается скрытым файлом:

Список файлов в длинном формате, включая скрытые файлы

Введите команду ls -l -a или ls -a -l или ls -la или ls -al, чтобы вывести список файлов или каталогов в табличном формате с дополнительной информацией, включая скрытые файлы или каталоги:

Список файлов и сортировка по дате и времени

Введите команду ls -t, чтобы вывести список файлов или каталогов и отсортировать их по дате последнего изменения в порядке убывания (от большего к меньшему).

Вы также можете добавить флаг -r, чтобы изменить порядок сортировки, например: ls -tr :

Список файлов и сортировка по размеру файла

Введите команду ls -S (S в верхнем регистре), чтобы вывести список файлов или каталогов и отсортировать их по размеру в порядке убывания (от большего к меньшему).

Вы также можете добавить флаг -r, чтобы изменить порядок сортировки, например: ls -Sr :

Список файлов и вывод результата в файл

Введите команду ls > output.txt, чтобы напечатать вывод предыдущей команды в файл output.txt. Вы можете использовать любой из рассмотренных ранее флагов, например -la — ключевым моментом здесь является то, что результат будет выводиться в файл, а не заноситься в командную строку.

Затем вы можете использовать файл по своему усмотрению или записать содержимое файла с помощью cat output.txt :

Screenshot-2020-09-01-at-9.12.59-AM

.

Существует множество других команд и комбинаций, которые вы можете изучить, чтобы составить список файлов и каталогов в соответствии с вашими потребностями. Следует помнить одну вещь: возможность одновременного объединения нескольких команд.

Представьте, что вы хотите составить список файлов в длинном формате, включая скрытые файлы, и отсортировать их по размеру. Это будет команда ls -alS , представляющая собой комбинацию ls -l , ls -a и ls -S .

Если вы забыли какую-либо команду или не знаете, что делать, вы можете запустить ls --help или man ls, которые отобразят руководство со всеми возможными параметрами для команды ls:

Я хочу перечислить все файлы и каталоги, содержащиеся в каталоге и подкаталогах этого каталога. Если бы я выбрал C:\ в качестве каталога, программа получила бы все имена всех файлов и папок на жестком диске, к которым у нее был доступ.

Список может выглядеть так


17 ответов 17

где *.* — шаблон для сопоставления файлов

Если каталог также необходим, вы можете сделать следующее:


Не сработает. Класс <>? Что возвращает GetFiles? А как насчет имен каталогов, которые также были запрошены?

Это может сработать, но часто возникает ошибка UnauthorizedAccessException. Как будет искать только те каталоги, к которым у него есть доступ?

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


Это, безусловно, лучший ответ здесь. Он получает все файлы и папки в одной строке кода, чего не делает ни один другой.

Я получаю некоторые скрытые папки, такие как: "F:\$RECYCLE.BIN", "F:\System Volume Information". Как игнорировать эти папки (чтобы отображались только файлы и папки)

Примечание: функция показывает только имена без относительных путей.

Используйте методы GetDirectories и GetFiles для получения папок и файлов.

Используйте SearchOption AllDirectories, чтобы также получить папки и файлы во вложенных папках.

@Gusdor Не стесняйтесь предлагать более подходящий способ использования пути для удаления фиксированной левой части пути, например. `C:` в приведенном примере.

@Lucero мой комментарий был плохо сформулирован. "Использовать подстроку" мало что мне говорит, и мне пришлось застрять в linqpad, чтобы найти хорошее решение. Например, каким должен быть параметр? Собираетесь ли вы использовать path.SubString(2), чтобы наивно удалить букву диска и двоеточие? Что делать, если каталог является сетевым ресурсом? Я предлагаю Path как надежный метод, потому что он может дать массу положительных эмоций в этой области. В этом случае вы можете написать filePath.Substring(Path.GetPathRoot(filePath).Length) . Да, здесь используется подстрока, так как она наиболее лаконична.

Боюсь, метод GetFiles возвращает список файлов, но не каталоги. Список в вопросе подсказывает мне, что результат также должен включать папки. Если вам нужен более настраиваемый список, вы можете попробовать рекурсивно вызывать GetFiles и GetDirectories. Попробуйте это:

Совет. Вы можете использовать классы FileInfo и DirectoryInfo, если вам нужно проверить какой-либо конкретный атрибут.

Я использую следующий код с формой, имеющей 2 кнопки: одну для выхода и другую для запуска. Диалоговое окно браузера папок и диалоговое окно сохранения файла. Код указан ниже и работает в моей системе Windows10 (64):


Вы можете использовать FindFirstFile, который возвращает дескриптор, а затем рекурсивно вызывать функцию, которая вызывает FindNextFile. Это хороший подход, поскольку указанная структура будет заполнена различными данными, такими как альтернативное имя, lastTmeCreated, изменено, атрибуты и т. д.

Некоторая улучшенная версия с максимальным уровнем для спуска в каталог и возможностью исключения папок:

вывод функции (содержимое папки 5 исключено из-за ограничения уровня, а содержимое папки 3 исключено, поскольку оно находится в массиве excludeFolders):


Поздний ответ, но я думаю, что кому-то это может быть полезно. Стартер итеративной версии на основе стека с поддержкой обработки ошибок и возвратом относительных путей:



Это также неправильно, так как это не возвращает никаких каталогов (как указано в вопросе), а только фактические файлы.

Если у вас нет доступа к подпапке внутри дерева каталогов, Directory.GetFiles останавливается и создает исключение, в результате чего в принимающей строке[].

Он обрабатывает исключение внутри цикла и продолжает работать до тех пор, пока не будет пройдена вся папка.


логичным и упорядоченным способом:

конечно, сделал это, но это должно быть понятно, это простая циклическая рекурсия по всем каталогам и файлам

В следующем примере самый быстрый (не распараллеленный) способ списка файлов и подпапок в дереве каталогов обрабатывает исключения. Было бы быстрее использовать Directory.EnumerateDirectories с SearchOption.AllDirectories для перечисления всех каталогов, но этот метод завершится ошибкой, если возникнет исключение UnauthorizedAccessException или PathTooLongException.


При этом вы можете просто запустить их и выбрать подпапку при запуске консоли

и это патч для экспорта XML

Пожалуйста, попробуйте приведенный ниже код, чтобы прочитать все каталоги и подкаталоги с файлами

Метод "ReadDirectories" вызывается до тех пор, пока не будет просканирован последний каталог.

Команда gsutil cp позволяет копировать данные между локальной файловой системой и облаком, внутри облака и между поставщиками облачных хранилищ. Например, чтобы загрузить все текстовые файлы из локального каталога в корзину, вы можете запустить:

Вы также можете загружать данные из корзины. Следующая команда загружает все текстовые файлы из корзины верхнего уровня в ваш текущий каталог:

Вы можете использовать параметр -n, чтобы предотвратить перезапись содержимого существующих файлов. В следующем примере текстовые файлы загружаются из корзины без затирания данных в вашем каталоге:

Используйте параметр -r, чтобы скопировать все дерево каталогов. Например, чтобы загрузить дерево каталогов dir :

Если вам необходимо передать большое количество файлов, вы можете выполнить параллельное многопоточное/многопроцессорное копирование, используя параметр верхнего уровня gsutil -m (см. параметры справки gsutil):

Вы можете использовать параметр -I со стандартным вводом, чтобы указать список URL-адресов для копирования, по одному в строке. Это позволяет использовать gsutil в конвейере для загрузки или скачивания объектов, созданных программой:

где выходные данные команды cat filelist представляют собой список файлов, облачных URL-адресов и подстановочных знаков для файлов и облачных URL-адресов.

Как создаются имена

Команда gsutil cp пытается назвать объекты способами, совместимыми с командой Linux cp. Это означает, что имена создаются в зависимости от того, выполняете ли вы рекурсивное копирование каталога или копируете объекты с индивидуальными именами, или копируете ли вы в существующий или несуществующий каталог.

При выполнении рекурсивного копирования каталогов имена объектов составляются так, чтобы отражать структуру исходного каталога, начиная с точки рекурсивной обработки. Например, если каталог dir1/dir2 содержит файл a/b/c , следующая команда создает объект gs://my-bucket/dir2/a/b/c :

Наоборот, копирование файлов с индивидуальными именами приводит к объектам, названным по конечному компоненту пути исходных файлов. Например, снова предполагая, что каталог dir1/dir2 содержит a/b/c , следующая команда создает объект gs://my-bucket/c :

Обратите внимание, что в приведенном выше примере подстановочный знак '**' соответствует всем именам в каталоге dir . Подстановочный знак '*' соответствует именам только на один уровень глубины. Дополнительные сведения см. в разделе подстановочные знаки справки gsutil.

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

Кроме того, результирующие имена зависят от того, существует ли целевой подкаталог. Например, если gs://my-bucket/subdir существует как подкаталог, следующая команда создает объект gs://my-bucket/subdir/dir2/a/b/c :

Наоборот, если gs://my-bucket/subdir не существует, та же самая команда gsutil cp создает объект gs://my-bucket/subdir/a/b/c .

Примечание. Консоль Google Cloud Platform создает папки, создавая объекты-заполнители, заканчивающиеся символом "/". gsutil пропускает эти объекты при загрузке из облака в локальную файловую систему, поскольку создание файла, оканчивающегося на «/», не разрешено в Linux и macOS. Мы рекомендуем создавать объекты, заканчивающиеся на "/", только если вы не собираетесь загружать такие объекты с помощью gsutil.

Копирование в/из подкаталогов; Распределение переводов между машинами

Вы можете использовать gsutil для копирования в подкаталоги и из них с помощью следующей команды:

Это приводит к тому, что dir и все его файлы и вложенные подкаталоги копируются в указанное место назначения, в результате чего появляются объекты с именами вроде gs://my-bucket/data/dir/a/b/c . Точно так же вы можете загружать из подкаталогов корзины с помощью следующей команды:

Это приводит к тому, что все, что вложено в gs://my-bucket/data, загружается в dir , в результате чего создаются файлы с такими именами, как dir/data/a/b/c .

вы можете выполнять одновременную загрузку на 3 компьютера, выполнив следующие команды на каждом компьютере соответственно:

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

Копирование в облаке и сохранение метаданных

Если и исходный, и целевой URL-адреса являются облачными URL-адресами от одного и того же поставщика, gsutil копирует данные «в облако» (без загрузки и выгрузки с компьютера, на котором вы запускаете gsutil). В дополнение к преимуществам в производительности и стоимости, копирование в облаке сохраняет метаданные, такие как Content-Type и Cache-Control. Напротив, когда вы загружаете данные из облака, они попадают в файл без связанных метаданных, если только у вас нет способа сохранить или воссоздать эти метаданные.

Копии, охватывающие местоположения и/или классы хранилища, вызывают перезапись данных в облаке, что может занять некоторое время (но все же быстрее, чем загрузка и повторная загрузка). Такие операции можно возобновить той же командой, если они были прерваны, при условии, что параметры команды идентичны.

Обратите внимание, что по умолчанию команда gsutil cp не копирует ACL объекта в новый объект, а вместо этого использует ACL корзины по умолчанию (см. gsutil help defacl). Вы можете переопределить это поведение с помощью параметра -p.

При копировании в облаке, если в целевом сегменте включено управление версиями объектов, по умолчанию gsutil cp копирует только живые версии исходного объекта. Например, следующая команда вызывает копирование только одной активной версии gs://bucket1/obj в gs://bucket2 , даже если существуют неактуальные версии gs://bucket1/obj :

Флаг gsutil -m верхнего уровня не допускается при использовании флага cp -A.

Проверка контрольной суммы

Если вы знаете MD5 файла перед загрузкой, вы можете указать его в заголовке Content-MD5, что позволит службе облачного хранилища отклонить загрузку, если MD5 не соответствует значению, вычисленному службой. Например:

Вы также можете добавить эту строку в файл ~/.bashrc и перезапустить оболочку перед запуском gsutil:

В Windows 7 переменную среды TMPDIR можно изменить, выбрав «Пуск» -> «Компьютер» -> «Система» -> «Дополнительные параметры системы» -> «Переменные среды». Вам необходимо перезагрузить компьютер после внесения этого изменения, чтобы оно вступило в силу. После запуска команды экспорта в Linux и macOS перезагрузка не требуется.

Синхронизация типов файлов, специфичных для ОС (таких как символические ссылки и устройства)

Пожалуйста, см. раздел о типах файлов для конкретных ОС в gsutil help rsync. Хотя этот раздел относится к команде rsync, аналогичные пункты относятся к команде cp.

Параметры

Скопируйте все исходные версии из корзины или папки с исходным кодом. Если не задано, копируется только действующая версия каждого исходного объекта.

Если возникает ошибка, продолжайте попытки скопировать оставшиеся файлы. Если какие-либо копии не увенчались успехом, статус выхода gsutil не равен нулю, даже если этот флаг установлен. Этот параметр неявно устанавливается при запуске gsutil -m cp. .

Копирование в режиме "гирляндной цепочки", что означает копирование между двумя сегментами путем загрузки сначала на компьютер, на котором запущен gsutil, а затем загрузки в целевой сегмент. Режим по умолчанию – "копирование в облаке", при котором данные копируются между двумя сегментами без загрузки или скачивания.

Во время «копирования в облаке» исходный составной объект остается составным в месте назначения. Однако вы можете использовать режим «гирляндной цепочки», чтобы превратить составной объект в несоставной. Например:

Используйте стандартный ввод, чтобы указать список файлов или объектов для копирования. Вы можете использовать gsutil в конвейере для загрузки или скачивания объектов, созданных программой. Например:

где выходные данные команды cat filelist представляют собой построчный список файлов, облачных URL-адресов и подстановочных знаков для файлов и облачных URL-адресов.

Применяет транспортную кодировку gzip к любому загружаемому файлу, расширение которого соответствует списку расширений -j. Это полезно при загрузке файлов со сжимаемым содержимым, таких как файлы .js, .css или .html. Это также экономит пропускную способность сети, оставляя данные несжатыми в облачном хранилище.

При указании параметра -j загружаемые файлы сжимаются в памяти и передаются только по сети. И локальные файлы, и объекты Cloud Storage остаются несжатыми. Загруженные объекты сохраняют Content-Type и имя исходных файлов.

Обратите внимание: если вы хотите использовать параметр верхнего уровня -m для распараллеливания копий вместе с параметрами -j/-J, ваша производительность может быть узким местом из-за параметра конфигурации boto "max_upload_compression_buffer_size", для которого установлено значение 2 ГиБ. по умолчанию. Вы можете увеличить этот размер буфера сжатия. Например:

Применяет транспортную кодировку gzip к загружаемым файлам. Этот параметр работает так же, как описанный выше параметр -j, но применяется ко всем загружаемым файлам независимо от расширения.

Выводит файл журнала манифеста с подробной информацией о каждом скопированном элементе. Этот манифест содержит следующую информацию для каждого элемента:

  • Исходный путь.
  • Путь назначения.
  • Исходный размер.
  • Байт передано.
  • Хэш MD5.
  • Время и дата начала передачи в формате UTC и ISO 8601.
  • Время и дата завершения передачи в формате UTC и ISO 8601.
  • Идентификатор загрузки, если была выполнена возобновляемая загрузка.
  • Окончательный результат попытки переноса: успех или неудача.
  • Сведения о сбое, если таковые имеются.

Если файл журнала уже существует, gsutil использует его в качестве входных данных для процесса копирования и добавляет элементы журнала в существующий файл. Объекты, помеченные в существующем файле журнала как успешно скопированные или пропущенные, игнорируются. Объекты без записей копируются, а объекты, ранее отмеченные как неудачные, повторяются. Этот параметр можно использовать в сочетании с параметром -c для создания сценария, который надежно копирует большое количество объектов, используя сценарий bash, подобный следующему:

Параметр -c позволяет продолжить копирование после возникновения сбоев, а параметр -L позволяет gsutil продолжить работу с того места, где он был остановлен, без дублирования работы. Цикл продолжается до тех пор, пока gsutil завершает работу с ненулевым статусом. Ненулевой статус указывает на то, что во время операции копирования произошел по крайней мере один сбой.

Обратите внимание, что одновременное указание параметров -a и -p недопустимо.

Включает сохранение атрибутов POSIX при копировании объектов. gsutil cp копирует поля, предоставленные stat . Этими полями являются идентификатор пользователя владельца, идентификатор группы группы-владельца, режим или разрешения файла, а также время доступа и изменения файла. Для загрузок эти атрибуты устанавливаются только в том случае, если исходные объекты были загружены с включенным этим флагом.

В Windows этот флаг устанавливает и восстанавливает только время доступа и время модификации. Это связано с тем, что Windows не поддерживает POSIX uid/gid/mode.

Применяет кодировку содержимого gzip к любому загружаемому файлу, расширение которого соответствует списку расширений -z. Это полезно при загрузке файлов со сжимаемым содержимым, таких как файлы .js, .css или .html, поскольку это уменьшает пропускную способность сети и размер хранилища. Это может повысить производительность и снизить затраты.

Когда вы указываете параметр -z, данные из ваших файлов сжимаются перед загрузкой, но сами файлы остаются несжатыми на локальном диске. Загруженные объекты сохраняют Content-Type и имя исходных файлов, но для их метаданных Content-Encoding установлено значение gzip, чтобы указать, что хранящиеся данные объекта сжаты на серверах Cloud Storage, а для их метаданных Cache-Control установлено значение no- преобразовать .

Например, следующая команда:

делает следующее:

  • Команда cp загружает файлы cattypes.html и tabby.jpg в корзину gs://mycats .
  • В зависимости от расширений файлов gsutil устанавливает Content-Type файла cattypes.html в text/html и tabby.jpg в image/jpeg .
  • Параметр -z сжимает данные в файле cattypes.html .
  • Параметр -z также задает для параметра Content-Encoding для cattypes.html значение gzip, а для параметра Cache-Control для cattypes.html значение no-transform .

Поскольку параметры -z/-Z сжимают данные перед загрузкой, они не подвержены тому же узкому месту буфера сжатия, которое может повлиять на параметры -j/-J.

Обратите внимание, что если вы загружаете объект с Content-Encoding:gzip , gsutil распаковывает содержимое перед записью в локальный файл.

Применяет кодировку содержимого gzip к загружаемым файлам. Этот параметр работает так же, как и параметр -z, описанный выше, но применяется ко всем загружаемым файлам независимо от расширения.

Если не указано иное, содержимое этой страницы находится под лицензией Creative Commons Attribution 4.0, а образцы кода распространяются под лицензией Apache 2.0. Подробнее см. в Правилах сайта Google Developers. Java является зарегистрированным товарным знаком Oracle и/или ее дочерних компаний.

Читайте также: