Usando o comando tar para copiar árvore de diretório

O tar pode ser utilizado para se copiar todo o conteúdo de um diretório, com seus subdiretórios e links, para um diretório de destino.

Uma vantagem sobre o “cp -Rp” é que o tar levará os seus links enquanto que o cp não.

Segue o comando:

# cd [diretório origem]

# tar cvf - . | (cd /[diretório destino] && tar xvf -)

O && irá executar o comando tar apenas se o comando “cd [diretório destino]” for executado com sucesso.

os colchetes [ ] não fazem parte do comando acima. São utilizados apenas para indicar os valores que variam.

Referência:

  1. Unix Power Tools – Copying Directory Trees with (tar | tar): http://www.linuxdevcenter.com/pub/a/linux/lpt/18_16.html
  2. Dicas-L – Uso do comando tar para copiar arquivos: http://www.dicas-l.com.br/dicas-l/19971222.php

2 thoughts on “Usando o comando tar para copiar árvore de diretório”

  1. Sou adm. Solaria a alguns anos e eu já uso algo parecido porem normalmente uso:

    tar -cvf – . |(cd /[diretório destino]; tar -xvf – )

    Detalhe que o tar do Solaris (8 e 9) normalmente tem problemas com paths muito grandes , assim de preferência de usar o GNU tar para evitar esses problemas.

  2. Olá Valter,

    A opção que você usa é inclusive a indicada no Dicas-L pelo Rubens Queiroz. Funciona legal mesmo.

    Eu optei por indicar a versão com && (indicada no livro da O’Reilly), pois achei interessante o fato de ele apenas rodar o “tar” se comando “cd” for bem sucedido. É uma validação a mais.

    Não sabia desse problema com PATHs grandes no Solaris. Valeu pela dica Quanto ao tar da GNU, acho ele muito melhor que os outros e não entendo porque as empresas já não distribuem ele por default nos sistemas operacionais. Não sei se a Sun já está fazendo isso, mas a IBM até a versão 5.3 pelo menos, mantém o mesmo tar de antigamente como default em sua distribuição. Você pode é claro instalar a versão da gnu, mas aí são instalações extras e isso nunca é tranquilo de ser feito em ambientes produtivos.

    Obrigada pela participação.

Leave a Reply

Your email address will not be published. Required fields are marked *