Aws-cli: Добавить опцию --no-overwrite в aws s3 cp/mv

Созданный на 6 окт. 2017  ·  43Комментарии  ·  Источник: aws/aws-cli

Было бы неплохо иметь удобную функцию --no-overwrite для команд aws s3 cp/mv , которая проверяла бы, что целевой пункт назначения еще не существует, прежде чем помещать файл в корзину s3.

Конечно, эта логика не может быть гарантирована API AWS (афаик...) и уязвима для условий гонки и т. д. Но было бы полезно предотвратить непреднамеренные ошибки!

feature-request s3

Самый полезный комментарий

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

Все 43 Комментарий

Пометка как запрос функции. Сложная часть, если мы сделали это в cp или mv , заключается в том, что CLI может запросить S3, чтобы узнать, существует ли файл, прежде чем пытаться его загрузить. Поэтому может иметь смысл добавить его в sync , поскольку он уже это делает.

Я хотел бы видеть это также в cp и/или mv .

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

Когда вы запускаете aws s3 cp --recursive newdir s3://bucket/parentdir/ , он посещает только каждый из файлов, которые фактически копирует.

Когда вы запускаете aws s3 sync newdir s3://bucket/parentdir/ , он просматривает файлы, которые копирует, а также просматривает весь список файлов в s3://bucket/parentdir (который уже может содержать тысячи или миллионы файлов) и получает метаданные для каждого существующего файла. .

В достаточно большом сегменте назначения aws s3 cp --recursive может занять несколько секунд, а aws s3 sync несколько часов для копирования одних и тех же данных.

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

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

да @sgrimm-sg, это имеет смысл. Мне также интересно увидеть команду CLI cp, которая действительно может обрабатывать эти условия.

Было бы очень полезно, если бы это была опция на aws s3 sync . rsync имеет эту функцию, доступную как --ignore-existing . Я бы предпочел использовать те же имена опций, что и rsync , так как я подозреваю, что многие люди уже знакомы с rsync .

Доброе утро!

Мы закрываем эту проблему здесь, на GitHub, в рамках нашего перехода на UserVoice для запросов функций, связанных с интерфейсом командной строки AWS.

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

В качестве краткого примера UserVoice (если он еще не знаком): после публикации идеи люди могут проголосовать за нее, а команда разработчиков будет отвечать непосредственно на самые популярные предложения.

Мы импортировали существующие запросы функций из GitHub — ищите эту проблему там!

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

GitHub останется каналом для сообщений об ошибках.

И снова эту проблему можно найти, выполнив поиск по названию на странице: https://aws.uservoice.com/forums/598381-aws-command-line-interface .

– Команда AWS SDK и инструментов

Эту запись можно найти на UserVoice по адресу: https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168406-add-no-overwrite-option-to-aws-s3- ср-мв

Связанный:

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

@jamesls это здорово! не могли бы вы ответить на предложение под рукой? --no-overwrite было бы отличным дополнением, позволяющим избежать переноса вызовов в скрипты.

+1 к этой проблеме. Я предлагаю -n, --no-clobber, чтобы соответствовать существующим параметрам команды Linux cp.

Была ли реализована эта просьба? Попытка работать с пакетными файлами Windows для локального резервного копирования> S3, это самые простые методы, простой запрет на перезапись или аналогичный флаг.

Какие-либо обновления относительно этой функции?

Любые обновления относительно этой функции? Спасибо

Какие-либо обновления относительно этой функции?

Какие-либо обновления относительно этой функции?

сев3, +1

Действительно нужно добавить эту функцию, так как синхронизация S3, похоже, не загружает каждый файл.

Любые обновления или обходные пути?

Любые обновления или обходные пути?

Мне пришлось написать скрипт на Python, чтобы загрузить все элементы в корзину в массив (список), затем загрузить все элементы из каталога, который я хочу синхронизировать, затем сравнить массивы и загрузить локальные элементы, не входящие в массив S3. .

Мне пришлось написать скрипт на Python, чтобы загрузить все элементы в корзину в массив (список), затем загрузить все элементы из каталога, который я хочу синхронизировать, затем сравнить массивы и загрузить локальные элементы, не входящие в массив S3. .

@southpaw5271 - не могли бы вы поделиться своим сценарием и сэкономить мне время? ; )

Мне пришлось написать скрипт на Python, чтобы загрузить все элементы в корзину в массив (список), затем загрузить все элементы из каталога, который я хочу синхронизировать, затем сравнить массивы и загрузить локальные элементы, не входящие в массив S3. .

@southpaw5271 - не могли бы вы поделиться своим сценарием и сэкономить мне время? ; )

Кажется, у меня его больше нет :( Извините!

Этот флаг также был бы полезен для команды cp , поскольку sync не позволяет копировать файл при изменении имени назначения.

aws s3 cp --no-overwrite ./somefile s3://bucket/othername

Нам также нужна опция --no-overwrite с s3 на локальную. Мы были обожжены случайными перезаписями со стороны благонамеренных людей, и это был бы очень ценный способ установить для них «ограждение». Спасибо!

любое обновление?

Какие-либо обновления относительно этой функции? Спасибо

+1

+1

Я переношу файлы из старой системы. У меня есть скрипт Python, который генерирует разные пути в соответствии со столбцами БД (т. е. каждая организация теперь имеет свою собственную папку в определенном сегменте), поэтому я не могу полагаться на команду синхронизации. Я мог бы запустить скрипт для частичной миграции, если бы был доступен параметр -skip-duplicate или какой-либо другой параметр.

+1

Это очень нужно. Почему его еще нет?

+1

+10

Какие-либо обновления относительно этой функции? Спасибо

Также проголосуйте за эту функцию, пожалуйста!

+1

+1

+1

++1

какие-либо обновления по этому поводу?

+1

Я не могу поверить, что это все еще не вещь. Практически невозможно создать неизменяемое хранилище на S3 :(

Мы инициировали копирование данных из корзины S3 в локальное монтирование Linux, и размер в месте назначения примерно на 40 ГБ меньше, чем в корзине S3. Найдите способы скопировать только недостающее. Кажется, нет простого способа сделать это вместо того, чтобы копировать все ..

Одной из опций aws s3 sync , которая может выполнить нечто подобное, является логический флаг --size-only , который переопределяет место назначения только в том случае, если размер исходного и целевого объекта различается.

 --size-only (boolean) Makes the size of each key the only criteria used
       to decide whether to sync from source to destination.

Команда, которую я использовал,

aws s3 sync s3://<source bucket> s3://<destination bucket> --size-only 

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

мне не помогает, ожидаю, когда #5456 будет адресовано DH

Была ли эта страница полезной?
0 / 5 - 0 рейтинги