Я пытаюсь написать сценарий bash / shell для архивирования определенной папки и игнорирования некоторых вложенных папок в этой папке.
Это папка, которую я пытаюсь сжать " 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, вот так:
Итак, почему мой сценарий оболочки не исключает работу по назначению? выполняемая команда идентична (непосредственно в оболочке и замазке).