Como posso copiar uma estrutura de diretório, dir1, para dir2, (com todos os subdiretórios) no Unix usando a janela do terminal?
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
Nota Você deve ter cuidado ao usar o sinalizador -f
porque 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 necessário.
Enquanto o cp -R
responde está certo (BTW o caso do flag no BSD deve ser maiúscula, ambos são suportados no linux), existe m antigo encantamento envolvendo tar :
$ tar cf - . | (cd DIR; tar xf - )
Por que diabos você faria isso? Porque o tar tem um entendimento razoavelmente sofisticado 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 deve ter duas cópias dos dados ou apenas uma?
Decisões decisões. Tar tem padrões sensíveis, mas permite que você seja muito específico sobre isso.
Eu gosto
cp -axv source dest
O Rsync é outra boa ferramenta para este
rsync -va source dest