Como eu usaria o tar para backup completo e restauração com o sistema no SSD e em casa no HDD?

14

Como eu usaria o tar para backup completo e restauração com o sistema no SSD e em casa no HDD?

As respostas de backup e restauração existentes não parecem cobrir o caso em que a raiz e a casa estão em dispositivos separados

Construa
fonte
Bem-vindo à AU! Você está procurando algo único ou uma solução contínua / periódica? O destino do backup é local ou remoto? tarrealmente não se importa com dispositivos e pontos de montagem. Por favor edite seu post para incluir a informação adicional.
David Foerster
"As respostas de backup e restauração existentes não parecem cobrir o caso em que a raiz e a casa estão em dispositivos separados", o motivo: é uma má idéia e criar 2 arquivos de backup não é apenas mais inteligente, mas também mais eficiente.
Rinzwind 15/09/14

Respostas:

17

É aconselhável fazer dois backups. 1 para / e 1 para / home se estiverem em uma partição diferente. Se você deseja um, terá que adicionar muitas exceções a esse comando. Exemplo:

sudo su
cd /
tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system / 
tar -cvpzf backuphome.tar.gz --one-file-system /home/

fará backup de sua raiz e excluirá TODAS as partições montadas, como / media (você não deseja fazer backup de dispositivos externos (realmente não)) e absolutamente NÃO deseja fazer backup de algo como / dev ou / proc. E / home vai para outro backup.

No método acima, o backup é armazenado em /. Será melhor armazená-lo em uma mídia externa; você pode colocar um diretório na frente do backup.tar.gz e soltar o --exclude=...comando do 1º.

  • backup.tar.gz é o backup.
  • O --excludeimpedirá que o backup real a ser backupped.
  • cvpzf: cria, detalha, preserva permissões, compacta, usa um arquivo.

  • --one-file-system - Não inclua arquivos em um sistema de arquivos diferente. Se você desejar fazer backup de outros sistemas de arquivos, como partição / home ou mídia externa montada em / media, será necessário fazer backup deles separadamente ou omitir esse sinalizador. Se você omitir esse sinalizador, precisará adicionar vários outros argumentos --exclude = para evitar os sistemas de arquivos que você não deseja. Estes seriam os diretórios / proc, / sys, / mnt, / media, / run e / dev na raiz./ proc e / sys são sistemas de arquivos virtuais que fornecem janelas para variáveis ​​do kernel em execução; portanto, você não deseja tentar fazer backup ou restaurá-las. / dev é um tmpfs cujo conteúdo é criado e excluído dinamicamente pelo udev; portanto, você também não deseja fazer backup ou restaurá-lo. Da mesma forma, / run é um tmpfs que contém variáveis ​​sobre o sistema em execução que não precisam de backup ( origem ).


Então ... se você realmente quiser um "one-liner", pode ser assim:

cd /
tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --exclude=/proc 
--exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys / 

(Espero ter tudo o que precisa ser excluído)


Restaurar seria

sudo su
cd /
tar xvzf backup.tar.gz

Eu não usei sudona frente do comando tar, pois você receberá mensagens de erro sobre permissões (por causa dos arquivos pertencentes ao root).

Rinzwind
fonte
Sua sugestão de duas linhas funcionou muito bem, exceto que ao fazer o backup do sistema, recebi uma mensagem. "/lib64/ld-linux86-64.so2 tar: /: arquivo alterado à medida que o lemos." Isso é normal durante um backup?
Buildit 17/09/14
Sim. O tar informará as alterações no arquivo durante a ação de backup desse arquivo (ele verifica o status do arquivo antes e depois do backup). Em geral, essas mensagens são inofensivas. Se você tiver seu próprio software / dados e o tiver em um desses arquivos, eu mesmo recriaria o backup.
Rinzwind
O tar padrão não é compactado, apenas une tudo a um arquivo (TAR = Tape ARchive). Experimente o gtar.
Alan Campbell
1
Se o comando não fizer backup de determinados diretórios, preciso recriá-los quando restaurar o sistema? Além disso, que vantagens esse método tem para simplesmente usar o Deja-Dup?
user4493605