Existe um "ponto de restauração" no Linux (Debian / Ubuntu) como o Windows?

17

Estou trabalhando diretamente em uma máquina virtual Ubuntu (VM). Algumas atualizações (como o kernel) estavam disponíveis no gerenciador de atualizações.

Se eu não estivesse usando uma VM, não a atualizaria, pois é um risco quebrar alguma coisa. Como é uma VM, você pode criar um instantâneo ou exportar um dispositivo e restaurar se algo der errado.

Suponha que eu não esteja usando uma VM com uma instalação Debian / Ubuntu. Existe uma abordagem de instalação-restauração que não depende de uma configuração de VM para restaurar seu sistema exatamente antes de uma atualização (como um "Ponto de restauração" no Windows), sendo fácil de restaurar como um dispositivo de VM?

(Não estou procurando "imagens fantasmas" ou algo parecido (Norton Ghost, Clonezilla, etc.), estou procurando algo embutido no sistema Linux)

Alguém ainda usa você no MS-DOS
fonte
3
Sei que isso é fora de tópico, por isso estou adicionando como comentário, mas o OpenSolaris pode fazer uma captura instantânea de todo o sistema de arquivos ZFS e restaurá-lo mais tarde. Também não ocupa muito espaço em disco, devido à desduplicação. De fato, a maneira padrão de fazer grandes atualizações é criar um novo instantâneo do FS e instalar os upgrades nele. Se ti funcionar, você pode excluir o antigo. Caso contrário, você pode simplesmente voltar para o que estava funcionando.
AndrejaKo
3
@AndrejaKo: +1 No entanto, é um "clone" (um instantâneo gravável; os instantâneos normais são somente leitura) e o fato de não precisar de muito espaço não tem nada a ver com desduplicação, mas com a maneira como os instantâneos e clones são tratados em sistemas de arquivos COW. Ou seja, você também obtém a mesma economia de espaço em disco em conjuntos sem dedução.
knweiss
@ knweiss Sim, está certo. Eu apenas procurei!
AndrejaKo

Respostas:

15

Não há nenhum recurso semelhante incorporado a qualquer distribuição Linux que eu conheça. Existem várias razões pelas quais seria muito menos útil do que para o Windows.

  • Principalmente, as distribuições Linux são muito mais sérias que a Microsoft sobre atualizações estáveis ​​sendo atualizadas apenas para corrigir bugs importantes e com alterações mínimas. Por exemplo, com o Ubuntu e o Debian, você pode optar por receber apenas atualizações de segurança ( -security) ou apenas atualizações de segurança e importantes correções de bugs ( -updates).

  • As atualizações do kernel são as mais arriscadas, devido à chance de uma mudança aparentemente benéfica causar problemas em uma configuração de hardware específica. É por isso que a maioria das distribuições permite que mais de uma versão do kernel seja instalada ao mesmo tempo; por exemplo, no momento em que escrevo isso, o Ubuntu 10.04 tem três versões de kernel disponíveis: a 2.6.32.21.22partir da versão original, 2.6.32.22.23com atualizações de segurança e também 2.6.32.23.24com atualizações que não são de segurança. Se a versão ... 24 causar um problema no seu computador, você poderá reiniciar em ... 23 (e até marcar a ... 24 como proibida de instalar, pelo menos se estiver usando o aptitude).

  • Não há registro: todos os dados de configuração estão em arquivos (na /etchierarquia), que podem ser facilmente restaurados individualmente se algo der errado. Mesmo assim, as atualizações para a versão estável raramente afetam os arquivos abaixo /etc.

  • Se você estiver instalando pacotes de alguma fonte que não seja uma versão estável, convém manter cópias de versões mais antigas dos pacotes e fazer backups dos arquivos de configuração. Aqui estão algumas dicas sobre isso no Debian e no Ubuntu.

    • Os pacotes baixados são mantidos /var/cache/apt/archives. Se você tiver espaço em disco, não exclua os arquivos antigos do pacote até confirmar que a versão mais recente funciona para você.
    • Muitas fontes mantêm versões mais antigas, para que você possa fazer o downgrade facilmente (baixando e instalando uma versão mais antiga manualmente ou usando as preferências do apt). Para o Debian, veja snapshot.debian.org .
    • Há uma maneira muito fácil de configurar o controle de versão sobre /etc: instalar o etckeeperpacote e ativá-lo com o comando etckeeper init. (Faço isso, mas não porque estou preocupado com atualizações que quebram algo, mas porque estou preocupado com minhas alterações quebrando algo.)
Gilles 'SO- parar de ser mau'
fonte
Sim, simplesmente não há comparação entre a estabilidade do Windows e o Debian / stable. Mesmo que algo quebre (quase sempre devido a um erro evidente do usuário), há muitas ferramentas para depurar e corrigir o problema.
Liori
2
"As atualizações do kernel são as mais arriscadas" - É por isso que mantenho uma cópia do Knoppix ao lado do meu computador. 5 e não 6.
amphetamachine
Você também pode achar útil [rsnapshot] (rsnapshot.org), um utilitário de captura de tela do sistema de arquivos baseado em rsync .
Pablo A
5

Não é necessário, pois o gerenciador de pacotes cuida de qual arquivo é de qual pacote e também pode reverter a atualização ou instalação do pacote.

mbq
fonte
2
mas se o pacote quebrou alguma coisa durante a reinicialização, fazendo uma reversão poderia tornar-se difícil (especialmente relacionadas com revisões do kernel)
Warren
1
É por isso que geralmente o kernel anterior é mantido e pode ser selecionado para ser inicializado no grub.
MBq
1
Eu não concordo. Seria muito útil poder alternar entre a atualização do SO x e a atualização x + 1 (a diferença pode incluir muito mais que um pacote do kernel) com uma simples reinicialização. Isso é possível com o OpenSolaris.
knweiss
Tudo é possível com Solaris, com exceção de encontrar drivers estáveis ;-)
MBq
5

Você pode tentar usar uma ferramenta como o etckeeper . Essa ferramenta simplesmente mantém os arquivos de configuração em todo o sistema em um repositório de controle de versão e facilita a reversão e a aplicação de qualquer alteração novamente.

Mas, para ser sincero, eu nunca precisei reverter qualquer alteração proveniente de atualizações nos meus sistemas debian / stable. Eu o uso para corrigir erros que cometi manualmente.

liori
fonte
Eu uso o etckeeper, mas, na verdade, acho mais útil visualizar uma linha do tempo das alterações do que reverter (é claro que você obtém as duas habilidades). Usando o back-end (por exemplo, hg, git, bzr, etc.) built-in servidor web é muitas vezes o mais fácil:sudo hg serve -R /etc
3

TMK, o recurso de restauração do Windows reverte apenas as alterações no registro e em alguns diretórios críticos. O Linux não tem isso.

Você pode tentar a abordagem manual com backups. Simplesmente faça backup do seu diretório pessoal e da lista de programas do Synaptic e use-o como um ponto de restauração.

TheLQ
fonte
3

Observe que o Ubuntu em particular (mas provavelmente também o Debian) não removerá os pacotes antigos do kernel ao instalar as atualizações, e você pode configurar o gerenciador de inicialização para apresentar uma lista de kernels a serem escolhidos durante a inicialização.

Isso cria automaticamente "pontos de restauração" - apenas para o kernel - porque você pode escolher a versão anterior se a mais nova causar problemas. Até onde eu sei, o Windows não tem nada parecido com isso nas atualizações do kernel. (E especialmente para usuários domésticos, eu não gostaria de ajudar a diagnosticar e corrigir um sistema não inicializável devido a uma atualização do kernel.)


fonte
3

Existe uma ferramenta chamada Timeshift. ( http://www.teejeetech.in/p/timeshift.html ) Eu não o usei, mas parece promissor e ouvi coisas boas sobre isso dos usuários. Os instantâneos são projetados para evitar duplicação de dados. E não se assuste com um site de aparência obscura. :)

user31389
fonte
2

Se você usar o Logical Volume Manager para gerenciar o conteúdo de seus discos rígidos, poderá obtê-lo gratuitamente até certo ponto, usando instantâneos. Para citar o ótimo HOWTO : "Um exemplo é capturar instantaneamente um volume, montar o instantâneo e tentar um programa experimental que altere os arquivos nesse volume. Se você não gostar do que fez, desmonte o instantâneo, remova-o, e monte o sistema de arquivos original em seu lugar ".

vwegert
fonte
Gostaria de observar que o particionamento de disco sugerido no Ubuntu 12.04+ usa LVM, então essa é realmente a melhor sugestão.
Kevinf
1

Dependendo da sua tecnologia de VM, você pode parar / suspender / pausar a VM, despejar o núcleo e copiar a imagem da VM. Se falhar, restaure o original.

Se você estiver diretamente em um volume lógico, poderá criar um instantâneo do LVM com base no LV original. Teste uma atualização e, se funcionar, refaça-a na VM original (consulte lvcreate (8) -s)

Ou usando o alcatrão antigo (1). Você cria uma bola tar completa do espaço do usuário, restaura os arquivos e remove os arquivos que não estavam na bola tar original.

Bclermont
fonte
Da pergunta: "Existe uma abordagem de instalação-restauração que não depende de uma configuração de VM"?
Ben Voigt
1

No momento, o Linux realmente não oferece esse recurso, embora seja muito útil.

No entanto, o artigo Atualizações inquebráveis, ZFS e Apt descreve o recurso apt-clone da distribuição de armazenamento Nexenta baseada em Linux e sugere ...

Há também um novo sistema de arquivos sendo criado em parte como resposta ao ZFS, chamado BTRFS, que terá muitas vantagens do ZFS e pode ser capaz de permitir "atualizações inquebráveis" para distribuições médias do Linux como o Ubuntu no futuro também.

IMHO, primeiro precisamos de um sistema de arquivos utilizável Copy-On-Write (COW) para Linux antes que esse recurso possa ser implementado nos instaladores / atualizadores de sistema de maneira sã.

Aviso: Embora o Nexenta seja baseado no Linux, ele não usa o kernel do Linux. Ele usa o kernel do OpenSolaris e o ZFS.

Knweiss
fonte
Eu não pretendo escolher suas lêndeas, mas o Linux baseado no kernel do Linux é um pouco paradoxo.
Seamus Connor