O Rsync foi inventado para esse tipo de coisa.
rsync -av --update /source/ /destination
NB: Observe que / source / tem um "/" no final que pega o arquivo1, o arquivo2 e não a pasta em que ele está. / o destino não tem um rastro. Então, sua solução é assim:
rsync -av --update /tmp/a/ /tmp/b