Скрипт оболочки архивирует папку, но исключает параметры, не работающие, если он запускается из cron.daily

248
Viktor Koncsek

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

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

0

1 ответ на вопрос

1
Kamil Maciorowski

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

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

Похожие вопросы