diff --git a/apps/files_versions/lib/storage.php b/apps/files_versions/lib/storage.php
index bdf1811c5f9d6d5a8244d3f441daa5ba56f89f9d..cd2077d2922efda4a360898f9b06a707545d43fa 100644
--- a/apps/files_versions/lib/storage.php
+++ b/apps/files_versions/lib/storage.php
@@ -42,6 +42,7 @@ namespace OCA\Files_Versions;
 
 use OCA\Files_Versions\AppInfo\Application;
 use OCA\Files_Versions\Command\Expire;
+use OCP\Lock\ILockingProvider;
 
 class Storage {
 
@@ -337,11 +338,19 @@ class Storage {
 	 * @return bool true for success, false otherwise
 	 */
 	private static function copyFileContents($view, $path1, $path2) {
+		/** @var \OC\Files\Storage\Storage $storage1 */
 		list($storage1, $internalPath1) = $view->resolvePath($path1);
+		/** @var \OC\Files\Storage\Storage $storage2 */
 		list($storage2, $internalPath2) = $view->resolvePath($path2);
 
+		$view->lockFile($path1, ILockingProvider::LOCK_EXCLUSIVE);
+		$view->lockFile($path2, ILockingProvider::LOCK_EXCLUSIVE);
+
 		$result = $storage2->moveFromStorage($storage1, $internalPath1, $internalPath2);
 
+		$view->unlockFile($path1, ILockingProvider::LOCK_EXCLUSIVE);
+		$view->unlockFile($path2, ILockingProvider::LOCK_EXCLUSIVE);
+
 		return ($result !== false);
 	}