Copie um diretório no Unix

67

Como posso copiar uma estrutura de diretórios, dir1, para dir2, (com todos os subdiretórios) no Unix usando a janela do terminal?

    
por Dinesh Kumar 15.12.2010 / 16:45

3 respostas

95
cp -rf /source/path/ /destination/path/

-r = recursivo, copia todos os subdiretórios

-f = force, se um arquivo de destino existente não puder ser aberto, remova-o e tente novamente

Observação Você deve ser cuidadoso ao usar o sinal -f , pois ele substituirá à força qualquer coisa para a qual você copiar. Obrigado @Nifle por esta sugestão.

Você pode querer usar o curinga * para copiar todos os arquivos no diretório, se precisar.

    
por 15.12.2010 / 16:49
10

Enquanto as respostas cp -R estão certas (BTW o caso do sinalizador no BSD deve ser capital, ambos são suportados no linux), existe um antigo encantamento envolvendo o tar :

$ tar cf - . | (cd DIR; tar xf - )

Por que diabos você faria isso? Porque o tar tem uma compreensão bastante sofisticada de links , tanto hard quanto simbólicos.

Deseja copiar para substituir os links simbólicos existentes por um que tenha o mesmo texto? Ou com links para o mesmo alvo (ajustando caminhos relativos para compensar)? Ou com cópias bit a bit do alvo?

Se dois arquivos no original estiverem vinculados, a nova estrutura terá duas cópias dos dados ou apenas uma?

Decisões, decisões. Tar tem padrões sensíveis, mas permite que você seja bem específico sobre isso.

    
por 15.12.2010 / 17:07
6

Eu gosto

cp -axv source dest

O Rsync é outra boa ferramenta para isso

rsync -va source dest
    
por 15.12.2010 / 20:54