Hello,
I’m using @davidsandbrand script to backup my EE site with Rclone ( I put backup.sh in /root/backup.sh). The backup will be uploaded to Google Drive then. However, I could not find a way to run the cron job properly. I tried these commands:
ee cron create rlylit.com --command=’/root/backup.sh’ --schedule=’@daily’
ee cron create host --command=’/root/backup.sh’ --schedule=’@daily’
EDITOR=nano crontab -e
The first two don’t work, cron job never runs. The third works but only for site files. It creates a blank tar.bz2 file for database.
If I just run the process by typing /root/backup.sh, everything is fine. Site files and database will be backup properly.
Can someone point me what’s wrong? Thanks in advance. Here is my backup.sh script:
SERVER_NAME=SITE_BACKUP
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/root/backup/$TIMESTAMP"
MYSQL_USER=“root”
MYSQL_PASSWORD=cat /opt/easyengine/services/docker-compose.yml | grep MYSQL_ROOT_PASSWORD | awk -F'=' '{print $2}'
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
SECONDS=0
DOCKERDatabaseID=docker ps | grep -e 'services_global-db' | cut -c1-12;
mkdir -p “$BACKUP_DIR/mysql”
databases=docker exec $DOCKERDatabaseID bash -c "mysql -h localhost --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e 'show databases;'" | tr -d "| " | grep -v Database
echo “Starting Backup Database”;
for db in $databases; do
if [[ “$db” != “information_schema” ]] && [[ “$db” != “performance_schema” ]] && [[ “$db” != “mysql” ]] && [[ “$db” != _* ]] ;
then
#uncomment this next line if you want to know which DB the script is on.
#echo “Dumping database: $db”
sudo docker exec $DOCKERDatabaseID bash -c “/usr/bin/mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD --databases $db” > $BACKUP_DIR/$db.sql
fi
done
tar -jcf $BACKUP_DIR/DBs-$TIMESTAMP.tar.bz2 $BACKUP_DIR/*.sql
rm -f $BACKUP_DIR/*.sql
echo “Finished”;
echo ‘’;
echo “Starting Backup Website”;
tar -jcf $BACKUP_DIR/siteFiles-$TIMESTAMP.tar.bz2 /opt/easyengine/sites/* --dereference
echo “Finished”;
echo ‘’;
size=$(du -sh $BACKUP_DIR | awk ‘{ print $1}’)
echo “Starting Uploading Backup”;
/usr/sbin/rclone --transfers=1 move $BACKUP_DIR “a2hostingvps:$SERVER_NAME/$TIMESTAMP” >> /var/log/rclone.log 2>&1
#Cleanup
rm -rf $BACKUP_DIR
/usr/sbin/rclone -q --min-age 1w delete “MyVPS:$SERVER_NAME” #Remove all backups older than 2 day
/usr/sbin/rclone -q --min-age 1w rmdirs “MyVPS:$SERVER_NAME” #Remove all empty folders older than 2 day
/usr/sbin/rclone cleanup “MyVPS:” #Cleanup Trash
echo “Finished”;
echo ‘’;
duration=$SECONDS
echo “Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed.”