cp -a tenta fazer cópias o mais próximo possível da origem, incluindo metadados e informações de árvore.
cp -r recursivamente copia arquivos e mantém o conteúdo, mas rende ao usuário que faz a cópia para os horários de modificação, permissões e usuário.
Então, basicamente, use apenas cp -a , pois ele faz tudo que o cp -r faz e mais.