Not sure I’m entirely following since you haven’t even once mentioned that you are actually using restic, while at the same time you do mention rsync. Which of the three repositories you mentioned have you backed up to using restic?
Generally speaking, you can indeed simply copy the files and folders that make up a restic repository, to another place, and keep using that copy of the repository. It will have the same master encryption key and the same password key of course, but you can replace the current/old key with a new one it you want. So yes, you can copy a repository and thereby have two repositories.
You might find that the two repositories have the same ID though, and I’m not sure how that will work with the cache restic uses locally, someone else will have to answer that. I’m pretty sure it won’t be an actual problem though.
Restic will regard both copies to be the same repository which partially “breaks” the cache. As long no two restic runs access both copies in parallel, the cache should work without throwing errors (which wouldn’t break your repository though).
However, the cache no longer works properly: when loading a repository, restic removes files which no longer exist in the repository from the cache. With two diverging repositories this will have the effect that over time fewer and fewer data is actually cached, as every file which is not contained in both repositories will be dropped when switching between both copies.
Unless there is a way to change the repository ID, it doesn’t feel safe to use 2 repositories that have the same ID. It might work now but the real problem might appear later. I would try to change the ID but the config file is encrypted. I was able to change the ID of a borg repo that suffered the same fate on that machine.
There’s no easy way to change the ID of a repository in restic right now. I’ve hacked together a small command to change the ID: https://github.com/MichaelEischer/restic/tree/change-repo-id . To use it you’ll have to checkout that branch, then compile it using go build -tags debug ./cmd/restic and then use the ./restic debug changeID i-understand-that-this-could-break-my-repository-and-i-have-created-a-backup-of-the-config-file command to change the repository id to a random new one. Make sure to run this command on the correct copy of the repository and create a backup of the config file in the repository first.
The only remaining small downside is that both repository copies would still shared the same encryption key. This could be solved by using the copy PR (https://github.com/restic/restic/pull/2606) to copy the snapshots from the old repository to the new one.
I’ve tweaked the command a bit to make it less likely to accidentally modify a repository. The call now also expected to get the repository id ./restic debug changeID i-understand-that-this-could-break-my-repository-and-i-have-created-a-backup-of-the-config-file repoID. You’ll have to run it one time with a placeholder instead of the real repository id, and then take the real id from the error message: Fatal: expected repository id repoID, found 3dd0878cc15a49638e8a8cd4a36d004a2dd1342ea64bd01bc0b8a414b2d2711e, aborting.
For that example the complete restic call would be ./restic debug changeID i-understand-that-this-could-break-my-repository-and-i-have-created-a-backup-of-the-config-file 3dd0878cc15a49638e8a8cd4a36d004a2dd1342ea64bd01bc0b8a414b2d2711e.