With Debian GNU/Linux 10 (buster), I'm using a simple script to save a PostgreSQL database and upload it to my Dropbox account with Dropbox-Uploader tool. I schedule this task with a crontab.
When I directly execute my script from the prompt everything is ok and well executed, but when it run from the crontab the upload action isn't execute (./dropbox_uploader.sh -d upload).
Am I missing something in execute permissions ?
The script (my_script.sh)
#!/bin/bash
# Database dump
pg_dump -U postgres -d my_database > /home/my_user/`date +%Y%m%d`_my_database.sql
# Upload to Dropbox
./dropbox_uploader.sh -d upload /home/my_user/`date +%Y%m%d`_my_database.sql `date +%Y%m%d`_my_database.sql
Permissions
ls -l my_script.sh
-rwxr-xr-x 1 my_user my_user 732 Apr 7 09:19 my_script.sh
getfacl my_script.sh
# file: my_script.sh
# owner: my_user
# group: my_user
user::rwx
group::r-x
other::r-x
ls -l dropbox_uploader.sh
-rwxr-xr-x 1 root root 52481 Apr 6 16:01 dropbox_uploader.sh
getfacl dropbox_uploader.sh
# file: dropbox_uploader.sh
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
Cron
0 9 * * * /bin/sh /home/my_user/my_script.sh
I have read this post and this post, but I think I'm missing something with dropbox_uploader.sh execution permissions.
./filename) with absolute paths (/path/to/filename)#!/bin/bash) don't call it withsh; either usebashor better still make it executable and just treat it as any other program