Como posso copiar uma estrutura de diretório, dir1, para dir2, (com todos os subdiretórios) no Unix usando a janela do terminal?
Como posso copiar uma estrutura de diretório, dir1, para dir2, (com todos os subdiretórios) no Unix usando a janela do terminal?
Respostas:
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 -f
flag porque substituirá à força qualquer coisa para a qual você copie. Obrigado @Nifle por esta sugestão.
Você pode querer usar o curinga * para copiar todos os arquivos no diretório, se necessário.
f
bandeira. -f if an existing destination file cannot be opened, remove it and try again
-f
sinalizador sendo útil se você estiver copiando & lt; source & gt; mais & lt; dest & gt; (como ao sobrescrever coisas em & lt; dest & gt;) eu vou fazer o upvote e deletar minha resposta)
Enquanto o cp -R
respostas estão certas (ENTRE o caso da bandeira no BSD deve ser capital, ambos são suportados no linux), existe um velho encantamento envolvendo alcatrão :
$ tar cf - . | (cd DIR; tar xf - )
Por que diabos você faria isso? Porque o alcatrão tem uma compreensão bastante sofisticada de ligações ambos duros e 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