#amazon-web-services #amazon-s3 #s3cmd
Вопрос:
Я загрузил более 5 тысяч папок, каждая из которых должна содержать один файл и одну подпапку (в этой подпапке затем хранятся различные файлы) в пространства DigitalOcean (хранилище S3).
Похоже, что некоторые загрузки завершились неудачно (долгая история). Есть ли способ перечислить все пустые папки с помощью s3cmd
?
Ответ №1:
Мои комментарии здесь касаются Amazon S3, но в равной степени должны относиться и к пространствам DigitalOcean.
«Папки» на самом деле не существуют в S3. Например, вы можете загрузить файл в invoices/january/inv1.txt
, и S3 волшебным invoices
образом создаст папки january
и. Затем, если вы удалите этот объект, эти папки волшебным образом исчезнут. Таким образом, папки автоматически появляются, когда объекты находятся » в » них.
Можно создать пустую папку, создав объект нулевой длины с тем же именем, что и путь. Например, создание объекта нулевой длины с ключом invoices/
» заставит папку отображаться, даже если она пуста (потому что на самом деле она не пуста!). Именно так консоль управления S3 создает папку, когда люди нажимают кнопку «Создать папку».
Итак, когда вы спрашиваете, как «перечислить все пустые папки», это действительно зависит от того, как эти папки были изначально созданы или были ли они вообще созданы! Вполне вероятно, что папки вообще никогда не создавались.
Если ваша цель состоит в том, чтобы исправить неудачную загрузку, вы можете использовать s3cmd sync
функцию, которая может повторно загружать объекты, но достаточно умна, чтобы копировать только те файлы, которые отсутствуют в пункте назначения или были изменены.