cron isn’t using your login shell. that’s the trap.
but put PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin at the top of the crontab, then test the exact command once with env -i HOME=“$HOME” PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/sh -c ‘…’, and you catch most of the “worked in my terminal” stuff before it turns into tomorrow’s missing backup. MAILTO or a heartbeat catches the next failure.
cron isn’t using your login shell. that’s the trap.
but put PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin at the top of the crontab, then test the exact command once with env -i HOME=“$HOME” PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/sh -c ‘…’, and you catch most of the “worked in my terminal” stuff before it turns into tomorrow’s missing backup. MAILTO or a heartbeat catches the next failure.