2010-12-15 15:45:40 +0000 2010-12-15 15:45:40 +0000
81
81

Copiar um directório em Unix

Como posso copiar uma estrutura de directório, dir1, para dir2, (com todos os subdirectórios) em Unix usando a janela do terminal?

Respostas (3)

117
117
117
2010-12-15 15:49:02 +0000
cp -rf /source/path/ /destination/path/

-r = recursivo, copia todas as subdirectorias

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

Nota Deverá ter cuidado ao utilizar a bandeira -f porque ela irá sobrescrever à força tudo o que copiar. Obrigado @Nifle por esta sugestão.

Poderá querer usar o wildcard * para copiar todos os ficheiros do directório, se necessário.

11
11
11
2010-12-15 16:07:16 +0000

Embora as respostas cp -R estejam certas (BTW o caso da bandeira em BSD deve ser capital, ambas são apoiadas em linux), existe um antigo encantamento envolvendo alcatrão :

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

Porque diabos faria isso? Porque o alcatrão tem um entendimento bastante sofisticado de links tanto duro como simbólico.

Quer copiar para substituir ligações simbólicas existentes por uma que tenha o mesmo texto? Ou com links para o mesmo alvo (ajustando caminhos relativos para compensar)? Ou com cópias bitwise do alvo?

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

Decisões, decisões. O Tar tem padrões sensatos, mas permite ser muito específico a este respeito.

9
9
9
2010-12-15 19:54:18 +0000

Eu gosto de

cp -axv source dest

Rsync é outra boa ferramenta para este

rsync -va source dest