I have insert to s3 6bil rows table:
```
INSERT INTO FUNCTION
s3('https://s3.us-east-1.amazonaws.com/my-bucket/data.csv', 'DFGHJ', 'FGHJIJH, 'CSVWithNames', 'time DateTime, exchangeId UInt16, pairId UInt16, id String, price Decimal(38, 18), volume Decimal(38, 18)')
SELECT * FROM trade;
```
but it fails trying to upload part 10001 while aws s3 upload [supports](https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html) only 10k parts.

I had to export this select into CSV 600GB file on the disk and then perform successful `aws s3 cp data.csv s3://my-bucket/data.csv`

I expected Clickhouse would do it on his own successfully. 

┌─version()─┐
│ 22.1.3.7  │
└───────────┘

}
        LOG_INFO(log, "Starting to restore disk {}. Revision: {}, Source bucket: {}, Source path: {}",
                 name, information.revision, information.source_bucket, information.source_path);
        if (readSchemaVersion(information.source_bucket, information.source_path) < RESTORABLE_SCHEMA_VERSION)
            throw Exception("Source bucket doesn't have restorable schema.", ErrorCodes::BAD_ARGUMENTS);
        LOG_INFO(log, "Removing old metadata...");
        bool cleanup_s3 = information.source_bucket != bucket || information.source_path != remote_fs_root_path;
        for (const auto & root : data_roots)
            if (exists(root))
                removeSharedRecursive(root + '/', !cleanup_s3);
        restoreFiles(information);
        restoreFileOperations(information);
        metadata_disk->removeFile(RESTORE_FILE_NAME);
        saveSchemaVersion(RESTORABLE_SCHEMA_VERSION);
        LOG_INFO(log, "Restore disk {} finished", name);
    }
    catch (const Exception &)
    {
        tryLogCurrentException(log, fmt::format("Failed to restore disk {}", name));
        throw;
    }
}
void DiskS3::restoreFiles(const RestoreInformation & restore_information)
{
    LOG_INFO(log, "Starting restore files for disk {}", name);
    std::vector<std::future<void>> results;
    auto restore_files = [this, &restore_information, &results](auto list_result)
    {
        std::vector<String> keys;
        for (const auto & row : list_result.GetContents())