What are best practices to automatically (regular intervals) synchronize the full JCR state (content, components, ...) from (running) production system to developer/testing machines for testing and debugging?
Assume compiled Java stuff is matching on both systems. AEM Version 6.1 and above.
it should only be content you are synching back. You deployment process should take care of making sure the code/components is the same across environments.
There are various tools for synching content from prod back to lower environments . If you are bringing content back to Dev, then I'd say it makes sense to only bring back certain content, no need for everything, so just slices of the content, for which you could use packages