ubuntuusers.de

tar incremental backup

Status: Gelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

Valentin

Anmeldungsdatum:
7. Juni 2006

Beiträge: 14

Wohnort: München

Hallo zusammen ☺

ich versuche meinen Ubuntu LTS server mit inkrementellen backups zu sichern. Dazu habe ich mir ein script gebastelt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
root@wiki:/etc/cron.daily# cat tarbackup
#!/bin/bash
/bin/umount /backup
/bin/umount /backup
/bin/umount /backup
/bin/umount /backup
/bin/mount /backup
sleep 5
/usr/bin/touch /root/backup/start
DAY=$(date +"%a")
LAST=$(cat /root/backup/last-weekly.txt)
NOW=$(date +"%Y-%m-%d")
i=$(date +"%Hh%Mm%Ss")
FILE="wiki-backup-$NOW-$i.tar.gz"
if [ "$DAY" == "Sun" ]; then
echo "doing full backup"
FILE="wiki-full-backup-$NOW-$i.tar.gz"
/bin/rm -rf /root/backup/incremental
/usr/local/bin/tar -cpPzvf /media/1TB/$FILE.tar.gz --one-file-system --exclude-from=/root/backup/exclude -g /root/backup/incremental /
/bin/cp /media/1TB/$FILE.tar.gz /backup/$FILE
/usr/bin/touch /root/backup/last-weekly.txt
else
echo "doing incremental backup"
FILE="wiki-incremental-backup-$NOW-$i.tar.gz"
/usr/local/bin/tar -cpPzvf /media/1TB/$FILE.tar.gz --one-file-system --exclude-from=/root/backup/exclude -g /root/backup/incremental /
/bin/cp /media/1TB/$FILE.tar.gz /backup/$FILE
/usr/bin/touch /root/backup/last-weekly.txt
/bin/umount /backup
fi

/usr/bin/touch /root/backup/stop
sleep 5
/bin/umount /backup
sleep 5
exit 0

Und die dazugehörige exclude list:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
root@wiki:/etc/cron.daily# cat /root/backup/exclude
/proc
/lost+found
/sys
/var/www/backups
/mnt
/media
/dev
/backup
/var/run
/tmp
/cdrom
/backup

Leider macht das script IMMER ein volles backkup :-/

was mache ich falsch?

Ich habe bereits tar neu vom sourcecode compiliert und mittels checkinstall installiert, weil laut https://www.gnu.org/software/tar/#TOCdownloading bei der letzten aktualisierung ein but mit --listed-incremental behoben wurde. Aber auch das hat nicht geholfen.

Für eure hilfe wäre ich sehr dankbar!

Schöne Grüße

Valentin

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

Du hast da eine last-weekly.txt die für überhaupt nichts verwendet wird, soll das so?

Ansonsten sind die tar Aufrufe unter full / incremental identisch, wie soll da ein inkrementelles Backup herauskommen?

Sehr schönes fertiges Script für tar: http://wiki.hetzner.de/index.php/Tartarus_Backup-Konfiguration

Valentin

(Themenstarter)

Anmeldungsdatum:
7. Juni 2006

Beiträge: 14

Wohnort: München

Hallo frostschutz,

danke für deine schnelle Antwort. Der folgende bash code macht den unterschied zwischen dem Vollbackup am Sonntag und den Inkrementellen and den anderen Tagen if .. else .. fi:

1
2
3
4
if [ "$DAY" == "Sun" ]; then
echo "doing full backup"
FILE="wiki-full-backup-$NOW-$i.tar.gz"
/bin/rm -rf /root/backup/incremental

Die Zeile: "rm -rf /root/backup/incremental" entfernt die listed-incremental index datei, wodurch das backup resettet werden soll. Die Zeile wird nur ausgeführt wenn Sonntag ist. Somit fängt der Inkrementelle zyklus jeden Sonntag neu an.

Die last weekley txt sollte ich noch einbinden

– edit –

Ganz übersehen, natürlich hab ich die last-weekley.txt verwendet. Zeile 21

1
/usr/bin/touch /root/backup/last-weekly.txt

Also sagt mir der zeitstemplel der last-weekly.txt wann und ob ein wöchentliches backup gelaufen ist.

– edit end –

Valentin

(Themenstarter)

Anmeldungsdatum:
7. Juni 2006

Beiträge: 14

Wohnort: München

Wenn dir keiner hilft, hilf dir selbst: So gehts jetzt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
root@wiki:/backup# cat /etc/cron.daily/tarbackup
#!/bin/bash
/bin/umount /backup
/bin/umount /backup
/bin/umount /backup
/bin/umount /backup
/bin/mount /backup
sleep 5
/usr/bin/touch /root/backup/start
DAY=$(date +"%a")
LAST=$(cat /root/backup/last-weekly.txt)
NOW=$(date +"%Y-%m-%d")
i=$(date +"%Hh%Mm%Ss")
FILE="wiki-backup-$NOW-$i.tar.gz"
if [ "$DAY" == "Sun" ]; then
echo "doing full backup"
FILE="wiki-full-backup-$NOW-$i.tar.gz"
/bin/rm -rf /root/backup/incremental
/usr/local/bin/tar -cpzvf /media/1TB/$FILE.tar.gz --no-check-device --one-file-system --exclude-from=/root/backup/exclude --listed-incremental=/root/backup/incremental /
/bin/cp /media/1TB/$FILE.tar.gz /backup/$FILE
/usr/bin/touch /root/backup/last-weekly.txt
else
echo "doing incremental backup"
FILE="wiki-incremental-backup-$NOW-$i.tar.gz"
/usr/local/bin/tar -cpzvf /media/1TB/$FILE.tar.gz --one-file-system --no-check-device --exclude-from=/root/backup/exclude --listed-incremental=/root/backup/incremental /
/bin/cp /media/1TB/$FILE.tar.gz /backup/$FILE
/usr/bin/touch /root/backup/last-weekly.txt
/bin/umount /backup
fi

/usr/bin/touch /root/backup/stop
sleep 5
/bin/umount /backup
sleep 5
exit 0

&

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
root@wiki:/backup# cat /root/backup/exclude
/proc
/lost+found
/sys
/var/www/backups
/mnt
/media
/dev
/backup
/var/run
/tmp
/cdrom
/backup
root@wiki:/backup#

Kurze dialektik: Warum antworte ich überhaput? → Dokumentation → evtl. hilfts jemandem. Ah ok 😉

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

Und solls nun gelegen haben? An -P oder an --no-check-device? Der Rest ist ja gleich geblieben.

Und wieso eigentlich /usr/local/bin/tar?

Kommt mir alles etwas komisch vor. ☺ Aber wenns funktioniert...

Valentin

(Themenstarter)

Anmeldungsdatum:
7. Juni 2006

Beiträge: 14

Wohnort: München

Natürlich kommt dir das komisch vor, wenn du nur die hälfte liest ^^

/usr/local/bin .. weil ich die neueste tar version von source compiliert habe um bugfixes von listed incremental drin zu haben .. siehe erster post.

der entscheidende punkt war -g /some/dir im vergleich zu --listed-incremental=/some/dir

-g .. old unix style incremental list

--listed-incremental new style ...

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

Valentin schrieb:

Natürlich kommt dir das komisch vor, wenn du nur die hälfte liest ^^

Ich höre bei dir so einen Unterton daß dir nicht geholfen wurde, das liegt einfach daran daß ich für dein Problem keine Lösung bzw. Idee parat hatte bzw. den Fehler nicht gesehen hab und deine Lösung dazu leuchtet mir bis jetzt auch nicht ein. ☺

Du machst es einem auch nicht leicht. Ich habe mir deine beiden Scripte rauskopiert und mit diff verglichen, um überhaupt zu sehen, was du verändert hast. Geschrieben hast du das ja nicht und ohne Einrückung etc. ist das Script auch nicht so leserlich.

-g .. old unix style incremental list

--listed-incremental new style ...

Also das wär natürlich extrem fies, in der Manpage steht es so drin als sei es ein und dasselbe. Bei meinem tar ist der old style mit -G designiert.

       -g, --listed-incremental SNAPSHOT
              create/list/extract new GNU-format incremental backup

tar --help ebenso

  -g, --listed-incremental=FILE   handle new GNU-format incremental backup
  -G, --incremental          handle old GNU-format incremental backup

Ich sitze hier gerade an einem Gentoo mit GNU tar 1.26... kann also nicht sagen ob das bei Ubuntu bzw. dir anders ist.

Valentin

(Themenstarter)

Anmeldungsdatum:
7. Juni 2006

Beiträge: 14

Wohnort: München

Den Unterton hast du richtig erkannt 😛

Meiner erfahrung nach bringen foren einträge leider nicht viel. Im IRC hatte ich öfters erfolg, aber meistens auch dort nicht. Einrücken sollte ich mir angewöhnen, das stimmt. Evtl muss ich mal vim etwas erweitern, so dass es als vollwertige bash ide zu gebrauchen ist.

Mit -g und -G hast du auch recht. So ganz hab ich auch noch nicht verstanden warum nun alles läuft. Aber es läuft, und du hast es nicht repariert 😉 Damit hier nicht nur sinnlos Buchstaben verschwendet werden, lass uns doch gemeinsam erarbeiten warum die eine variante nicht geht und die anere schon.

Irgendwelche Ideen frostschutz (Gentoo Guru)? 😀

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

Valentin schrieb:

So ganz hab ich auch noch nicht verstanden warum nun alles läuft. Aber es läuft, und du hast es nicht repariert 😉

Belassen wir's dabei. Wenn es nicht funktioniert kann man sich ja wieder einen Kopp drum machen 😉

Antworten |