WAL archiving w/ streaming replication
If the slave server is offline, the rsync in the archive_command should fail (exit with a non-zero exit value), which means the master will keep retrying it until it succeeds.  It will not remove a pg_xlog file until it is successfully archived.  So it will still be there when the slave comes back on online.

Also, the || exit 0 at the end of your restore command is just wrong.  PostgreSQL will ask for files which do not exist, and has to be told they don't exist (by returning a non-zero exit code)