Hey folks,
Have a bit of time on my hands (all COVID induced…) and trying out / comparing the different backup solutions. My initial findings below. I hope to make this a living resource so happy to do more testing based on feedback and include here. Do let me know any testing desired and I’ll see what I can do.
Background
Backup source is ~107k files totalling 460Gb of storage. Inside is:
- photo/video collection (about 95% of the storage) - long tail here with most files being small (3-4Mb jpg) but with some largish videos making up the majority of the space
- some other documents / other records
I currently use Duplicati / Arq5 as “production” backup (production in so far as I still experiment with them…!)
Setup Notes
Computer is desktop PC connected via wifi to gigabit pipe to the world. Wifi bandwidth to router is generally 30-50MB/s in favourable (large file bulk transfer) conditions.
Versions
Borg - no windows binary available; currently running through a docker container. (TO DO: update when WSL2 is out and stable)
Borg/Restic - very important disabled windows antivirus “real-team protection” for the backup folder/process. These linux port-ins do not set themselves up properly and without this the backup times can be 30 times worse. File modification is based on size; modification date and not inode. This is a change from default.
Duplicati - the backups have the option “backup-test-samples” set to zero. This means that after checking for updates, duplicati will not download one block and test for consistency. While this is not the default, as mentioned above Duplicati is my production backup and I have found this step adds an unneccesary slow down and have had it disabled for years
Results
The table is getting a bit wide due to request on different backends and if having diffculty reading, can download excel version here
https://f000.backblazeb2.com/file/backblaze-b2-public/Backup_Tool_Comparison.xlsx
Feature Comparison
Item | Arq 5 | Duplicati | Duplicacy | Restic | Borg |
---|---|---|---|---|---|
Version | 5.16 | v2.0.5.106 | 1.30 | 0.9.6 | 1.1.5 |
Storage Backend Choices | Ok | Great | Ok | Great (via rclone) | Poor |
GUI | Yes | Yes | Yes | No | No |
Block Sizes | Vary - Small | 50 Mb | Vary - Small | Vary - Small | 500 Mb |
Dedup | Yes | Yes | Yes | Yes | Yes |
Dedup Rolling ** | Yes | No | Yes | Yes | Yes |
UI - Backup Progress | Yes | Yes | Yes | Yes | Sort of |
UI - Restore Progress | Yes | No | Yes | No | No |
Logging / Statistics | Good | Good | Good | No | Manual |
Price | $50 | Free | $20 new + $10/yr | Free | Free |
Synthetic Benchmark
Item | Arq 5 | Duplicati | Duplicacy | Restic | Borg |
---|---|---|---|---|---|
Target | HDD | HDD | HDD | HDD | HDD |
Initial Backup | 15h | 9h24m | 14h20m | 18h30m | 12h |
Backup Size | 438Gb | 435Gb | 437Gb | 447Gb | 437Gb |
Update (+0) | 40s | 1m | 4s | 1m04s | 1m31s |
Update (+200mb) | 40s | 1m12s | 16s | 12s | 3m5s |
Update (+2.1Gb) | 2m30s | 3m25s | 2m13s | 3m47s | 4m42s |
Restore (1 file; 3.7Gb) | 3m30s | 1m20s | 1m51s | 4m10s | 2m30s |
Restore (800 files; 2.7Gb) | 2m30s | 1m45s | 1m16s | 3m41s | 1m40s |
Dedup Stress Efficiency (100 * 1Mb) | -6% | -10% | 95% | -5% | 0% |
Dedup Stress Efficiency (16 * 8Mb) | 48% | -2% | 96% | 63% | 45% |
Dedup Stress Efficiency (4 * 128Mb) | 98% | 24% | 99% | 99% | 98% |
Prune | 2h50m | 78s | 7s | 7m25s* | 40s |
Real World Benchmark - Onedrive
Item | Arq | Duplicati | Duplicacy | Restic |
---|---|---|---|---|
Target | Onedrive | Onedrive | Onedrive | Onedrive |
Initial Backup | N/A | N/A | 72h+* | 36h |
Backup Size | 438Gb | 438Gb | 440Gb | 450 Gb |
Update (+0) | 40s | 3m30s | 33s | 1m34s |
Update (+200mb) | 4m30s | 5m20s | 2m32s | 1m52s |
Update (+2.1Gb) | 30m30s | 6m35s | 23m6s | 6m12s |
Restore (1 file; 3.7Gb) | 48m | 3m28s | 20m28s | 57m |
Restore (800 files; 2.7Gb) | 7m30s | 4m35s | 15m23s | 22m |
Real World Benchmark - Pcloud Virtual
Item | Arq | Duplicati | Borg |
---|---|---|---|
Target | Pcloud Virtual | Pcloud Virtual | Pcloud Virtual |
Initial Backup | N/A | N/A | 4h54m |
Backup Size | 438Gb | 438Gb | 436Gb |
Update (+0) | 40s | 3m40s | 3m42s |
Update (+200mb) | 1m10s | 4m23s | 2m16s |
Update (+2.1Gb) | 6m20s | 7m47s | 3m54s |
Restore (1 file; 3.7Gb) | 1h10m | 1m30s | 17m |
Restore (800 files; 2.7Gb) | 20m | 14m | 13m43s |