diff --git a/lib/helper.php b/lib/helper.php
index ca508e1d9334dd5ad85a308babbd5977ab5b9253..056c9a37fe53e34ad859e10b4494cf290df07d19 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -621,9 +621,26 @@ class OC_Helper {
 	 * remove all files in PHP /oc-noclean temp dir
 	 */
 	public static function cleanTmpNoClean() {
-		$tmpDirNoCleanFile=get_temp_dir().'/oc-noclean/';
-		if(file_exists($tmpDirNoCleanFile)) {
-			self::rmdirr($tmpDirNoCleanFile);
+		$tmpDirNoCleanName=get_temp_dir().'/oc-noclean/';
+		if(file_exists($tmpDirNoCleanName) && is_dir($tmpDirNoCleanName)) {
+			$files=scandir($tmpDirNoCleanName);
+			foreach($files as $file) {
+				$fileName = $tmpDirNoCleanName . $file;
+				if (!\OC\Files\Filesystem::isIgnoredDir($file) && filemtime($fileName) + 600 < time()) {
+					unlink($fileName);
+				}
+			}
+			// if oc-noclean is empty delete it
+			$isTmpDirNoCleanEmpty = true;
+			$tmpDirNoClean = opendir($tmpDirNoCleanName);
+			while (false !== ($file = readdir($tmpDirNoClean))) {
+				if (!\OC\Files\Filesystem::isIgnoredDir($file)) {
+					$isTmpDirNoCleanEmpty = false;
+				}
+			}
+			if ($isTmpDirNoCleanEmpty) {
+				rmdir($tmpDirNoCleanName);
+			}
 		}
 	}