Я искал, но не нашел удовлетворительного решения.
В Minio / S3 нет каталогов, только ключи (с префиксами).Все идет нормально.
Теперь мне нужно изменить эти префиксы.Не для одного файла, а для целой пачки (большого количества) файлов, которые могут быть очень большими (фактически без ограничений).
К сожалению, эти серверы хранения данных, похоже, не имеют понятия (и не поддерживают):
- переименовать файл
- переместить файл
Что нужно сделать, это для каждого файла
- скопировать файл вновое целевое местоположение
- удалить файл из старого исходного местоположения
Мой заданный дизайн выглядит следующим образом:
- пользователи загружают файлы на имя группы / загружает /filename.ext
- фоновый процесс берет загруженные файлы, генерирует еще несколько файлов и загружает их в имя_хвата / temp / filename.ext
- , когда все обработки завершены, загруженный файл и обработанные файлыперемещаются в имя_хранилища / обработано / задание / новые имена файлов ...
Префикс пути используется при обработке уведомления о создании объекта, чтобы различать, является ли это отправкой (начать обработку), темпом (проверкаесли все файлызагружен) и обработан / jobid для удержания их до тех пор, пока пользователь не удалит их.
Представьте себе задачу, в которой 1000 файлов должны попасть в новое место (в пределах одной корзины), скопировать и удалить их один за другим многоместа для ошибок.Недостаточно места во время операции копирования и ошибок подключения без возможности отката (-ов).Это не становится легче, если места будут разными.
Итак, имея этот старый дизайн и не имея шансов переименовать / переместить файл:
Есть ли какие-либо изменения для копирования файлов?без создания новых физических файлов (без дублирования используемого дискового пространства)?
Любой опытный разработчик облачных сервисов мог бы дать мне подсказку, как сделать эту массовую копию с откатами в случаях ошибок?
Кто-нибудь реализовал нечто подобное с функциональным механизмом отката, например, файл 517 из 1000потерпит неудачу?Копировать и удалять их обратно, похоже, не стоит.
В настоящее время я использую сервер Minio и библиотеку Minio dotnet.Но поскольку они совместимы с Amazon S3, этот сценарий также может произойти на Amazon S3.