Parece que você está tentando reinventar a roda controle de versão .
- “define arquivos (como um arquivo de manifesto) para empacotar” - verifique os arquivos.
- “empacotando os arquivos definidos em um único archive” - o conteúdo dos arquivos é armazenado no repositório.
- "descompacte os arquivos e substitua os arquivos originais, se necessário" - fazendo check-out de uma versão antiga.
- “backup de todos os arquivos que foram sobrescritos” - verificando a versão atual (faça isso antes de sobrescrever, obviamente).
- “restaure os arquivos sobrescritos, se necessário” - verificando essa outra versão.