Explain what you mean by ''archive'' exactly.
You can use the Site Admin interface to create a copy of the project under a new name. When you copy it, you get to select what you want in the copy; Tests, Test Sets, Test Runs, Defects, etc.
Making a copy doesn't change the source project in any way.
Data in an ALM project can be stored in multiple locations. If you have automated test or attachments, those items are stored in the repository. Other data is stored in the project database. To get a complete archive you need to get the data from both. Using the Site Admin Project Copy feature ensures you get that.
Another question is does the data you want to archive include links to other entities, like defects linked to tests, and do you want the links or the linked data also archived?
If you want a process that will extract the data from you source project, well that function doesn't exist in the product out of the box. You could build something to do that using the API, maybe.
So, the solution really depends on what your definition of ''archive'' is.