Во-первых, обратите внимание, что каталоги / папки на самом деле не существуют в Amazon S3.
Например, я мог бы выполнить эту команду:
aws s3 cp foo.txt s3://my-bucket/folder1/folder2/foo.txt
Это будет работать успешно, даже еслиfolder1
и folder2
не существуют.
Консоль управления Amazon S3 сделает эти папки «видимыми», но на самом деле они не существуют.
Если я затем запустил:
aws s3 rm s3://my-bucket/folder1/folder2/foo.txt
тогда объект будет удален, а папки «исчезнут» (потому что их никогда не существовало).
Иногда, однако, люди хотят, чтобы папка появлялась. Когда в консоли управления создается папка, создается объект нулевой длины с ключом (именем файла), установленным на имя папки. Это приведет к появлению пустой «папки», но на самом деле это не папка.
При перечислении объектов в S3 вызовы API могут возвращать общий префикс , который в принципе похож напапка, но на самом деле это просто «часть пути» имени файла.
Стоит также упомянуть, что в Amazon S3 нет команды «переместить». Вместо этого при использовании команды aws s3 mv
интерфейс командной строки AWS копирует объект в новый объект, а затем удаляет исходный объект. Это заставляет объект выглядеть так, как будто он был перемещен, но на самом деле он был скопирован и удален.
Итак, вы можете выбрать следующие параметры:
- Не беспокойтесь о папках. Просто притворись, что они существуют. Они не служат какой-либо цели. ИЛИ
- Создать новую папку после перемещения. ИЛИ
- Напишите свою собственную программу для копирования и удаления объектов без удаления папки.
На самом деле, вполне возможно, что папка никогда не существовала впервое место (то есть не было файла нулевой длины с ключом, совпадающим с именем папки), поэтому он никогда не удалялся. Просто у S3 не было ничего, чтобы папка «появлялась» там.