From 38d9378e482d45ea7be0e217597828a38025fd0c Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Sun, 31 Mar 2019 17:30:58 -0700 Subject: [PATCH] Fix issue where tar-fs would complain about missing files This is being tracked in upstream issue - https://github.com/mafintosh/tar-fs/issues/81 We use a custom fork of tar-fs for now Fixes #628 --- CHANGES | 1 + package-lock.json | 5 ++--- package.json | 2 +- src/backups.js | 4 ++++ 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 1a0bb4adc..762b690cd 100644 --- a/CHANGES +++ b/CHANGES @@ -1578,4 +1578,5 @@ * Various fixes for notifications * Add FTP support for apps * Add app version as part of info dialog +* (backup) Do not abort archive if file(s) disappear diff --git a/package-lock.json b/package-lock.json index 4c07d9df8..5ad9cc298 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5940,9 +5940,8 @@ } }, "tar-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", - "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", + "version": "github:cloudron-io/tar-fs#c941c1e364f5345686f92656238a1f8ce67232f3", + "from": "github:cloudron-io/tar-fs#ignore_file_removed", "requires": { "chownr": "^1.1.1", "mkdirp": "^0.5.1", diff --git a/package.json b/package.json index 998b1d429..734aaa978 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "split": "^1.0.1", "superagent": "^4.1.0", "supererror": "^0.7.2", - "tar-fs": "^2.0.0", + "tar-fs": "github:cloudron-io/tar-fs#ignore_file_removed", "tar-stream": "^2.0.1", "tldjs": "^2.3.1", "underscore": "^1.9.1", diff --git a/src/backups.js b/src/backups.js index 1a1e69635..3d3bb266e 100644 --- a/src/backups.js +++ b/src/backups.js @@ -286,6 +286,10 @@ function tarPack(dataLayout, key, callback) { var pack = tar.pack('/', { dereference: false, // pack the symlink and not what it points to entries: dataLayout.localPaths(), + ignoreFileRemoved: (path, err) => { + debug(`tarPack: ${path} got removed (${err.code}). ignoring`); + return true; + }, map: function(header) { header.name = dataLayout.toRemotePath(header.name); return header;