Сценарий работает нормально, если я запускаю его с sh filename , но он игнорирует все параметры --exclude если его запускает 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

Приведенный выше скрипт должен создавать большую резервную копию в воскресенье и частичную в будние дни, но он просто архивирует все.

1 ответ1

1

Ваша команда zip обновит файл zip, если он существует. Вы пишете в каталоги циклически, они в конечном итоге используются повторно. Если у вас есть старый zip-файл, созданный без исключений, обновление не удалит старые версии файлов, которые вы хотите исключить из архива.

Простое решение: удалите старый zip-файл перед запуском zip .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .