Maybe my insight for around 6TiB of Data with a lot of small files (6.9 million files) onto spinning Rust can help (many of it deduplicated due to using MergerFS backing but both the individual drives and the share as a whole) .
Edit: Forgot to mention using restic 0.16.0
I have set compression to auto (=default) and pack-size to 64 (MiB) and I’m using the rest-server with --append-only as a really light-weight target on an old Synology NAS placed off-site (dual core atom, 1GB RAM).
I’ve been previously trying to use Minio S3 with IAM rules seperated for admin (basically for prune) and backup task (just write, no delete with Object Locking and Versioning enabled). If the Atom Chip wouldn’t be i686 meaning that I had to compile Minio myself (which led to crashing) I would likely still go that route because it’s a lot more sophiscated.
I’m running a restic backup
job per HDD in paralell - thats something that you can’t do with a solution like borg. That’s something you can only do if you really use a solution like MergerFS or Unraid … so not likely something you are looking at. However you could seperate the jobs especially if you operate on a folder level - even on something like FreeNas/TrueNas - that would give you the advantage of faster snapshots = milestones because the initial backup in the TiB range as a single job would be massively painfull …
Restics strong points isn’t in regards to stopping in the middle of a backup-job - so I would really move towards that for the amount of data you’re looking at.
rest-server is really performant and simple - and does the job without crashing so far.
I really recommend it too … especially if your target device isn’t that performant.
Some observations:
- You need to experiment with the correct pack size and compression level for anything in the TiB range - otherwise you’ll regret it later on
- Step 1 needs to be carefully done before you start the finall backup
- I would do all of that locally, in case you’re planning to do that off-site, only move to off-site once you’re satisfied - that also enables you do do just incremental backups
# restic stats
repository 27aa4cc4 opened (version 2, compression level auto)
scanning...
Stats in restore-size mode:
Snapshots processed: 4
Total File Count: 6938069
Total Size: 5.995 TiB
# restic stats --mode debug
repository 27aa4cc4 opened (version 2, compression level auto)
Collecting size statistics
File Type: key
Count: 1
Total Size: 445 B
Size Count
---------------------
100 - 999 Byte 1
---------------------
File Type: lock
Count: 2
Total Size: 308 B
Size Count
---------------------
100 - 999 Byte 2
---------------------
File Type: index
Count: 238
Total Size: 197.403 MiB
Size Count
-----------------------------
1000 - 9999 Byte 1
10000 - 99999 Byte 2
100000 - 999999 Byte 197
1000000 - 9999999 Byte 38
-----------------------------
File Type: data
Count: 43529
Total Size: 2.697 TiB
Size Count
-------------------------------
100000 - 999999 Byte 1
1000000 - 9999999 Byte 1
10000000 - 99999999 Byte 43527
-------------------------------
Blob Type: data
Count: 3640242
Total Size: 2.696 TiB
Size Count
-------------------------------
10 - 99 Byte 13852
100 - 999 Byte 470915
1000 - 9999 Byte 517770
10000 - 99999 Byte 412740
100000 - 999999 Byte 1044805
1000000 - 9999999 Byte 1180160
-------------------------------
Blob Type: tree
Count: 526361
Total Size: 511.236 MiB
Size Count
--------------------------------
10 - 99 Byte 3
100 - 999 Byte 479193
1000 - 9999 Byte 43985
10000 - 99999 Byte 2809
100000 - 999999 Byte 345
1000000 - 9999999 Byte 24
10000000 - 16777216 Byte 2
--------------------------------
So far I do see no slowdowns and my machines are a LOT less powerfull then what you’re operating on - on both ends … then again I just have a fraction of that here - and I’m not using SSD-Cache of any sort or zRaid/Raid of some sort to speed up my spinning Rust here!