Tag zusammen,

ich habe mir ein Backupscript auf Basis von rsync zusammen gebastelt. Dieses funktioniert soweit auch. Nach dem syncen packe ich das Backup zusammen und kopiere es in den Backupordner (später soll das Archiv auf meine NAS). Da das packen so lange dauert (ca. 3GB ;-)), könnte man meinen, dass nichts mehr passiert. Daher möchte ich an der Stelle eine Fortschrittsanzeige, jene Variante welche ich im Moment verwende (pv) verdoppelt die Zeit des Packprozesses fast und schließt das erstellen des Archives mit tar auch nicht ein, was ja die meiste Zeit in Anspruch nimmt. Wie könnte man das noch/besser machen?
#!/bin/bash

DATE=$(date +%Y-%m-%d)
DATE1=$(date +%Y-%m-%d-%H%M%S)

BACKUP_DIR="home/ktt73/Data/001BackUp"

HOMEPATH="home/$USER"

cd /

sudo rsync -av --delete --delete-excluded --exclude="tmp/" --exclude="sys/" --exclude="proc/" --exclude="mnt/" --exclude="dev/" --exclude="$HOMEPATH/Data" --exclude="$HOMEPATH/FTP" --exclude="$HOMEPATH/Save" / $BACKUP_DIR/tmp

echo
echo -e '\E[36;40m Update wurde erstellt, komprimiere nun...'; tput sgr0
echo

cd /home/ktt73/Data/001BackUp/tmp

#diesen Befehl würde ich lieber verwenden, allerdings mit Fortschrittsanzeige
#tar -czf backup-$DATE.tar.gz /home/ktt73/Data/001BackUp/tmp

#mein Versuch einer Fortschrittsanzeige, dauert zu lang da tar von gzip getrennt
tar -cf backup-$DATE.tar /home/ktt73/Data/001BackUp/tmp

pv backup-$DATE.tar | gzip > backup-$DATE.tar.gz

mv backup-$DATE.tar.gz  /home/ktt73/Data/001BackUp/Arch/backup-$DATE1.tar.gz

rm backup-$DATE.tar

echo
echo -e '\E[36;40m # !!!Fertig!!! Update liegt im Backupordner, komprimiertes Archiv gesichert auf dem Server '; tput sgr0
echo 
echo -e '\E[36;40m # zum Beenden hau auf irgend eine Taste...'; tput sgr0

read taste

Da ich das Script via <urxvt -e> aus dem openbox-menü starte und nach Durchlauf das Terminalfenster geschlossen wird, habe ich den unteren Teil eingebaut. So bleibt das Terminalfenster offen und man kann eventuelle Fehleranzeigen sehen. Vielleicht gibts da auch ne bessere Variante?

Ich hoffe es ist einigermaßen verständlich was ich von euch möchte 😉

Gruß KTT73
Also tar und gzip lässt sich eigentlich ganz gut mit pv verknüpfen:
tar -cf - <pfad> | pv | gzip > <pfad>
(Für eine mehr oder wenig exakte Fortschrittsanzeige, inklusive der Restzeit müsstest du im ersten Durchgang das Datenvolumen berechnen, was ich aber zu langwierig finde)

Wenn Geschwindigkeit so ein Punkt ist, würde ich allerdings entweder auf das taren verzichten oder auf das Rsync. Der doppelte Kopiervorgang macht eigentlich keinen Sinn. Außerdem könntest du ein paralleles Packprogramm benutzten, wenn du einen Multicore hast, wie etwa pbzip2 (oder pxz, was besser komprimiert aber länger dauert).
Kinch schriebAlso tar und gzip lässt sich eigentlich ganz gut mit pv verknüpfen:
tar -cf - <pfad> | pv | gzip > <pfad>
(Für eine mehr oder wenig exakte Fortschrittsanzeige, inklusive der Restzeit müsstest du im ersten Durchgang das Datenvolumen berechnen, was ich aber zu langwierig finde)

Wenn Geschwindigkeit so ein Punkt ist, würde ich allerdings entweder auf das taren verzichten oder auf das Rsync. Der doppelte Kopiervorgang macht eigentlich keinen Sinn. Außerdem könntest du ein paralleles Packprogramm benutzten, wenn du einen Multicore hast, wie etwa pbzip2 (oder pxz, was besser komprimiert aber länger dauert).
Die Anzeige muss nicht genau sein, es geht hier nur darum zu sehen das noch etwas passiert.

Den doppelten Kopiervorgang hätte ich gern, da ich das Backup einmal unkomprimiert auf meiner Data Partition belasse (wird ja immer nur inkremental aktualisiert), bin ein kleines Spielkind und verstelle gern viele Sachen (lerne linuxen ja noch), mir ist es nicht nur einmal passiert das danach nichts mehr ging und ich kein Backup zur sofortigen Verfügung hatte. Das Archiv speichere ich auf meiner NAS um doppelte Sicherheit zu haben. Die Geschwindigkeit ist dahingehend ein Punkt, da es mir den Rechner blockiert 😉. pbzip2 werde ich mir mal anschauen.

Edit: noch eine Frage:

Ich bekomme von tar immer folgende Meldung:
tar: Entferne führende "/" von Elementnamen
Was will tar mir sagen? Gefährdet tar damit mein Backup? Wenn ja was kann ich dagegen tun?


Habe in meinem Script nun die Zeilen:
tar -cf backup-$DATE.tar /home/ktt73/Data/001BackUp/tmp
pv backup-$DATE.tar | gzip > backup-$DATE.tar.gz
mit
tar -c /home/ktt73/Data/001BackUp/tmp/ | pv | pbzip2 -p2 -5 -c > backup-$DATE.tar.bz2
ausgetauscht und natürlich im unteren Bereich die Endungen angepasst. Es läuft zur Zeit durch, sieht gut aus besonders mit der Fortschrittsanzeige 😃. Danke Kinch.

Edit2:

viel schneller ist pbzip2 auch nicht das backup.tar.bz2 ist 2.0GB groß und wurde in 21:05 Minuten erzeugt. Das backup.tar.gz2 ist 2.1GB groß und wurde in 23:15 Minuten erstellt.
Hätte mir da mehr Ersparnis erhofft 😉.
Frohe Ostern zusammen 😃,

habe nun mein Script soweit fertig, bis auf die oben gestellte Frage zum Thema "tar".
KTT73 schrieb Ich bekomme von tar immer folgende Meldung:
tar: Entferne führende "/" von Elementnamen
Was will tar mir sagen? Gefährdet tar damit mein Backup? Wenn ja was kann ich dagegen tun?
Hier mal das soweit fertige Script:
#!/bin/bash

DATE=$(date +%Y-%m-%d-%H%M%S)

cd /

sudo rsync -av --delete --delete-excluded --exclude="/tmp/" --exclude="/sys/" --exclude="/proc/" --exclude="/mnt/" --exclude="/dev/" --exclude="/home/ktt73/Data" --exclude="/home/ktt73/FTP" --exclude="/home/ktt73/Save" --exclude="/home/ktt73/Share" / /home/ktt73/Data/001BackUp/tux_alien

echo
echo -e '\E[36;40m Update erstellt,wechsele in das Backup-Verzeichnis'; tput sgr0
echo

cd /home/ktt73/Data/001BackUp/tux_alien

echo
echo -e '\E[32;40m komprimiere...'; tput sgr0
echo

tar -c /home/ktt73/Data/001BackUp/tux_alien/ | pv | pbzip2 -p2 -5 -c > backup-$DATE.tar.bz2

echo
echo -e '\E[36;40m Archiv erstellt und komprimiert, verschiebe es auf den FTP-Server'; tput sgr0
echo

ftp -n -v 192.168.2.5 << EOT
ascii
user <User> <Passwort>
prompt
cd BackUp
put backup-*
bye
EOT

echo
echo -e '\E[32;40m Backuparchiv auf den Server kopiert, lösche nun lokal das Archiv'; tput sgr0
echo

rm backup-*

echo
echo -e '\E[36;40m !!!Fertig!!! Update liegt im lokalen Backupordner, komprimiertes Archiv ist auf dem FTP-Server gesichert'; tput sgr0
echo
echo -e '\E[32;40m zum Beenden hau auf irgend eine Taste...'; tput sgr0
echo

read taste
Wie ihr seht kopiere ich das gepackte Archiv auf meinen FTP Server. Wie bekomme ich dort während des Uploads eine Fortschrittsanzeige hin? Hab da was mit "tick" gelesen, weiß aber nicht wie ich das integrieren soll.

KTT73
Das mit dem tar ist ein Feature, kein Bug. Bit führendem / hättest du einen absoluten Pfad, und könntest beim Restor auch nur dorthin zurücksichern. Das Entfernen des / macht das Ganze flexibler.