Backup einzelner Verzeichnissse auf 2 Festplatte

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 01.06.2005 01:20:55

Hallo Ely,
mein letztes "Angebot" ist:

Code: Alles auswählen

#!/bin/bash

DATUM=$(date '+%d.%m.%Y')
SAVEDIR=var/www
NAME=www-apache
ZIELVERZ=/mnt/backup  

# /bin/tar ... in einer Zeile...
/bin/tar -cjf $ZIELVERZ/$DATUM-$NAME.tar.bz2  -C / $SAVEDIR

for i in `ls -1t $ZIELVERZ *$NAME* | sed -n '5,$p'`
do
 rm -f $ZIELVERZ/$i
done 
...wenn das weiterhin nicht funktioniert weiß ich nicht mehr weiter :wink:

Gruß fuzzy
Zuletzt geändert von fuzzy am 01.06.2005 11:40:26, insgesamt 1-mal geändert.

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 01.06.2005 11:08:04

:(

:~# bash /root/backup
: command not found
: command not found
: command not found
: command not found
: command not found
: command not found
/bin/tar: \r: Cannot stat: No such file or directory
/bin/tar: Error exit delayed from previous errors
: command not found
'root/backup: line 13: syntax error near unexpected token `
'root/backup: line 13: `done

Na ja danke das ihr es probiert habt.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 01.06.2005 11:12:21

bitte nimm das das Skript wie folgt:

Code: Alles auswählen

#!/bin/bash

DATUM=$(date '+%d.%m.%Y')
SAVEDIR=/var/www
NAME=www-apache
ZIELVERZ=/mnt/backup

/bin/tar cjf $ZIELVERZ/$DATUM-$NAME.tar.bz2  $SAVEDIR/*

for i in `ls -1t $ZIELVERZ *$NAME* | sed -n '5,$p'`
do
 rm -f "$ZIELVERZ/$i"
done
und führe es so aus:

Code: Alles auswählen

bash -x /root/backup
und poste mal bitte das Ergebnis..

ach ja.. ein

Code: Alles auswählen

ls -l /var/www/*
wäre auch schön!
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 01.06.2005 12:00:41

Hmmm keine Ahnung was er da macht. Aber es scheint nicht gut zu sein :?
:~# bash -x /root/backup
+
: command not found
++ date +%d.%m.%Y
+ DATUM=01.06.2005
+
: command not found
+ SAVEDIR=/var/www
+
: command not found
+ NAME=www-apache
+
: command not found
+ ZIELVERZ=/mnt/backup
+
: command not found
+
: command not found
+ /bin/tar cjf /-.tar.bz2 /bin /boot /dev /etc /home /lib /lost+found /mnt /opt /proc /quota.user /root /sbin /shoutcast /tmp /usr /var
/bin/tar: Removing leading `/' from member names
/bin/tar: /dev/log: socket ignored
/bin/tar: /proc/2/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/3/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/4/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/5/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/6/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/29/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/101/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/13064: Cannot stat: No such file or directory
/bin/tar: /proc/13066: Cannot stat: No such file or directory
/bin/tar: /proc/13225: Cannot stat: No such file or directory
/bin/tar: /proc/13234: Cannot stat: No such file or directory
/bin/tar: /proc/13235: Cannot stat: No such file or directory
/bin/tar: /proc/13236: Cannot stat: No such file or directory
/bin/tar: /proc/13245/fd/3: Cannot stat: No such file or directory
/bin/tar: /var/run/mysqld/mysqld.sock: socket ignored
/bin/tar: /var/spool/postfix/private/rewrite: socket ignored
/bin/tar: /var/spool/postfix/private/bounce: socket ignored
/bin/tar: /var/spool/postfix/private/defer: socket ignored
/bin/tar: /var/spool/postfix/private/smtp: socket ignored
/bin/tar: /var/spool/postfix/private/error: socket ignored
/bin/tar: /var/spool/postfix/private/local: socket ignored
/bin/tar: /var/spool/postfix/private/virtual: socket ignored
/bin/tar: /var/spool/postfix/private/lmtp: socket ignored
/bin/tar: /var/spool/postfix/private/cyrus: socket ignored
/bin/tar: /var/spool/postfix/private/uucp: socket ignored
/bin/tar: /var/spool/postfix/private/ifmail: socket ignored
/bin/tar: /var/spool/postfix/private/bsmtp: socket ignored
/bin/tar: /var/spool/postfix/private/scalemail-backend: socket ignored
/bin/tar: /var/spool/postfix/public/cleanup: socket ignored
/bin/tar: /var/spool/postfix/public/flush: socket ignored
/bin/tar: /var/spool/postfix/public/showq: socket ignored
Es wird auch nicht ins Verzeichniss /mnt/backup geschrieben sondern in /

ls -l /var/www/* ergibt dieses:

Ich habe es gekürzt das es ziiiiiiiiiiiiiiiiiemlich lang ist :)
/var/www/empty:
total 0

/var/www/web0:
total 28
drwxr-x--- 2 root www-data 4096 Nov 28 2004 atd
drwxr-x--- 2 root web0 4096 Nov 28 2004 backup
drwxr-x--- 2 web0 www-data 4096 Nov 28 2004 files
drwxr-x--- 3 web0 www-data 4096 Nov 28 2004 html
drwxr-x--- 3 root web0 4096 May 31 02:01 log
drwxrwx--- 2 web0 www-data 4096 Nov 28 2004 phptmp
drwxrwx--- 2 root web0 4096 Nov 28 2004 restore

/var/www/web1:
total 28
drwxr-x--- 2 root www-data 4096 May 25 13:18 atd
drwxr-x--- 2 root web1 4096 May 30 11:22 backup
drwxr-x--- 2 web1 www-data 4096 May 25 13:18 files
drwxr-x--- 4 web1 www-data 4096 May 31 20:38 html
drwxr-x--- 3 root web1 4096 May 31 02:01 log
drwxrwx--- 2 web1 www-data 4096 May 25 13:18 phptmp
drwxrwx--- 2 root web1 4096 May 25 13:18 restore

/var/www/web10:
total 28
drwxr-x--- 2 root www-data 4096 May 25 14:04 atd
drwxr-x--- 2 root web10 4096 May 25 14:04 backup
drwxr-x--- 2 web10 www-data 4096 May 25 14:04 files
drwxr-x--- 3 web10 www-data 4096 May 25 14:04 html
drwxr-x--- 3 root web10 4096 May 31 02:01 log
drwxrwx--- 2 web10 www-data 4096 May 25 14:04 phptmp
drwxrwx--- 2 root web10 4096 May 25 14:04 restore

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 01.06.2005 12:18:42

ähm, da läuft etwas total schief... welches Debian nutzt du?

welche Bash version hast du installiert?

IST es wirklich eine Bash?

Code: Alles auswählen

ls -l /bin/bash
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 01.06.2005 12:22:28

Debian Woody habe ich drauf.

t159:~# ls -l /bin/bash
-rwxr-xr-x 1 root root 511400 Apr 8 2002 /bin/bash
t159:~#

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 01.06.2005 12:36:50

hmm.. mach mal auf der Konsole:

Code: Alles auswählen

$ MEINEVARIABLE=zehn
und sag ob er dabei einen Fehler ausspuckt
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 01.06.2005 13:04:55

Hallo Ely,
sorry, wenn ich es auch noch komplizierter mache :wink:
Ich hatte meine Version auch mit woody getestet...

was passiert, wenn Du einfach in der Konsole (in einer Zeile) folgendes eingibst:

Code: Alles auswählen

/bin/tar -cjf /mnt/backup/var-www-$(date -I).tar.bz2  -C /  var/www
...hoffentlich sind da keine Flüchtigkeitsfehler drin...

Gruß fuzzy

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 01.06.2005 13:13:36

Savar hat geschrieben:hmm.. mach mal auf der Konsole:

Code: Alles auswählen

$ MEINEVARIABLE=zehn
und sag ob er dabei einen Fehler ausspuckt
t159:~# $ MEINEVARIABLE=zehn
bash: $: command not found
t159:~#

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 01.06.2005 13:17:03

naja.. das Dollar Zeichen solltest du nicht machen.. sollte bloss aussagen, dass du ein Behl eingibst..

also gib bitte DAS auf der Konsole ein:

Code: Alles auswählen

MEINEVARIABLE=zehn
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 01.06.2005 15:13:38

Nein, es kommt keine Fehlermeldung

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 01.06.2005 15:31:35

hast du das von fuzzy auch noch versucht?
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 01.06.2005 15:51:32

Ja habe ich und ich versuche es gerade noch auf die altherkömmliche Art und Weise und meine einen Fehler gesehen zu haben.

Also bei Fuzzy´s Lösung wird ein Archiv angelegt und dieses auch gepackt. Es scheint als ob es an die Größe heran kommt, die es haben müsste 660 MB. Aber, wenn ich dies nun via MC einsehen möchte, erhalte ich eine Fehlermeldung:

hm,...
/mnt/backup/var-www-2005-06-01.tar.bz2
dosen´t look like a tar archive.

Nun habe ich es noch mal anders versucht um etwaige Fehler auszuschliesen und habe erst:

Code: Alles auswählen

tar cfv www.tar www/
und dann

Code: Alles auswählen

gzip www.tar
Ich meine beim Ausführen des tar Befehl am Ende eine Fehlermeldung gesehen zu haben. Ich bin mir aber nicht sicher, da es zu schnell ging. Ist es möglich, das ich den Befehl ausführe und gleichzeitig protokolieren lasse in einer txt Datei was passiert? So dass eventuell ein Fehler mit aufgezeichnet wird?

Na auf jeden Fall hat dies so geklappt und ich habe eine Datei von 669MB erhalten. Also 9 MB mehr. Kann natürlich an den verschiedenen Packformate liegen.....?! Eine Fehlermeldung erhalte ich nicht wenn ich Sie via MC öffnen möchte.
Zuletzt geändert von Ely am 01.06.2005 16:01:27, insgesamt 1-mal geändert.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 01.06.2005 15:55:45

mc kann wahrscheinlich nicht in ein mit bzip2 komprimierten Tar Archiv reinschauen..

Code: Alles auswählen

tar tvjf DEINEDATEI
zeigt dir auch den Inhalt an...
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 01.06.2005 16:01:02

Ja damit konnte ich nun reinsehen.

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 01.06.2005 18:21:35

Ely hat geschrieben: hm,...
/mnt/backup/var-www-2005-06-01.tar.bz2
dosen´t look like a tar archive.

Nun habe ich es noch mal anders versucht um etwaige Fehler auszuschliesen und habe erst:

Code: Alles auswählen

tar cfv www.tar www/
und dann

Code: Alles auswählen

gzip www.tar
Sorry, da habe ich Dich nicht verstanden :roll:
Hier eine kleine "tar-Folge" und danach mit "file" angesehen :wink:

Code: Alles auswählen

sid:/tmp# tar cf /tmp/var-www.tar -C / var/www
sid:/tmp# tar cf /tmp/var-www02.tar -C / var/www
sid:/tmp# gzip var-www02.tar 
sid:/tmp# tar czf /tmp/var-www.tar.gz -C / var/www
sid:/tmp# tar cjf /tmp/var-www.tar.bz2 -C / var/www
sid:/tmp# ls
var-www02.tar.gz  var-www.tar  var-www.tar.bz2  var-www.tar.gz
sid:/tmp# file *
var-www02.tar.gz: gzip compressed data, was "var-www02.tar", from Unix
var-www.tar:      POSIX tar archive
var-www.tar.bz2:  bzip2 compressed data, block size = 900k
var-www.tar.gz:   gzip compressed data, from Unix
Gruß fuzzy

[edit]
diese *.tar* Dateien mit dem passenden entpackt, sollten den gleichen Inhalt habe wie "/var/www/..."
[/edit]

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 01.06.2005 19:38:45

Ja fuzzy,

es scheint ja zu funktionieren. Ich war halt nur verwundert, da ich via mc das file nicht ansehen konnte und auf der anderen seite meine einen fehler gesehen zu haben. Aber dieses ist wohl hinfällig und Dein Befehl scheint problemlos zu funktionieren.

Nur wie bekommen wir das nun ins Script so das es funktioniert?

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 01.06.2005 21:06:11

Hallo Ely,
eine mögliche Idee :wink:
Ich hoffe, diese Version ist "für dem Moment" fehlerunanfälliger.

Code: Alles auswählen

#!/bin/bash

/bin/tar -cjf /mnt/backup/$(date -I)-www-apache.tar.bz2  -C / var/www

/usr/bin/find /mnt/backup/ -name '*-www-apache.tar.bz2' -mtime +4 | /usr/bin/xargs -r /bin/rm
Die letzte Zeile kannst Du aus Sicherheitsgründen erstmal weglassen...
Es ist eine Zeile "/usr/bin/find .../bin/rm" - damit es da keine Verwirrung gibt.

Gruß fuzzy

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 01.06.2005 23:00:51

wow

das Problem scheint gelöst. Savar hat sich der Problematik direkt auf dem Server gewidmet und scheinbar ist es gelöst.

Hier nochmal das Script falls es von jemanden benötigt wird:

Code: Alles auswählen

#!/bin/bash

DATUM=$(date '+%d.%m.%Y') 
SAVEDIR=/var/www 
NAME=www-apache 
ZIELVERZ=/mnt/backup 

/bin/tar cjf $ZIELVERZ/$DATUM-$NAME.tar.bz2  $SAVEDIR/* 

for i in `ls -1t $ZIELVERZ/*$NAME* | sed -n '5,$p'` 
do 
 rm -f "$ZIELVERZ/$i"
done
Vielen Danke an Savar und fuzzy für Ihre Hilfe und gedult, die ja nun Tagelang versucht haben zu helfen.

Ely

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 06.06.2005 10:44:19

Leider ist scheinbar doch noch nicht alles gelöst.

Das löschen funktioniert nicht. Ich habe nun Backups der letzten 6 Tage. Es dürften aber nur 4 vorhanden sein, wenn ich das Script richtig verstehe.

Wo liegt der Fehler?

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 06.06.2005 16:36:41

Hallo Ely,
nach ein wenig Probieren kommt bei mir diese Fehlermeldung:

Code: Alles auswählen

/bin/rm: cannot remove `/mnt/backup//mnt/backup/06.06.2005-www-apache.tar.bz2': No such file or directory
Ich vermute durch "$ZIELVERZ/$i" wird das "ZIELVERZ" doppelt auf gerufen etc.
...in diesem zweiten Teil bin ich nicht Sattelfest :wink:

Hier nochmal meine Lösung - da klappt auch der zweite Teil bei mir gut :wink:

Code: Alles auswählen

#!/bin/bash

DATUM=$(date '+%d.%m.%Y')
SAVEDIR=/var/www
NAME=www-apache
ZIELVERZ=/mnt/backup

/bin/tar cjf $ZIELVERZ/$DATUM-$NAME.tar.bz2  $SAVEDIR/*

/usr/bin/find $ZIELVERZ/ -name '*-$NAME.tar.bz2' -mtime +3 | /usr/bin/xargs -r /bin/rm      
(Von "/usr/bin/find ...bis /bin/rm" alles in einer Zeile)
...keine Garantie, bitte sichere Dir ein Backup noch an eine andere Stelle, falls etwas schief geht!

Gruß fuzzy

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 06.06.2005 18:03:01

ups.. danke fuzzy.. du hast mir meinen Fehler bewusst gemacht.. das Skript muss so lauten:

Code: Alles auswählen

#!/bin/bash

DATUM=$(date '+%d.%m.%Y')
SAVEDIR=/var/www
NAME=www-apache
ZIELVERZ=/mnt/backup

/bin/tar cjf $ZIELVERZ/$DATUM-$NAME.tar.bz2  $SAVEDIR/*

for i in `ls -1t $ZIELVERZ/*$NAME* | sed -n '5,$p'`
do
 rm -f "$i"
done 
das $ZIELVERZ war falsch, da ja der Befehl
ls -1t $ZIELVERZ/*$NAME* | sed -n '5,$p'
immer als Ausgabe einen absoluten Pfad zur Datei hat und daher der Pfad doppelt drin war..
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 06.06.2005 18:58:05

Ich habe noch einen Tipp erhalten wie man es wohl auch machen kann. Ich weiß dies zwar nicht umzusetzten (wie, wo an welcher Stelle etc.) aber Ihr versteht das bestimmt.
Warum verwendest zu zum löschen nicht einfach eine Kombination aus find und rm?

Code: Alles auswählen

find $ZIELVERZ -cmin +5760 -exec rm "{}" \;
Ich teste jetzt mal Eure beiden Versionen. Vielleicht könnt Ihr mit dem Tip ja noch etwas anfangen.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 06.06.2005 19:06:39

nein das mit dem "find" bringt dir nichts, da wenn du z.B. durch einen Fehler 4 Tage keine Sicherung bekommen hast, dann löscht find trotzdem alles.. bei unserer Variante hast du AUF JEDEN FALL noch 3 Backups..
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 06.06.2005 19:26:18

Hallo Savar,
äh ich habe zwischendurch immer wieder mal eine "find"-Lösung zum löschen dabeigehabt :roll:
...das "find"-Gegenargument ist wirklich eine Überlegung Wert :wink:

Gruß fuzzy

Antworten