Howto: Tar Multivolumes

11 Mar 2011

Manchmal kommt man doch in die Verlegenheit auf Datenträger zurückgreifen zu müssen, welche keine scheinbar unbegrenzte Speichermenge aufweisen. Dann ist es ziemlich nützlich wenn man Datenpakete bestimmter Größe erzeugen kann, welche man dann einzeln auf mehrere Datenträger verteilt. Dies geht z.B. sehr einfach mit tar.
Als kleines Beispiel erzeuge ich mehrere Dateien in einem Verzeichnis und packe sie anschließend in einem Multivolume Tar zusammen.
Erzeugung von einem Verzeichnis mit 100 jeweils 20MB großen Dateien:
 
cd /tmp
mkdir bigdir
count=1; while [ $count -le 100 ]; \
do dd if=/dev/zero of=bigdir/file_$count \
bs=1M count=20; count=$[$count+1]; done
du -h bigdir
2,0G        bigdir

Wir nehmen an, wir wollen das ganze Verzeichnis nun auf CD brennen. Das sind diese silbernen Scheiben mit 700 MB Speicherkapazität. Also brauchen wir 3 CDs bzw. auch drei Volumes mit maximal 700 MB. Das letzte Paket kann, wie auch in unserem Fall kleiner ausfallen:

 
tar -cvM -L 716800 -f CD1.tar -f CD2.tar -f CD3.tar bigdir
ls -lh *.tar
-rw-r--r-- 1 oliver oliver 700M 2011-03-11 12:40 CD1.tar
-rw-r--r-- 1 oliver oliver 700M 2011-03-11 12:40 CD2.tar
-rw-r--r-- 1 oliver oliver 601M 2011-03-11 12:41 CD3.tar
Um die Daten später wieder zu entpacken nutzt man den folgenden Befehl:
 
rm -r bigdir
tar -xvM -f CD1.tar -f CD2.tar -f CD3.tar
du -h bigdir
2,0G        bigdir
Dies funktioniert übrigens nur mit unkomprimierten tar-Archiven. Wenn eine Komprimierung sinnvoll erscheint, muss man er ein komprimiertes tar-Archiv erstellen und dieses dann mittels split teilen. Aber das ist eine ganz andere Geschichte...
 
dd howto linux multivolumes shell tar unix
comments powered by Disqus