diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php
index 9d180820e9d28f7fd1f501110f145b7a39694663..78cab6ed2da8a46865b36a3adc080d91440574ca 100644
--- a/lib/files/cache/scanner.php
+++ b/lib/files/cache/scanner.php
@@ -97,13 +97,19 @@ class Scanner extends BasicEmitter {
 				}
 				$newData = $data;
 				if ($reuseExisting and $cacheData = $this->cache->get($file)) {
+					// prevent empty etag
+					$etag = $cacheData['etag'];
+					if (empty($etag)) {
+						$etag = $data['etag'];
+					}
+
 					// only reuse data if the file hasn't explicitly changed
 					if (isset($data['mtime']) && isset($cacheData['mtime']) && $data['mtime'] === $cacheData['mtime']) {
 						if (($reuseExisting & self::REUSE_SIZE) && ($data['size'] === -1)) {
 							$data['size'] = $cacheData['size'];
 						}
 						if ($reuseExisting & self::REUSE_ETAG) {
-							$data['etag'] = $cacheData['etag'];
+							$data['etag'] = $etag;
 						}
 					}
 					// Only update metadata that has changed
diff --git a/tests/lib/files/cache/scanner.php b/tests/lib/files/cache/scanner.php
index f6deb93a49e1a37215878327bd7cd056b1078af4..fa1b3406040a107a469c27f91f42e4f37377d36a 100644
--- a/tests/lib/files/cache/scanner.php
+++ b/tests/lib/files/cache/scanner.php
@@ -184,6 +184,23 @@ class Scanner extends \PHPUnit_Framework_TestCase {
 		$this->assertFalse($this->cache->inCache('folder/bar.txt'));
 	}
 
+	public function testETagRecreation() {
+		$this->fillTestFolders();
+
+		$this->scanner->scan('');
+
+		// manipulate etag to simulate an empty etag
+		$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_ETAG);
+		$data['etag'] = '';
+		$this->cache->put('', $data);
+
+		// rescan
+		$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_ETAG);
+		$newData = $this->cache->get('');
+		$this->assertNotEmpty($newData['etag']);
+
+	}
+
 	function setUp() {
 		$this->storage = new \OC\Files\Storage\Temporary(array());
 		$this->scanner = new \OC\Files\Cache\Scanner($this->storage);