
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 -f
sinalizador 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 -R
respostas 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