There’s still quite a few software written in C that does exactly as I did though.
Oh, absolutely.
’m not sure about what you mean by “OOP but worse”, wouldn’t everything be worse than OOP since C isn’t an OOP language?
I meant specifically this pattern you showed; it's object-oriented programming but in a language that does nothing to support it.
Rust isn't an OO language either but it adds some sensible abstractions to make OOP-like programming possible in an immediately recognisable and standardised manner.
I can’t seem to be able to see what’s inherently wrong with it
My primary problem is that it's convention rather than rule.
I would appreciate if you shared any better ideas you might have, though!
Just don't use C if you can avoid it ;)
Note that all of this is in the context of backups; duplicates for the purpose of restoring the originals in case something happens to them. Though it is at least possible to use an index cold storage system like what I describe for more frequent access, I would find that very inconvenient for "hot" data.
You take a look at your index where the data you need is located, connect to that singular location (i.e. plug in a drive) and then copy it into the place it went missing from.
The difference is that, with an Index, you gain granularity. If you only need file A, you don't need to connect all 12 backup drives, just the one that has file A on it.