You can clone with
while (( $result )) || [ -z "$result" ]; do
node dump_data_for_backup.js > backup.json
# there is no way to distinguish node's (1) exit code on SIGINT (and SIGTERM)
# from a (1) exit code due to normal exit call in userland.
# if node preserved SIGINT/SIGTERM, then the shell would detect node's
# "abnormal exit" status, and the script would terminate right here.
# as it stands, it will be very difficult to terminate this script
# using Ctrl-C (SIGINT) or SIGTERM.
if (( $result != 0 )) ; then
echo -e "\nbackup failed ($result). retrying..."
echo ">> backup-$(date +%Y%m%d).json"