Eu suspeito que xargs seja seu amigo nesse caso.
Completamente não testado:
# cat file | xargs -IREPLACE rsync -v REPLACE server:/path
O xargs pegará os dados do stdin e os adicionará à linha de comando um parâmetro por linha de entrada até preencher o comprimento da linha de comando e, em seguida, executar um comando separado até que todas as linhas de entrada tenham sido usadas. Isso significa que o rsync pode funcionar mais de uma vez. Isso não deveria ser um problema neste caso, mas poderia estar com outros comandos.
Normalmente o xargs apenas cola os argumentos no final da linha, mas com o rsync você desejaria ter o destino por último, então usamos a opção -I para substituir uma string pelos argumentos. (Este é o bit que não foi testado). Também estou um pouco inseguro sobre o que o rsync fará com os caminhos, então, por favor, teste isso com cuidado antes de usá-lo com raiva.
Se você tiver um problema com o xargs, você pode usar algo como:
for i in $(cat file); do rsync -v $i server:/path; done
Se o seu arquivo for maior, você provavelmente desejará usar um loop while / read. Isso será muito mais lento, pois fará um único arquivo por vez.