Are you using the ORM package to manage your models?
If so, you will just use the $model->save() call when you are creating or updating a record, and can also leverage the ->clone() functionality to create a clone() with a different name.
If you are not using the ORM package you will need to implement the copy/clone functionality yourself to get the data mapped over to a new record with a a new name and new ID.