Criando uma captura instantânea de um sistema linux

11

Quero fazer o seguinte - Salve o estado atual do meu sistema operacional Linux (centOS6.5). Faça algumas alterações (injete mais especificamente uma falha e teste algum serviço para verificar como ela se comporta quando esse tipo específico de falha ocorre.) Em seguida, restaure o sistema de volta ao estado salvo. Eu não sou capaz de descobrir como fazer isso em um sistema Linux. Eu tenho uma máquina com o centOS 6.5 com um sistema de arquivos ext4.Também é um servidor físico e não uma máquina virtual.

Alguma idéia ou sugestão?

bRuta
fonte
Servidor físico ou máquina virtual?
28515 steve
1
Eu recomendo executar o seu sistema operacional em software de virtualização como o VirtualBox. Ele suporta muito bem instantâneos.
Yaegashi # 28/15
É um servidor físico. Preciso fazer isso em várias máquinas (servidores físicos) e não consigo alterar a configuração para executar meu SO em um software de virtualização.
precisa saber é
Geralmente, ele precisa de uma meta-camada adicional, como a virtualização, para suportar os instantâneos do sistema. Seria muito difícil fazer com que os servidores físicos se comportassem como se estivessem sob controle dele no nível do firmware e do carregador de inicialização.
Yaegashi

Respostas:

8

Eu manteria simples e clonaria. Inicialize um sistema ao vivo a partir do USB (o Ubuntu é o mais fácil a partir de um pen drive USB), depois despeje o disco rígido em uma partição diferente (ou disco rígido externo etc.), por exemplo

dd if=/dev/sda1 bs=64M of=/mnt/my_mounted_backup_drive/backup-sda1

onde você precisa substituir /dev/sda1por sua /partição root ( ). Faça o mesmo com outras partições (como o que para /boot, /boot/efi, /home) quando aplicável.

Se você precisar economizar espaço, poderá fazer

dd if=/dev/sda1 bs=64M | gzip --fast | dd bs=32M of=/mnt/my_mounted_backup_drive/backup-sda1.gz

ou, mais complicado, muito mais lento, mas economizando mais alguns bytes,

mkdir -p /mnt/linux
mount -o ro /dev/sda1 /mnt/linux
cd /mnt/linux
tar cvJf /mnt/my_mounted_backup_drive/linux-backup.tar.xz .??* *

Em seguida, você pode restaurar o contrário, por exemplo

mkdir -p /mnt/linux
mount /dev/sda1 /mnt/linux
cd /mnt/linux
tar xvJf /mnt/my_mounted_backup_drive/linux-backup.tar.xz

ou

dd /mnt/my_mounted_backup_drive/backup-sda1.gz bs=32M | gzip --decompress | dd bs=64M of=/dev/sda1

(cuidado onde você está gravando seus dados, isso exclui tudo /dev/sda1, portanto, acerte na primeira vez :-)

Ned64
fonte
PS: Se você espera que algo dê realmente errado, faça backup da tabela de partições, como dd if=/dev/sda bs=64M count=2 of=/mnt/my_mounted_backup_drive/backup-sda. Ao restaurar, você precisa ter cuidado para não gravar muitos blocos de volta no disco aqui - não pode dizer quantos sem olhar para o layout da partição. Restaure até (sem incluir) o bloco em que sua primeira partição inicia de acordo com gdiskou fdisk.
Ned64
5

Você pode usar o rsync para fazer backup de todo o sistema.

rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* /path/to/backup/folder

Há um artigo incrível no Arch Linux Wiki sobre isso

Hugo Rodrigues
fonte
É muito curto para ser a melhor opção para mim. Claro que se você não tiver, rsyncpode usar o ddque eu uso para fazer backup de meus drives USB.
M3nda
1

Você pode usar o FSArchiver , que salvará o conteúdo do sistema de arquivos em um arquivo compactado e restaurará o sistema de arquivos ao extrair os dados.

Aqui está um exemplo da documentação :

fsarchiver savefs /mnt/backup/gentoo-rootfs.fsa /dev/sda1

Você também pode usar a compactação multithread e a restauração é simples:

fsarchiver restfs /mnt/backup/gentoo-rootfs.fsa id=0,dest=/dev/sda1
Paulo Almeida
fonte
-1

Para voltar ao estado anterior, você pode montar o sistema de arquivos atual em um novo diretório. Isso monta o sistema de arquivos em um novo diretório raiz especificado pelo seguinte comando:

mount DIR DIR

Para restaurar esse estado, altere a raiz do sistema de arquivos no diretório especificado no comando mount.

umount DIR

user346623
fonte