diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php
index 1cf3e683543293f318e70e8a2648909062dee547..a06a5145d999be72f12c4ab348b120fcd7976296 100644
--- a/apps/files_trashbin/lib/Trashbin.php
+++ b/apps/files_trashbin/lib/Trashbin.php
@@ -189,7 +189,12 @@ class Trashbin {
 
 		$target = $user . '/files_trashbin/files/' . $targetFilename . '.d' . $timestamp;
 		$source = $owner . '/files_trashbin/files/' . $sourceFilename . '.d' . $timestamp;
-		self::copy_recursive($source, $target, $view);
+		$free = $view->free_space($target);
+		$isUnknownOrUnlimitedFreeSpace = $free < 0;
+		$isEnoughFreeSpaceLeft = $view->filesize($source) < $free;
+		if ($isUnknownOrUnlimitedFreeSpace || $isEnoughFreeSpaceLeft) {
+			self::copy_recursive($source, $target, $view);
+		}
 
 
 		if ($view->file_exists($target)) {