Zippen aus der Bash heraus

worker

worker

König
Moin,

Aufgabe ist es Mehrere Log-Dateien vom aktuellen Datum, aber unterschiedlichen Uhrzeiten (Format: Logfile-30_01_2009-10:05_Uhr.log) in ein Zip-File (Format: Logfiles-30_01_2009.zip) zu packen.

Folgende Zeile funktioniert direkt aus der Bash heraus perfekt: /usr/bin/zip -m -5 ./Logfiles.zip ./Logfile-30_01_2009*.log

Dagegen in einem Bash-Script nicht (ausgeführt im gleichen Verzeichnis, wie die Logfiles):
Code:
# Variablen als Datei-Parameter an Zip:
DATUM=`date +%d_%m_%y`
LOG_DATEIEN_FUER_ZIP="`dirname $0`/Logfile-$DATUM*.log"
ZIP_DATEI="`dirname $0`/Logfiles-$DATUM.zip"
# -----

# Debugging: Haben die Variablen event. einen Zeilenumbruch odg. ?
echo "ZD : [$ZIP_DATEI]"
echo "L4Z: [$LOG_DATEIEN_FUER_ZIP]"
# -----

/usr/bin/zip -m -5 "$ZIP_DATEI" "$LOG_DATEIEN_FUER_ZIP"

Google brachte mich keinen Schritt weiter.

Also meine Frage wäre dann: "Where's the problem, officer ?"

Thx
W.
 
Hi,

erst mal, welche Fehlermeldungen bekommst du? "Geht nicht" ist wenig aussagekräftig, ich würde auf den ersten Blick etwas wie "zip: ... *.log - no such file or directory" erwarten. Aufgrund der Quotes in der letzten Zeilt nehme ich an, dass die Shell keine Chance hat, den "*" zu expandieren. Ein Versuch wäre also, statt
Code:
/usr/bin/zip -m -5 "$ZIP_DATEI" "$LOG_DATEIEN_FUER_ZIP"
einfach mal
Code:
/usr/bin/zip -m -5 "$ZIP_DATEI" $LOG_DATEIEN_FUER_ZIP
zu schreiben ...

Gruss
 
Hi,

erst mal, welche Fehlermeldungen bekommst du? "Geht nicht" ist wenig aussagekräftig, ich würde auf den ersten Blick etwas wie "zip: ... *.log - no such file or directory" erwarten.
Oh mannn(!!!) ... ja, klar. Sorry...
Haste aber absolut recht:
zip warning: name not matched: ./Logfile-30_01_09*.log

zip error: Nothing to do! (./Logfiles-30_01_09.zip)

Und hiermit hast Du auch Recht:
einfach mal
Code:
/usr/bin/zip -m -5 "$ZIP_DATEI" $LOG_DATEIEN_FUER_ZIP
zu schreiben ...

(Habs auch bei beiden Variablen mit und ohne Anführungsstriche versucht, aber dann halt beides zugleich - was auch nicht funktionierte.)

Vielen Dank !! ;-) ... auch für die Erklärung.

Gruß
W.
 
Na, bin ja froh, wennn ich ein bisschen helfen konnte ... kenne das Problem wohl auch schon aus eigener Erfahrung :)

Ich habe mir da dann einfach angewöhnt, den "*" erst im Kommando direkt reinzubasteln, statt ihn vorher in irgendwelche Variablen zu packen. In deinem Beispiel hätte ich also wahrscheinlich so etwas wie
Code:
DATUM=`date +%d_%m_%y`
(
cd `dirname "$0"`
zip -m 5 Logfiles-$DATUM.zip Logfiles-$DATUM*.log
)
geschrieben.

... ausser natürlich ich verwende die Dateinamen (oder irgendwelche anderen Variablen) später in meinem Skript noch weiter ...

Gruesse
 
Yepp, das werde ich wohl auch tun ;-)

Da sucht man sich echt den Allerwertesten nach solch einem "Fehler" ab ... :D

Thx nochmal
W.
 

Ähnliche Themen

Queue für copy Script

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Last mit etc/passwd anzeigen lassen

NagiosGrapher 1.7.1 funktioniert nicht

Windows clients können nicht mehr auf lange laufendes System zugreifen

Zurück
Oben