Как лучше всего удалять несколько объектов (файлов и папок) из облачного хранилища Google с помощью node.js - PullRequest
1 голос
/ 11 марта 2020

Я хочу удалить несколько объектов из моего облачного хранилища Google, что означает удаление папок и файлов в комбинации. В официальной документации есть пример:

bucket.deleteFiles({ prefix: 'image-' }, callback);

Это удалит все файлы в каталоге images. Но что, если я хочу удалить 10 000 файлов в этом каталоге? Мой демонстрационный код такой:

const _deleteItems = async (gcsClient, bucketName, allItems) => {
    try {
        for (let item of allItems) {
            await gcsClient.bucket(bucketName).deleteFiles({ prefix: getFilePath(item) }, function(err) {});
        }
    } catch (err) {
        throw new Error('Could not delete item');
    }
};

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

1 Ответ

1 голос
/ 13 марта 2020
  • Есть ли лучший способ сделать это?

    Здесь вы можете найти лучшие практики, касающиеся удаление объекта и массовое удаление объекта, которое применимо к вашему варианту использования.

  • Что если кто-то еще тем временем загрузит новый файл в папку, которую я собираюсь удалить ? Этот файл также будет удален в этом случае.

    В этом случае вам необходимо использовать Управление жизненным циклом объекта и установить правило для защиты файлов с определенным "возрастом". ». Вы также можете использовать Управление версиями объектов , которое «защищает данные облачного хранилища от перезаписи или случайного удаления», но имейте в виду следующее:

    • «Включение контроля версий объектов увеличивает затраты на хранение "

    • " При использовании Object Lifecycle Management в корзинах с включенным контролем версий объекта, при удалении текущей версии объекта создается не текущая версия, а при удалении не текущей версии эта версия удаляется навсегда . "

...