I think this is a further reaching issue than is being suggested and at least in my experience, happens when it clearly shouldnāt. I also donāt think such elaborate means should be needed to fix this (though I say this with a bit of arrogance). I suspect many people suffer from this issue and donāt even know it because they donāt back up obscene amounts of data (like I do) and they arenāt sitting there monitoring their backups. If a backup takes an hour instead of five minutes because something triggered a -hash
, most people simply wouldnāt notice or care.
To get back to my original issue, I actually had this bite me again just yesterday. I brought my storage arrays online (for the sake of this discussion, just consider it plugging in an external USB drive). I then manually ran a backup in the WebUI. It failed, with the log saying it didnāt have access to the volume. Worst part of all (and the central reason for my issues, I believe): it went on with the backup(!) reporting 0 files at the source, 0 file chunks uploaded, and 3 metadata chunks, which Iām now thinking were probably flagging the backup as now empty and triggering a complete re-scan upon future backups).
Running backup command from C:\Users\Administrator/.duplicacy-web/repositories/localhost/3 to back up Y:/ServerFolders/eYe Archive
Options: [-log backup -storage EYE_STORAGE_01 -threads 30 -stats]
2020-03-14 23:20:30.892 INFO REPOSITORY_SET Repository set to Y:/ServerFolders/eYe Archive
2020-03-14 23:20:30.892 INFO STORAGE_SET Storage set to gcd://(e)/DUPLICACY_EYE_01
2020-03-14 23:20:43.421 INFO BACKUP_START Last backup at revision 34 found
2020-03-14 23:20:43.421 INFO BACKUP_INDEXING Indexing Y:\ServerFolders\eYe Archive
2020-03-14 23:20:43.421 INFO SNAPSHOT_FILTER Parsing filter file \\?\C:\Users\Administrator\.duplicacy-web\repositories\localhost\3\.duplicacy\filters
2020-03-14 23:20:43.422 INFO SNAPSHOT_FILTER Loaded 28 include/exclude pattern(s)
2020-03-14 23:20:43.422 WARN LIST_FAILURE Failed to list subdirectory: open \\?\Y:\ServerFolders\eYe Archive: Access is denied.
2020-03-14 23:20:51.666 WARN SKIP_DIRECTORY Subdirectory cannot be listed
2020-03-14 23:20:51.776 INFO BACKUP_END Backup for Y:\ServerFolders\eYe Archive at revision 35 completed
2020-03-14 23:20:51.776 INFO BACKUP_STATS Files: 0 total, 0 bytes; 0 new, 0 bytes
2020-03-14 23:20:51.776 INFO BACKUP_STATS File chunks: 0 total, 0 bytes; 0 new, 0 bytes, 0 bytes uploaded
2020-03-14 23:20:51.776 INFO BACKUP_STATS Metadata chunks: 3 total, 8 bytes; 3 new, 8 bytes, 882 bytes uploaded
2020-03-14 23:20:51.776 INFO BACKUP_STATS All chunks: 3 total, 8 bytes; 3 new, 8 bytes, 882 bytes uploaded
2020-03-14 23:20:51.776 INFO BACKUP_STATS Total running time: 00:00:18
2020-03-14 23:20:51.776 WARN BACKUP_SKIPPED 1 directory was not included due to access errors
I double-checked permissions and whatnot, ran it again and got the same error. I restarted and the backup started right away, showing that it needed to upload all 9TB of data to my Google Drive account. I am watching it as we speak as reads everyā¦singleā¦file in my local repository, with the WebUI reporting a transfer rate of 50MB/s = about 48 hours of thrashing my disks. Of course, no actual data is being uploaded, because every single bit of data is already in my Google Drive storage. So even though is currently reporting it has uploaded over 2TB, my network traffic indicates around 600MB has come and gone through the duplicacy service from checking (not uploading) every damn chunk.
As a semi-āpower userā I understand enough to get me in trouble, but also have ānormal humanā expectations for how an application like this should function, and I believe I represent the majority of users in that sence. From my standpoint this is what Iām seeing:
First, shouldnāt freak out if it doesnāt complete a backup, no matter the reason for the interruption. I thought the lock-free system would be perfect for this - it should know what chunks were successfully uploaded, which werenāt, and which are incomplete and need to be tossed and re-uploaded.
Second, if it does fail, it should not require a complete re-scan of every single bit of data in the repository vs the destination storage.
Third, if it fails specifically because it canāt read data on the repository when it begins the backup, no matter the reason, it should gracefully fail. In fact, I would argue that it should not have even started in the first place since that should have already been part of the process for preparing the backup operation: check the source. check the destination.
Whether it be from the volume not being mounted, or not existing, or being write protected, or reporting 0B of dataā¦ these are all red flags that should stop a backup from happening and be reported to the user, just as bad āoptionsā already are (they just report āinvalid optionsā and stop). The do not āfailā - they stop the operation before starting.
I hope this gets addressed sooner than later, or at least gives users a way to bypass the issue.
Sidenote - during this current fiasco, I was thinking that if I do catch it performing a bad backup like this, if I delete that revision and try again, maybe it will perform more gracefully. It doesnāt fix a single problem, but it may help me get out of a jam and work around the issue while it is hopefully being properly addressed.