Você quer rsync :
rsync -va --exclude=foo --exclude=bar ~/directory_to_copy /path/to/copy
--exclude é usado para excluir arquivos ou diretórios indesejados.
-v torna o rsync detalhado (opcional).
-a diz ao rsync para copiar recursivamente e preservar atributos de arquivo. Isso é opcional, mas, se você não usar -a , provavelmente usará -r para copiar recursivamente.
Para requisitos mais complexos, as opções excluir e incluir podem ser especificadas. É até possível alterar as configurações de exclusão / inclusão de um diretório para outro, especificando a opção -F e colocando os arquivos .rsync-filter em vários locais na hierarquia de diretórios de origem. man rsync tem detalhes.