Suche Script zum Sichern von Dateien

Nante

Grünschnabel
Hallo,

ich suche Hilfe von erfahrenen Script-Programmiereren!

Ein script soll eine Menge von Dateien in ein tar-Archiv packen und dann löschen. Hier mal ein Beispiel, an dem ich nicht weiter kommen.

if [ 'ls *.log | ws -l' -gr 0]
then
tar cfz logs.tar *.log
rm *.log
fi

So funktioniert es aus zwei Gründen nicht:
1. liefert 'ls *.log | ws -l' keinen numerischen wert, kann also mit gr nicht.
2. wenn die Ergebnismenge 0 ist, liefert ls eine Fehlermeldung.

Wie ihr seht, hab ich das Problem erkannt, aber keine Lösung :mad:

Wer kann mir helfen?

Danke und Gruß
Nante
 
Hi.

Damit könnte es auch noch ein paar Probleme geben.

Wenn du Bash benutzt, könnte die Shell Option "nullglob" angeschaltet sein, dann wird falls keine Dateien für das Muster ermittelt werden konnten nicht "*.log" zurückgegeben, sondern nichts.

Außerdem könnte es sein, das du Dateien löscht die du gar nicht archiviert hast - denn du wendest das Muster ja dreimal an - bei jedem Mal kann ein anderes Ergebnis zustande kommen.

Ich würde dir raten, mit Arrays zu arbeiten, und die Dateien nur bei erfolgreicher Erstellung des Archivs zu löschen:
Bash:
declare -a files
shopt -s nullglob # nullglob anschalten.

files=( $( ls *.log ) )
if [[ "${#files[@]}" -gt 0 ]]; then
  tar -czf logs.tar.gz "${files[@]}" && rm "${files[@]}"
fi
Gruß
 
Zurück