TAR parallelisieren / mehrere CPUs für TAR nutzen

Tar hat einen gravierenden Nachteil: Tar nutzt beim Packen nur einen Prozessorkern. Auf heutigen Systemen mit 4,8,16 CPUs ein großes Manko.

Was die wenigsten wissen: TAR steht für Tape ARrchiver und wurde dafür geschrieben Daten auf Magnetbändern zu sichern. Unter Linux hat er sich zum de-facto Standard für das Sichern von Backups etabliert. Die Standard-Syntax, die jeder Admin kennt, lautet
tar cvzf archiv.tgz Pfad1/ Pfad2/

Für bessere Packraten d.h. kleinere Archive gibt es die von Haus aus unterstützte Alternative bzip2:
tar cvjf archiv.tgz Pfad1/ Pfad2/
Diese Form des Backups hat auf modernen Rechnern aber einen gravierenden Nachteil:
Tar nutzt beim Packen nur einen Prozessorkern. Auf heutigen Systemen mit 4,8,16 CPUs ein großes Manko, dass leider auch viel Zeit kostet, wenn man zB darauf warten muss bis ein Backup fertig ist um den nächsten Prozess zu starten.

TAR zu parallelisieren mit pigz

Abhilfe schafft das kleine Programm pigz, welches als externer Packer für tar genutzt werden kann.
pigz ermöglicht es TAR zu parallelisieren und mehrere CPUs für TAR zu nutzen.
Mit dem Parameter „--use-comcodess-program=“ oder kurz “-I” kann tar alternative externe Packer verwenden.
Dem Parameter kann entweder nur der Name oder der komplette Pfad zum Packer angegeben werden.
tar -c --use-comcodess-program=/opt/pigz/pigz -f archiv.tgz Pfad1/ Pfad2/
oder kurz:
tar -c -I pigz -f archiv.tgz Pfad1/ Pfad2/

Voraussetzungen für parallelisierten TAR unter Ubuntu

Installation von pigz unter Ubuntu  14.04.3 LTS
apt-get install pigz

Installation von pigz unter anderen Distributionen

  1. Download von pigz von der Homepage http://zlib.net/pigz/
  2. pigz mit tar entpacken 😉
  3. In das entpackte Verzeichnis wechseln
  4. make” eingeben
  5. “pigz” liegt nun in dem Verzeichnis

 

Das komplette Backup Script

#! /bin/bash
# hg 09.10.2015
# hagen gloetter

# Note:
# tar –create –use-compress-program=/pfad/pigz –file=FILENAME.tar.gz
##tar cvf – $PFADE | $PIGZ -11 -p 4 > $ARCHIV

DATE=`date +%Y-%m-%d`
ARCHIV=”$DATE-srv-backup.tgz”
PFADE=”localWebServer/ www/ ftp/ ”
PIGZ=”/opt/pigz/pigz”
TAR=”tar -cvI $PIGZ -f $ARCHIV $PFADE”
echo
echo $DATE
echo $ARCHIV
echo $PFADE
echo $PIGZ
echo “Performing:”
echo $TAR
cd /srv/
DATE2=`date +%Y-%m-%d:%H:%M:%S`
echo “START: $DATE2”
echo “START: $DATE2” >> ad_backup.log
`$TAR` >> ad_backup.log
DATE2=`date +%Y-%m-%d:%H:%M:%S`
echo “ENDE: $DATE2” >> ad_backup.log
echo “ENDE: $DATE2”
echo “ad_backup.log written”

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert