**Describe the situation**

The author implemented it but enabled only for DiskS3.
CC @excitoon 
std::optional<Aws::S3::Model::HeadObjectResult> head,
    std::optional<std::reference_wrapper<const ObjectMetadata>> metadata) const
{
    LOG_TRACE(log, "Multipart copy upload has created. Src Bucket: {}, Src Key: {}, Dst Bucket: {}, Dst Key: {}, Metadata: {}",
        src_bucket, src_key, dst_bucket, dst_key, metadata ? "REPLACE" : "NOT_SET");
    auto settings = current_settings.get();
    if (!head)
        head = headObject(src_bucket, src_key);
    size_t size = head->GetContentLength();
    String multipart_upload_id;
    {
        Aws::S3::Model::CreateMultipartUploadRequest request;
        request.SetBucket(dst_bucket);
        request.SetKey(dst_key);
        if (metadata)
            request.SetMetadata(*metadata);
        auto outcome = settings->client->CreateMultipartUpload(request);
        throwIfError(outcome);
        multipart_upload_id = outcome.GetResult().GetUploadId();
    }
    std::vector<String> part_tags;
    size_t upload_part_size = settings->s3_min_upload_part_size;
    for (size_t position = 0, part_number = 1; position < size; ++part_number, position += upload_part_size)
    {
        Aws::S3::Model::UploadPartCopyRequest part_request;