O ponto ( . ) é apenas o diretório . dentro de um diretório que é o mesmo que o próprio diretório ( ls -la /foo mostrará a você). Portanto, se você copiar foo/. em outro lugar, copiará efetivamente toda a árvore abaixo de foo sem copiar foo (você está copiando em foo2/. , que é o mesmo que foo2 ).
/foo/* é expandido pelo shell para a lista de diretórios e arquivos não ocultos em /foo , portanto, copiaria a mesma estrutura de diretórios em /foo para /foo2 , exceto para os dotfiles / dotdirs. Efetivamente, cp receberá (potencialmente) muitos argumentos. Se a lista for muito grande, pode até mesmo causar a falha na execução de cp .