Как перенести корзину AWS S3 в другую учетную запись или сервис
Простой сервис хранения AWS (S3) отлично подходит для хранения большого количества объектов, но это также API, совместимый со многими другими конкурирующими сервисами. Если вы хотите выйти за пределы AWS, перенос корзины S3 сделать несложно.
Как это работает?
Если обе службы, в которые вы выполняете перенос, совместимы с S3, вы можете просто использовать утилиту, такую как rclone
, настроенную для доступа к каждой службе, для передачи всех элементов. Например, вы можете перейти из S3 в совместимый сервис Spaces Digital Ocean или из корзины S3 в одной учетной записи в другую.
Чтобы обработать перенос, rclone
прочитает из исходного сегмента, найдет все файлы, которые необходимо передать, и выполнит их клонирование в целевой сегмент. rclone
также может обрабатывать обновления файлов, что может быть полезно, если исходная корзина записывается во время передачи.
Что касается времени передачи, это, вероятно, займет некоторое время в зависимости от размера корзины. Количество файлов также является проблемой, так как rclone
добавляет накладные расходы на каждую передачу. Если у вас миллионы файлов или несколько терабайт, вы должны быть готовы к часам передачи.
К счастью, вы можете выполнить большой первоначальный перенос, пока в корзину все еще идет активная запись. Скорее всего, вам потребуется некоторое время простоя, чтобы обеспечить синхронизацию сегментов перед окончательным переключением. Если это проблема, есть другие инструменты, доступные для беспрепятственного переноса, включая коммерческие инструменты, такие как NetApp Cloud Sync, которые могут синхронизировать несколько сегментов вместе.
Некоторые облачные службы, такие как Google Cloud Platform, имеют собственные службы, которые могут выполнять передачу. Если вы переходите на платформу, которая поддерживает это, вы, вероятно, захотите использовать их сервис.
Настройка rclone
Самый простой способ — настроить rclone
на своем сервере для обработки операции переноса. Вам нужно будет запустить его в фоновом режиме или через окно tmux
, чтобы вы могли отключиться от длинных передач.
rclone
доступен в большинстве менеджеров пакетов:
apt install rclone -y
rclone
в основном предназначен для передачи файлов локально или между серверами, совместимыми с SSH, поэтому потребуется небольшая настройка для обработки передачи между службами S3. Этот файл находится по адресу:
~/.config/rclone/rclone.conf
Добавьте новый блок со следующей конфигурацией, которая привязывает его к вашей учетной записи AWS (а не к конкретному сегменту):
[s3] type = s3 env_auth = false acl = private access_key_id = ACCESS_KEY secret_access_key = SECRET_KEY region = REGION location_constraint = LOCATION_CONSTRAINT
Вам нужно будет заполнить конфигурацию своим ключом доступа и секретом, а также ввести регион вашего ведра. Список регионов можно найти в документации AWS.
Вам нужно будет заполнить еще один блок для другого сервиса, на который вы переходите. Если вы перемещаетесь между учетными записями AWS, вам потребуется отдельный ключ с доступом к этой учетной записи. Если вы переходите на такой сервис, как DO Spaces, вам нужно определить еще один блок с новой настроенной конечной точкой:
[spaces] type = s3 env_auth = false acl = private access_key_id = ACCESS_KEY secret_access_key = SECRET_KEY endpoint = nyc3.digitaloceanspaces.com
В любом случае вам нужно будет дать ему новое имя в заголовке блока, потому что это два разных пульта.
Выполнение передачи
После настройки вы сможете просмотреть все возможные пульты
rclone listremotes s3: spaces:
Вы можете просмотреть содержимое корзины, используя имя конечной точки, за которым следует двоеточие и имя корзины.
rclone tree s3:source-bucket
Затем вы можете запустить синхронизацию с некоторыми дополнительными флагами для оптимальной производительности:
rclone sync source:/source-bucket destination:/destination-bucket -P -v --log-file /var/log/rclone/rclone-1.log --create-empty-src-dirs --s3-chunk-size 20M --s3-upload-concurrency 64 --checksum
Флаг -P
позволит вам интерактивно просматривать ход выполнения в вашем терминале и даст оценку того, сколько времени это займет.
rclone sync
просто просканирует исходную корзину и обновит целевую корзину. Вы можете продолжать изменять исходную корзину, пока передача не будет завершена. После того, как это будет сделано, вы можете запустить дополнительные передачи и продолжить синхронизацию сегментов вместе.