**Describe the situation**

The author implemented it but enabled only for DiskS3.
CC @excitoon 
{
            const String & key = row.GetKey();
            
            if (key.find("/operations/") != String::npos)
                continue;
            const auto [revision, _] = extractRevisionAndOperationFromKey(key);
            
            if (revision > restore_information.revision)
                continue;
            keys.push_back(key);
        }
        if (!keys.empty())
        {
            auto result = getExecutor().execute([this, &restore_information, keys]()
            {
                processRestoreFiles(restore_information.source_bucket, restore_information.source_path, keys);
            });
            results.push_back(std::move(result));
        }
        return true;
    };
    
    listObjects(restore_information.source_bucket, restore_information.source_path, restore_files);
    for (auto & result : results)
        result.wait();
    for (auto & result : results)
        result.get();
    LOG_INFO(log, "Files are restored for disk {}", name);
}
void DiskS3::processRestoreFiles(const String & source_bucket, const String & source_path, Strings keys)