Приведенный ниже скрипт игнорирует все аргументы -x exclude при запуске из bash, но он отлично работает из командной строки:

#!/bin/sh
TIMESTAMP=$(date +%u)
ulimit -s 65536

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
    /usr/bin/zip -r -y $BACKUP_DIR/www/web.zip /var/www/ -x '*/.opcache/*' -x '*/phpThumb/cache/*'
else
    /usr/bin/zip -r -y $BACKUP_DIR/www/web.zip /var/www/ -x '*/mycompany/files/*' -x '*/.opcache/*' -x '*/xml_extras/*' -x '*/files_admin/extras/*' -x '*/chatFiles/*' -x '*/phpThumb/cache/*' -x '*/backup-guard/*' -x '*/mailer/*' -x '*/mycompany/attachments/*'
fi

exit 0

Это 14-дневное решение для резервного копирования, и я хочу, чтобы в будние дни игнорировались большие папки, например изображения. По какой причине аргументы -x игнорируются?

1 ответ1

0

Я решил это, удалив передний '*/' и используя абсолютные пути. Я до сих пор не знаю, почему они работали в терминале и почему не в сценарии с правильными скобками и экранированными символами.

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