I would like to propose an abstract interface like Gaufrette for the core. I've written already a CakePHP plugin that wraps Gaufrette into a nice cake plugin.
I'm not saying we should implement all the storage adapters in the core, they can become an external project like the additional database sources or 3rd party cache engines.
The idea is to acces any kind of file storage device or service through the same interface. This would make it easy to work with them and keep the code well re-useable and DRY.
The storage interface itself could work similar as the cache engines. My plugin already implements a singleton StorageManager that can load adapters as needed and access them through a config key.
Another advantage of the interface would be a smooth migration between different storage systems:
StorageManager::adapter('AmazonS3')->write('/in/my/bucket.foo', StorageManager::adapter('Local')->read('/my/file.foo'));