Zähler in Dateinamen verwenden - für tar mit multi-volume

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ajk
Beiträge: 85
Registriert: 28.04.2005 11:20:26

Zähler in Dateinamen verwenden - für tar mit multi-volume

Beitrag von ajk » 11.01.2006 14:15:31

Hallo,

ich habe schon gesucht, aber nichts gefunden (bestimmt steht es irgendwo :( )

Ich bin gerade beim Testen von tar, und möchte die -multi-volume nutzen.

Die einzelnen Archive sollen erst einmal in ein Verzeichnis geschrieben werden um dann später von Hand auf DVD gebrannt werden.

Tar fordert ja ja vor jedem neuen Volume auf Enter zu drücken und fährt dann fort.
Aber leider wird dabei das gerade erstellte Archiv überschrieben.

Wie stelle ich es an, dass der Archivname, der beim Aufruf von tar, angegeben wird, hochgezählt wird.

z.B.

archiv_1.tar
archiv_2.tar
....

Ich möchte nicht die Split Optin verwenden, da es möglich sein soll jedes Archiv für sich alleine auszulesen. Einschlägige Packprogramme unter Windows können Tar Archive lesen.

Vielen Dank im voraus.

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 11.01.2006 14:29:00

Was enthalten die späteren Archive?
Ganze directory subtrees oder nur files eines directories.

du kannst mit einer for schleife und einer sequence arbeiten - z.B. so

Code: Alles auswählen

for i in `seq 1 49`; do mkdir $i && pushd $i && echo eth0 >dev && echo 86.110.64.$(($i+150)) >ip && popd;done
macht in einem directory subdirectories von 1 bis 49 und erzeugt darin die files "dev" und "ip" die die eintäge "eth0" bzw. eine sich incrementierende IP erhalten.

den Teil müsstest du durch ein

Code: Alles auswählen

tar -cjvf <archiv-name>{$i}.tar.bz2 <path/to/files_resp._directory_trees>
ersetzen

Für das erzeugen einer fortlaufenden Nummer könntest du dir irgendwo eine Variable vorhalten die sich bei jedem erzeugen eines Archives erhöht bzw. beim löschen decrementiert - dann kannst du auch auf die sequence verzichten - wie gesagt - keine Ahnung wie genau das laufen soll bei dir.

Als Gedankenanstoss sollte es genügen. Aja und komprimieren würde ich die Daten schon - so wie oben - bz2.

markus

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 11.01.2006 15:11:16

Habe ich jetzt nicht ausprobiert, aber so ähnlich könnte es gehen:

Code: Alles auswählen

tar -cjf temp.tar.bz -MF move.sh -L 4096 /pfad/...
in "move.sh" sollte dann sowas drinstehen:

Code: Alles auswählen

#!/usr/bin/sh
cnt = 0
file = "out.$cnt.tar.bz"
while [ -e $file ] ; do
  cnt = $cnt + 1
  file = "out.$cnt.tar.bz"
done
mv temp.tar.bz $file

ajk
Beiträge: 85
Registriert: 28.04.2005 11:20:26

Beitrag von ajk » 12.01.2006 15:26:47

danke,

ja das reicht mir ersteinmal als Anstoss.

Hintergrund: Ich wollte versuchen mit tar ein/mehrere multi Volume Archiv(e) in DVD Größe auf einer festplatte zu erzeugen.
Da aber die tar Volumes nach dem ersten den gleichen Namen bekommen wie das erste, muß ich sie umbenenne bovor sie überschrieben werden.

ich war gerade in der Buchhandlung und habe mir mal ein gutes Buch über Shell Scripting besorgt :wink:

gruss,
Andre

Antworten