Я пытаюсь написать сценарий bash/shell, чтобы заархивировать определенную папку и игнорировать некоторые вложенные папки в этой папке.
Это папка, которую я пытаюсь zip"sync_test5":
мой сценарий bash генерирует список игнорирования (на основе) и вызывает функцию zip следующим образом:
#!/bin/bash
SYNC_WEB_ROOT_BASE_DIR="/home/www-data/public_html"
SYNC_WEB_ROOT_BACKUP_DIR="sync_test5"
SYNC_WEB_ROOT_IGNORE_DIR="dir_to_ignore dir2_to_ignore"
ignorelist=""
if [ "$SYNC_WEB_ROOT_IGNORE_DIR" != "" ];
then
for ignoredir in $SYNC_WEB_ROOT_IGNORE_DIR
do
ignorelist="$ignorelist $SYNC_WEB_ROOT_BACKUP_DIR/$ignoredir/***"
done
fi
FILE="$SYNC_BACKUP_DIR/$DATETIMENOW.website.zip"
cd $SYNC_WEB_ROOT_BASE_DIR;
zip -r $FILE $SYNC_WEB_ROOT_BACKUP_DIR -x $ignorelist >/dev/null
echo "Done"
теперь этот скрипт работает без ошибок, однако это не игнорируя исключая Дирс я указал.
Итак, у меня был выходной скрипт команду, которую он пытался бежать, что было:
zip -r 12-08-2014_072810.website.zip sync_test5 -x sync_test5/dir_to_ignore/*** sync_test5/dir2_to_ignore/***
теперь, если я запускаю приведенную выше команду непосредственно в putty, как это, он работает:
Итак, почему мой скрипт оболочки не исключает работу по назначению? выполняемая команда идентична (в оболочке и непосредственно в putty).