Copy between different storages leads to copy in source storage
If you try to copy a folder from one storage into another one it leads to a copy in the same (source) storage. This happens because the action is executed in the source storage and only works with the source folder object.
Besides the copyFolderBetweenStorages function raises an exception which might can be moved into the driver class as the driver should be responsable for the copy work. Therefore the AbstractDriver should support (abstract) methods to copy a folder between storages and the local driver should raises the exception.
Same applies to move folders between storages.