Bash игнорирует аргументы zip -x

324
Viktor Koncsek

Приведенный ниже скрипт игнорирует все аргументы -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 игнорируются?

0
Примечание: вы помечаете [tag: bash], но шебанг указывает на `sh`. Вы можете запустить скрипт из Bash, но * если * какая-либо оболочка имеет отношение к проблеме, тогда это `sh`, а не` bash` (если вы не * source * из Bash). Kamil Maciorowski 5 лет назад 1
@KamilMaciorowski Спасибо! Я решил это с вашим комментарием, после поиска проблемы с оболочкой, я заметил, что мне нужно бежать * в \\ * Viktor Koncsek 5 лет назад 0
Честно говоря, я еще не совсем понял. Не о чем беспокоиться. Я думаю, что если вы [ответите на свой вопрос] (https://superuser.com/help/self-answer) и объясните, то ваше решение и причина, по которой оригинальный сценарий не работал, станут ясны. Kamil Maciorowski 5 лет назад 0
Неважно, его все еще не работает должным образом (за исключением командной строки, это прекрасно). Viktor Koncsek 5 лет назад 0
Я официально пометил этот вопрос как дубликат. Я был тобой, я бы просто удалил это. Kamil Maciorowski 5 лет назад 0

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

0
Viktor Koncsek

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

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