for Ordner in /irgendwo/
do
tar -cvzf ziel.tar /irgendwo/Ordner/
done
Damit überschreibst du mit jedem Durchgang immer dasselbe Ziel. Worum geht es dir überhaupt - willst du für jeden Ordner ein eigenes Archiv? Ansonsten wäre
‚tar -cvzf ziel.tgz /irgendwo/‘ ausreichend, da tar rekursiv arbeitet.
Es geht darum, dass ein Backup von jedem Tag der Woche erstellt wird.
Mit ging es um die Lösung, wie ich die Verzeichnisse in die Schleife bekomme.
Ich hab es jetzt so gelöst:
Tag=date '+%w'
for Ordner in ls /irgendwo/
do
tar -cvzf ziel$Tag.tar /irgendwo/Ordner/
done
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo 151kg,
hast Du dein Skript tatsächlich überprüft?
Wie herrmann schon schrieb, tar ist von Natur schon rekursiv, so daß z.B. so etwas reichen würde (jetzt noch ohne jegliche Fehlerprüfung):
#!/bin/bash
ORDNER=$1
TAG=ziel`date +%w`.tgz
tar -cvzf $TAG $ORDNER
Wenn Du das unter dem Namen backup abspeicherst und dann mit ./backup /irgendwas aufrufst, sicherst Du den Inhalt sämtlicher Ordner und Unterordner ab /irgendwas.
Willst Du nur den Inhalt von /irgendwas (ohne Unterordner) sichern, müsste das so aussehen:
#!/bin/bash
ORDNER=$1
TAG=ziel`date +%w`.tgz
tar --no-recursion -cvzf $TAG $ORDNER/\*
Als halbwegs vernünftiges Backup müsste natürlich noch mehr rein, soll ja nur das Grundgerüst verdeutlichen.
da ich für alle vorhanden Ordner ein eigenes Archiv brauche,
muß ich den Überordner einzeln durchgehen.
Abgesehen davon, daß dein Skript so nicht funktioniert, legst Du auch nur ein einziges Archiv an, nämlich zielX.tar.
Willst Du vielleicht für den Ordner irgendwo ein Archiv irgendwo.tar.gz anlegen und für das Verzeichnis woanders ein Archiv woanders.tar.gz?
Und sollen die Unterordner von irgendwo auch ein eigenes Archiv bekommen, und wie soll das denn heissen, irgendwo/unterordner.tar.gz geht ja schlecht als Name für das tar-Archiv des Ordners /irgendwo/unterordner.
So ganz ist mir das Konzept noch nicht klar und wozu Du für jeden Ordner ein eigenes Archiv brauchst?
Bei meiner Variante bekomme ich in die Variable Ordner die
reinen Ordnernamen, bei Deiner den kompletten Pfad zum Ordner.
Und da ich den Ordnernamen alleine weiterbenutzten will, denke
ich, das meine Variante passender ist.
Ich würd’s vermutlich so in der Art machen:
backupdir=pwd
cd /irgendwo
for a in *; do
tar czvf $backupdir/$a_$tag.tar.gz $a
done
Der Vorteil wäre, dass die Pfade der Dateien in den tar-Dateien dann relativ abgelegt sind ($a/…) und nicht vom root-Verzeichnis an. Das kann von Vorteil sein, wenn ich das tar mal woandershin auspacken möchte.
Und wenn ich’s ein bisschen cooler machen wollen würde, würde ich für jedes $a überprüfen, ob es überhaupt ein Verzeichnis ist, und nur in dem Fall tarren :