Use rsync
:
rsync -av --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination
Observe que usar source
e source/
é diferente. Uma barra à direita significa copiar o conteúdo da pasta source
em destination
. Sem a barra final, isso significa copiar a origem da pasta em destination
.
Como alternativa, se você tiver muitos diretórios (ou arquivos) para excluir, use --exclude-from=FILE
, em que FILE
é o nome de um arquivo que contém arquivos ou diretórios a serem excluídos.
--exclude
também pode conter curingas, como --exclude=*/.svn*
copiado de: link
Se você quiser usar o cp
em si:
find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'
Isso pressupõe que a estrutura do diretório de destino seja a mesma da fonte.
Copiado de: link