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
- Download von pigz von der Homepage http://zlib.net/pigz/
- pigz mit tar entpacken 😉
- In das entpackte Verzeichnis wechseln
- “
make
” eingeben - “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”
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!