Enable use of junctions or symlinks to split chunks across multiple drives

I need to split duplicacy’s storage across multiple ntfs partitions/drives. Using ntfs junctions I can for instance “move” chunks/00 to another partition. This almost works… but duplicacy reports some errors because .IsDir() returns false in duplicacy_filestorage.go for junctions (couple of occurrences). It would be great to tweak this isDir check to permit using junctions in this way. I suppose this could also helps with other OSes and file systems.

I believe this is a bar feature for :d:.

I think this is a rare use case but since the change is so simple I did it anyway: Allow chunks subdirectories in the disk storage to be symlinks. · gilbertchen/duplicacy@7e372ed · GitHub

It should be included in the next CLI release.


But a similar change is needed in ListFiles line 82 to avoid errors in duplicacy check. Otherwise the chunk folders are reported as 0-size chunks (and then chunks must be individually accessed).

I am interested in this change because while solutions for pooling multiple hard drives into one big storage pool exist for windows (and I tried many…) they all increase complexity and add new failure scenarios (dynamic disks are deprecated, storage spaces are proprietary, stablebit drivepool is an overkill for this scenario, etc.).