Catch exceptions when moving files

When moving files on storages that don't expose permissions, the storage
itself might throw an exception when the permission is denied.

This fix ensures that exceptions are caught and forwarded to the client
instead of just hanging.

Backport of e43c9b84c42a8b3f4fb25a950123fbcc060d1a5a from master