0

The script works fine if I run it with sh filename, but it ignores all the --exclude parameters if its run by cron:

#!/bin/sh
TIMESTAMP=$(date +%u)

WEEK=`date +"%V"`
if [ $(($WEEK%2)) -eq 0 ];
then
    echo "even";
    BACKUP_DIR="/mnt/backup/2_$TIMESTAMP"
    mkdir -p "$BACKUP_DIR/www"

else
    echo "odd";
    BACKUP_DIR="/mnt/backup/1_$TIMESTAMP"
    mkdir -p "$BACKUP_DIR/www"  
fi

if [ $(date +%u) -gt 6 ];
then
    zip -r -y $BACKUP_DIR/www/web.zip /var/www/ --exclude='var/www/\.opcache/*' --exclude='var/www/utils/phpThumb/cache/*'
else
    zip -r -y $BACKUP_DIR/www/web.zip /var/www/ --exclude='var/www/mycompany/files/*' --exclude='var/www/\.opcache/*' --exclude='var/www/mycompany/szamlazz/xml_szamlak/*' --exclude='var/www/mycompany/files_admin/szamlazz/*' --exclude='var/www/mycompany/files_admin/chatFiles/*' --exclude='var/www/mycompany/utils/phpThumb/cache/*' --exclude='*/backup-guard/*' --exclude='var/www/mycompany/mailer/*' --exclude='var/www/mycompany/attachments/*'
fi

exit 0

The above script should create a larger backup on sunday, and a partial on weekdays, but it just zips everything.

1

Your zip command will update the zip file if it exists. You write to directories in a cyclic manner, they are reused eventually. If you have an old zip file created without exclusions, the update won't remove old versions of files you want to exclude from the archive.

Straightforward solution: remove the old zip file before you run zip.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.