Existem algumas coisas que podem dar errado aqui. Primeiro de tudo, você está perdendo um ponto e vírgula no final da declaração da variável $copy
. Seu script deve ser
$copy = 'rsync -acz user@server:/home/user/foo.txt .';
shell_exec ($copy);
Se esse é apenas um erro de digitação em sua postagem e não como o script real é, certifique-se de poder executar o comando corretamente a partir de um terminal, sem precisar digitar uma senha. Se puder, inicie seu script php novamente, mas monitore seus logs de erros. Supondo que você esteja executando este script através de um servidor web apache, isso seria
tail -f /var/log/apache2/error.log