A report is arbitrary python code and can do what you like, but normally only generates log messages (info / warning / fail) to highlight inconsistencies in your database. Potentially it *could* write to one or more files as a side effect, but that's not how it's intended to be used. You can
run reports from a CLI script or the API.
An export template only iterates over one type of object at the top level (e.g. devices), but it can access information on related objects. One export template for devices (giving location/rack/position) and one export template for cables (giving the terminations) sounds like what you want. As for rendering export templates automatically, see
#3665 - it looks like this will be available in upcoming Netbox 2.12.
Start with the device export, as that's really simple; there are examples in the
documentation. For getting cable termination endpoints, I saw examples of this in in recent postings - search the group archive and also
github discussions. "termination" should be a good keyword to search on.
Another option is to dump the entire postgres database periodically as described in "
Replicating Netbox", and then restore it to some other instance e.g. in the cloud.