Como criar um tar de um chroot?

2

Eu quero capturar tudo em um chroot, mas não tenho certeza se preciso chroot para ver as permissões completas do sistema de arquivos / preserver, etc. De fora do chroot, parece que eu perderia o diretório home do root /root . Qual é a maneira de capturar completamente um chroot, da mesma forma que você pode capturar uma VM totalmente?:

cd ~/mychroot
# Un-mount any previously mounted filesystems first?
# umount /proc
tar -cpzf /tmp/mychroot.tar.gz --one-file-system --exclude=/tmp --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev /    cp ~/mychroot/mychoort.tar.gz /path/to/somewhere/safe

sudo chroot ~/mychroot
# Un-mount any previously mounted filesystems first?
tar -cpzf /tmp/mychroot.tar.gz --one-file-system --exclude=/tmp --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev /    # Exit the chroot
exit
cp ~/mychroot/mychroot.tar.gz /path/to/somewhere/safe
    
por tarabyte 24.08.2015 / 17:17

1 resposta

2

Você não precisa fazer chroot para tar coisas. Você pode usar a opção --numeric-owner . O Chroot só é necessário se você também quiser gravar os nomes (corretos) de proprietário / grupo dentro do arquivo tar, o que não é estritamente necessário neste caso [quando /etc/passwd etc. é parte do tar].

E, na verdade, sem chrooting, você também não precisa montar /dev , /proc , /sys etc., então essa é uma dor de cabeça removida.

A opção --one-file-system é um falso amigo. Ele simplesmente fornecerá um tar incompleto, já que ele ignora todos os pontos de montagem. Por exemplo, alguns sistemas possuem nós de dispositivos estáticos em /dev antes mesmo de o udev ser montado lá; eles desapareceriam e, como resultado, seu sistema pode não inicializar.

Portanto, nunca use --one-file-system , a menos que um resultado incompleto seja absolutamente o que você deseja.

Uma alternativa é a montagem de ligação, por exemplo, para a partição raiz:

mkdir /mnt/root
mount --bind / /mnt/root

O bind mount não carrega submounts junto com ele, então /mnt/root lhe dá uma visão completa do seu sistema de arquivos raiz, incluindo nós estáticos em /dev/ e outras coisas, se presentes. Você pode aplicá-lo na íntegra, sem o incômodo de --one-file-system e dezenas de opções --exclude .

    
por 24.08.2015 / 17:45

Tags