Copie um diretório no Unix

Copie um diretório no Unix

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

Responder1

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

-r= recursivo, copia todos os subdiretórios

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

ObservaçãoVocê deve ter cuidado ao usar o -fsinalizador porque ele substituirá à força tudo o que você copiar. Obrigado @Nifle por esta sugestão.

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

Responder2

Embora as cp -Rrespostas estejam corretas (aliás, o caso do sinalizador no BSD deve ser maiúsculo, ambos são suportados no Linux), háum antigo encantamento envolvendo alcatrão:

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

Por que diabos você faria isso? Como o tar tem uma compreensão bastante sofisticada delinksdifícil e simbólico.

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 destino?

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

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

Responder3

Eu gosto

cp -axv source dest

Rsync é outra boa ferramenta para isso

rsync -va source dest

informação relacionada