diff --git a/src/backups.js b/src/backups.js index ff94b532d..b4e091041 100644 --- a/src/backups.js +++ b/src/backups.js @@ -223,7 +223,7 @@ function sync(backupConfig, backupId, dataDir, callback) { var stream = fs.createReadStream(path.join(dataDir, task.path)); stream.on('error', function () { return iteratorCallback(); }); // ignore error if file disappears api(backupConfig.provider).upload(backupConfig, getBackupFilePath(backupConfig, backupId, task.path), stream, iteratorCallback); - } else if (task.operation === 'remove') { + } else if (task.operation === 'remove' || task.operation === 'removedir') { safe.fs.writeFileSync(paths.BACKUP_RESULT_FILE, 'Removing ' + task.path); api(backupConfig.provider).remove(backupConfig, getBackupFilePath(backupConfig, backupId, task.path), iteratorCallback); } diff --git a/src/syncer.js b/src/syncer.js index c5678424b..57a48fd8d 100644 --- a/src/syncer.js +++ b/src/syncer.js @@ -40,6 +40,10 @@ function sync(dir, taskProcessor, concurrency, callback) { var cacheFile = path.join(paths.BACKUP_INFO_DIR, path.basename(dir) + '.sync.cache'), newCacheFile = path.join(paths.BACKUP_INFO_DIR, path.basename(dir) + '.sync.cache.new'); + if (!safe.fs.existsSync(cacheFile)) { // if cache is missing, start out empty + delQueue.push({ operation: 'removedir', path: '' }); + } + var cache = readCache(cacheFile); var newCacheFd = safe.fs.openSync(newCacheFile, 'w'); // truncates any existing file