linux zip und schließe dir via bash / shell script aus
Ich versuche, ein Bash / Shell-Skript zu schreiben, um einen bestimmten Ordner zu komprimieren und bestimmte Unterverzeichnisse in diesem Ordner zu ignorieren.
Dies ist der Ordner, den ich zu komprimieren versuche. "sync_test5":
Mein Bash-Skript generiert eine Ignorierliste (beyogen auf) und ruft die zip-Funktion folgendermaßen auf:
#!/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"
Jetzt läuft dieses Skript fehlerfrei, wie auch immernicht Ignorieren / Ausschließen der von mir angegebenen Verzeichnisse.
Also ließ ich das Shell-Skript den Befehl ausgeben, den es auszuführen versuchte:
zip -r 12-08-2014_072810.website.zip sync_test5 -x sync_test5/dir_to_ignore/**\* sync_test5/dir2_to_ignore/**\*
Wenn ich den obigen Befehl direkt in putty wie folgt ausführe, funktioniert es:
Warum schließt mein Shell-Skript das bestimmungsgemäße Arbeiten nicht aus? Der ausgeführte Befehl ist identisch (in Shell und Putty direkt).