Veja uma maneira simples que não preserva os metadados:
ssh server.example.com 'set -C; cat >/path/to/remote/file' </path/to/local/file
Você pode fazer isso com o rsync com as opções certas. O código de retorno será 0 se o arquivo existir, mas você poderá descobrir a partir da saída detalhada.
changes=$(rsync -a --ignore-existing --itemize-changes \
/path/to/local/file server.example.com:/path/to/remote/file)
if [ $? -ne 0 ]; then
echo >&2 "Some error occured"
return 2
elif [ -n "$changes" ]; then
echo "The file was copied"
return 0
else
echo "The file already existed"
return 1
fi