como incluir ou adicionar / dev com tar --one-file-system

6

Estou usando o tar em um sistema de arquivos remoto completo usando

ssh -n <hostname> 'sudo tar -cpvzf - --one-file-system /' | cat > Bak.tar.gz

Isso me deu um tarball. Eu tentei importar este tarball em outro serviço que estou usando e corri para um problema porque parece que não incluiu os diretórios /dev . Eu estou querendo saber se eu posso fazer algo como --include="/dev" ou /dev após o tar inicial. Precisa de orientação aqui.

    
por kevzettler 29.10.2013 / 23:10

2 respostas

4

Basta adicionar /dev à lista de arquivos a serem arquivados:

ssh -n <hostname> sudo tar -cpvzf - --one-file-system / /dev > Bak.tar.gz

--one-file-system apenas impede a recursão em diretórios em diferentes sistemas de arquivos. Você ainda pode listar arquivos / diretórios em diferentes sistemas de arquivos diretamente como argumentos para o tar.

    
por 29.10.2013 / 23:19
6

Você provavelmente poderia simplesmente adicioná-lo aos nomes de caminho a serem incluídos.

tar -cf - --one-file-system / /dev/

No entanto, isso geralmente não é o que você realmente quer, pois a /dev dinâmica incluiria muitos nós de dispositivos completamente errados ou irrelevantes.

Uma maneira melhor (melhor no sentido de obter uma cópia completa do sistema de arquivos raiz original, incluindo arquivos ocultos por outras montagens) para fazer isso é fazer outra montagem do sistema de arquivos, que não seja obstruída por submontas, e tar disso.

Dessa forma, você obtém o /dev/ (e todo o resto) que é armazenado no sistema de arquivos raiz. Normalmente, isso deve incluir apenas um conjunto padrão de /dev nós que foi originalmente criado no momento da instalação e necessário apenas no momento da inicialização, até que o sistema configure o /dev/ dinâmico sobre ele.

mkdir /mnt/root
mount --bind / /mnt/root
cd /mnt/root
tar -cpvzf - .
cd /
umount /mnt/root

Como os estados mount manpage, a chamada de montagem de bind une apenas (parte de) um único sistema de arquivos, não possíveis sub-montagens . É por isso que o --one-file-system não é mais necessário: não há outros sistemas de arquivos sob essa estrutura.

    
por 29.10.2013 / 23:28