Estou procurando uma maneira de gerenciar várias configurações do sistema. Por exemplo, se eu começar a trabalhar em um projeto, talvez precise instalar algum software e suas dependências. Gostaria que ao terminar de trabalhar neste projeto pudesse reverter o sistema ao seu estado anterior.
Minha situação ideal seria ter o git, mas para todo o sistema, podendo assim criar ramificações, experimentar e reverter para qualquer ponto no tempo.
Existe uma maneira de conseguir isso? Eu pensei em usar instantâneos LVM, isso é uma boa ideia?
TL;DR Use instantâneos de caixa virtual .
Instantâneos de máquinas virtuais são mais comumente 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 mais de 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 testar é relativamente manso, a opção comum é apenas manter um registro das 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.brtfs é uma opção interessante porque pode fornecer um instantâneo diff para um servidor de backup de forma eficiente, a desvantagem é que é um pouco mais complicado e muito menos estável.
Existem muitas outras opções ( git/lvm/rsync/rdiffbackup/zfs/ containers /etc ), mas existem desvantagens (como tempo/espaço extra ou menos robusto). No final do dia, o tempo do desenvolvedor de qualidade é a mercadoria mais procurada, portanto, quanto menos tempo você gastar no planejamento e na configuração do ambiente, mais tempo terá para ser produtivo. Portanto, comece com uma das 2 opções simples e somente se você achar que está perdendo tempo, explore uma solução mais complexa.