Problema : o shell está vendo comandos separados como "nohup while true" & "do ./mysync.sh" & "dormir 1800" & "feito &".
Aqui, o shell vê um problema com "do" inesperado.
Solução : você teria que agrupar seus comandos em uma unidade, seja citando ou fazendo um pequeno script de shell. Dê esta unidade para nohup e vai funcionar.
(Solução A) Junte-se aos comandos como este:
nohup bash -c "while true; do ./mysync.sh; sleep 1800; done &"
(Solução B) Coloque os comandos while true; do ./mysync.sh; sleep 1800; done &
em mywrapper.sh
e execute isto: nohup mywrapper.sh