TL; DR Use os instantâneos virtualbox .
Os instantâneos da máquina virtual são mais usados para esse tipo de requisito. Os principais motivos são a simplicidade, e o pior cenário é zerar todos os dados que a raiz pode gravar. Se você tiver uma caixa de desenvolvimento moderna com 12 + GB de RAM e 8 TB de espaço em disco, poderá executar de 5 a 10 ambientes de teste ao mesmo tempo e armazenar 800 instantâneos, o que é suficiente.
Por outro lado, se o teste for relativamente manso, a opção comum é apenas manter um log de ações ( apt install x y z && mkdir project0
) e desfazê-las ( apt purge x y z && rm -r project0
) ou simplesmente deixá-las se não estiverem interferindo em outros projetos.
O brtfs é uma opção interessante porque pode fornecer um diff de snapshot para um servidor de backup de forma eficiente, a desvantagem é que ele é um pouco mais complicado e muito menos estável.
Existem muitas outras opções (git / lvm / rsync / rdiffbackup / zfs / containers / etc), mas há desvantagens (como tempo extra / espaço ou menos robusto). No final das contas, o tempo do desenvolvedor de qualidade é a mercadoria mais procurada, portanto, quanto menos tempo você dedica ao planejamento e à configuração do ambiente, mais tempo terá de ser produtivo. Então comece com uma das duas opções simples e somente se você achar que o tempo é gasto, explore uma solução mais complexa.