Sie sind nicht angemeldet.

1

13.12.2009, 22:37

Backup script hilfe benötigt

Guten Abend.

Bin mir nicht sicher ob das das richtige forum ist. Wenn nicht - bitte verschieben. Habe ein backup script erstellt, das funktioniert aber nicht.

Script:

Quellcode

1
2
3
4
tar czf /home/backup/home-back.tar.gz /home/tarik/DOKUMENTE/ &&
mkisofs -o /home/backup/home-back.iso -U -J -R -f /home/backup/home-back.tar.gz &&
cdrecord -v -multi driveropts=burnfree -nofix -eject dev= ,2:0:0:0,/dev/sr0 /home/backup/home-back.iso &&
rm -f /home/backup/home-back.*
Fehlermeldung:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
tar: removing leading `/' from member names
Warning: creating filesystem that does not conform to ISO-9660
Warning: -follow-links does not always work correctly; be carefull.
I: -input-charset not specified, using utf-8 (detected in locale settings)
Total translation table size: 0
Total rockridge attributes bytes: 257
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
183 extents written (0 MB)
wodim: no write mode specified.
wodim: assuming -tao mode
wodim: Future versions of wodim may have different drive dependent defaults.
wodim: different argument.
Cannot open SCSI driver!
For possible targets try 'wodim --devices' or 'wodim -scanbus'.
For possible transport specifiers try 'wodim dev=help'.
For IDE/ATAPI devices configuration, see the file README.ATAPI.setup from the wodim documentation.
Der Brenner ist ein SATA Brenner. LSCSI Ausgabe:

Quellcode

1
2
3
...
[2:0:0:0]    cd/dvd  HL-DT-ST DVDRAM GH22NS50  TN01  /dev/sr0
...
aber

Quellcode

1
wodim --device
sagt "scd0", aber auch das verändert nichts.

Was mache ich falsch ?

2

14.12.2009, 07:42

RE: Backup script hilfe benötigt

Das sieht irgdendwie komisch aus:

Zitat

Original von wums4all

Quellcode

1
2
[...]
cdrecord [...] dev= ,2:0:0:0,/dev/sr0 [...]

Mit komisch meine ich, dass ich das noch nie mit einem Leerzeichen zwischen "dev=" und dem danach gesehen habe und das Komma ganz am Anfang ist mir auch neu und warum sind da mehrere Sachen? Komma ist doch auch nicht das Trennzeichen für mehrere Devices, sondern für Adress-Segmente, oder?

3

14.12.2009, 08:09

Habe das Problem gelöst. Danke für den Hinweis. Hier das veränderte Script:

Quellcode

1
2
3
4
tar czf /home/backup/home-back.tar.gz /home/tarik/DOKUMENTE/ &&
mkisofs -o /home/backup/home-back.iso -U -J -R -f /home/backup/home-back.tar.gz &&
cdrecord -v -multi driveropts=burnfree -nofix -eject dev= /dev/scd0 /home/backup/home-back.iso &&
rm -f /home/backup/home-back.*


Falls es jemand mal brauchen sollte. Es gibt immer noch paar Fehlermeldungen bzw. Warnungen, aber es funktioniert nun.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »wums4all« (14.12.2009, 08:09)


4

14.12.2009, 08:51

Ok, jetzt habe ich ein anderes Scriptproblem, das soll die gesamte Partition md0 brennen soll.

Quellcode

1
2
3
4
5
mkisofs -o /home/backup/linux-back.iso -l /dev/md0
mkisofs -U -J -R -f -o /home/backup/linux-back.iso /home/backup/linux-back.tar.gz

tar czf /home/backup/linux-back.tar.gz /dev/md0/ && mkisofs -o /home/backup/linux-back.iso -U -J -R -f /home/backup/linux-back.tar.gz &&
cdrecord -v -multi driveropts=burnfree -nofix dev=/dev/scd0 /home/backup/linux-back.iso && rm -f /home/backup/linux-back.*


Es werden aber nur 122bytes gebrannt in einem tar.gz archiv, daß eine leere Datei "md0" enthält.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »wums4all« (14.12.2009, 08:52)


5

14.12.2009, 10:06

Gehen wir das mal durch:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Also, das erzeugt ein ISO-Image mit nur dem Deice-Node /dev/md0 drin
mkisofs -o /home/backup/linux-back.iso -l /dev/md0

# Das macht gar nix.
# (Es würde die zuvor erzeugte Datei mit einem neuen Image, das nur die Datei linux-back.tar.gz enthält, überschreiben, doch die Datei existiert zu diesem Zeitpunt noch gar nicht, daher passiert nix.
# Die Datei existiert nicht, da sie am Ende gelöscht wird.)
mkisofs -U -J -R -f -o /home/backup/linux-back.iso /home/backup/linux-back.tar.gz

# Das erzeugt ein tar-Archiv mit nur dem Device-Node /dev/md0 drin.
# Bei Erfolg überschreibt es die zuvor erzeugte Datei mit einem neuen Image, das nur das Archiv enthält.
# Bei Erfolg Versucht es das Image zu brennen.
# Bei Erfolg löscht es alle zuvor erstellten Dateien
tar czf /home/backup/linux-back.tar.gz /dev/md0/ && mkisofs -o /home/backup/linux-back.iso -U -J -R -f /home/backup/linux-back.tar.gz &&
cdrecord -v -multi driveropts=burnfree -nofix dev=/dev/scd0 /home/backup/linux-back.iso && rm -f /home/backup/linux-back.*


Daraus geht klar hervor, dass das Script hautsächlich Blödsinn enthält. Vor allem verwechselst Du das Device-Node mit dem Inhalt eines Block-Device. Das Device-Node ist bloß eine Spezial-Datei, durch die man an den Inhalt heran kommt. Wenn Du diese ins Backup speicherst, dann speicherst Du nicht den Inhalt, sondern nur den Verweis darauf...

Hinzu kommt, das man den Inhalt eines Block-Device nicht noch mit tar archivieren braucht, weil sämtlich relevante Infos für ein Restore bereits in diesen Roh-Daten enthalten wäre.

Wenn Du tatsächlich diese Daten sichern willst, dann solltest Du mit dd ein Image davon erzeugen (kann man auch z.B. mit gzip oder bzip2 gleich komprimieren), welches Du wiederum als Datei in ein ISO-Image tun kannst, aber dazu sollte das Block-Device nicht (schreibbar) gemountet sein!
Ansnonsten musst Du tar auf das gemountete Verzeichnis anwenden. (Siehe auch "man tar" bei "--one-file-system".)

6

14.12.2009, 12:42

Ok, ich hab das Script überarbeitet. Und es funktioniert. Allerdings brenne ich jetzt nicht die Partition - weil es zu groß wäre - sondern nur und alleine die einzelnen Verzeichnisstrukturen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
tar -cvzf /home/backup/linux-back1.tar.gz /root && 
tar -cvzf /home/backup/linux-back2.tar.gz /etc && 
tar -cvzf /home/backup/linux-back3.tar.gz /usr && 
tar -cvzf /home/backup/linux-back4.tar.gz /sbin && 
tar -cvzf /home/backup/linux-back5.tar.gz /bin && 
tar -cvzf /home/backup/linux-back6.tar.gz /boot && 
tar -cvzf /home/backup/linux-back7.tar.gz /lib && 
tar -cvzf /home/backup/linux-back8.tar.gz /lib64 && 
tar -cvzf /home/backup/linux-back9.tar.gz /var/log && 
tar -cvzf /home/backup/linux-back10.tar.gz /srv && 
tar -cvzf /home/backup/linux-back11.tar.gz /var/spool && 
tar -cvzf /home/backup/linux-back12.tar.gz /opt && 
tar -cvzf /home/backup/linux-backH.tar.gz /home/golum && 
mkisofs -o /home/backup/linux-backWkl.iso -U -J -R -f /home/backup/linux-back*.tar.gz && 
cdrecord -v -multi driveropts=burnfree -nofix dev=/dev/scd0 /home/backup/linux-backWkl.iso && 
rm -f /home/backup/linux-back*


Und das geht. Ich würde aber gerne noch davor automatisch ein Verzeichnis auf der DVD anlegen, wo ich die aktuellen Daten speichere. Denn es sind nur 600MB und dafür ist eine ganze DVD zu verschwenden schon fast zu schade. Das Verzeichnis sollte einen Namen wie z.B. "backup-TT-MM-YY-UHRZEIT" haben. Kannst du mir eine Stellungshilfe dafür geben? Ich bin ein blutiger *gg* Anfänger im Bereich Shellscripting.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »wums4all« (14.12.2009, 12:44)


strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

8

14.12.2009, 14:23

Quellcode

1
mkdir backup-`date +"%m-%d-%Y-%T"`

Wieso nicht rsyn(1)? Zu einfach?
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

9

14.12.2009, 14:58

Ok, aber ich muss das noch an eine Variable übergeben nicht wahr? Damit ich diese Variable für die Pfadangaben nutzen kann.

Ich habe so versucht:

Quellcode

1
2
mkdir backup-`date +"%m-%d-%Y-%T"`
$folder = /home/backup/backup-`date +"%m-%d-%Y-%T"`


Dann habe ich die Variable verwenden wollen:

Quellcode

1
2
3
4
tar -cvzf /home/backup/$folder/linux-backH.tar.gz /home/golum && 
mkisofs -o /home/backup/linux-backWkl.iso -U -J -R -f /home/backup/$folder/linux-back*.tar.gz && 
cdrecord -v -multi driveropts=burnfree -nofix dev=/dev/scd0 /home/backup/linux-backWkl.iso && 
rm -rf /home/backup/*


Das geht so aber nicht.

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

10

14.12.2009, 15:18

Verständlich; das mit mkdir(1) erstellte Verzeichnis hat einen anderen Namen als das unter $folder. Liegt daran das %T die Sekunden in dem Timestamp enthält. Poste mal das ganze Script, weil das sonst nur ein einziges Bugfix'en wird.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

11

14.12.2009, 15:41

Quellcode

1
2
3
4
5
6
7
mkdir backup-`date +"%m-%d-%Y-%T"`
$folder = /home/backup/backup-`date +"%m-%d-%Y-%T"`

tar -cvzf /home/backup/$folder/linux-backH.tar.gz /home/golum && 
mkisofs -o /home/backup/linux-backWkl.iso -U -J -R -f /home/backup/$folder/linux-back*.tar.gz && 
cdrecord -v -multi driveropts=burnfree -nofix dev=/dev/scd0 /home/backup/linux-backWkl.iso && 
rm -f /home/backup/linux-back*


Da isser... :keineahnung:

12

14.12.2009, 22:54

Zitat

Original von wums4all

Quellcode

1
2
mkdir backup-`date +"%m-%d-%Y-%T"`
$folder = /home/backup/backup-`date +"%m-%d-%Y-%T"`
Da ist erstmal das "$" falsch.
Außerdem vermeidest Du Fehler, indem Du die Variable erst setzt und sie dann auch für das mkdir benutzt, z.B. so:

Quellcode

1
2
directory="/home/backup/backup-$(date +%m-%d-%Y-%T)"
mkdir "$directory"
Ich schlage aber noch vor +%Y-%m-%d-%H-%m-%S zu benutzen, weil dann kann man noch über den Dateinamen sortieren, wenn die Zeitstempel des Dateisystems verloren gegangen sind. Das ist dann auch für manche Leute einfacher zu lesen. Ist aber eigentl. Geshmackssache.

13

15.12.2009, 14:56

Ich habe jetzt mein script so umgeschrieben:

Quellcode

1
2
3
4
FOLDER="/home/backup/backup-$(date +%Y-%m-%d-%H.%M)"
mkdir "$FOLDER"

tar -cvzf /home/backup/$FOLDER/linux-back1.tar.gz /home/robo/meinedaten && mkisofs -o /home/backup/linux-back1.iso -U -J -R -f /home/backup/$FOLDER/linux-back*.tar.gz && cdrecord -v -multi driveropts=burnfree -nofix dev=/dev/scd0 /home/backup/linux-back1.iso


Der Ordner wird damit erstellt. Aber ich bekomme dann solche Fehlermeldungen wenn das Script startet und tar anläuft:

Quellcode

1
2
3
4
5
6
7
8
9
10
tar: Removing leading `/' from member namestar:
/home/backup/backup-2009-12-15-12.41/linux-back1.tar.gz: Cannot open/home/robo/meinedaten/
: no such file or directory/home/robo/meinedaten/foto1.jpg

tar: /home/robo/meinedaten/liste
Error is not recoverable: exiting now/home/robo/meinedaten/liste2

/home/robo/meinedaten/pic23.jpg
/home/robo/meinedaten/pic25.jpg
/home/robo/meinedaten/pic26.jpg

14

15.12.2009, 16:19

Schau dir doch mal genauer deinen tar befehl an....

Korrigiert sollte dein Script so aussehen:

Quellcode

1
2
3
4
5
6
7
8
#!/bin/sh

FOLDER="/home/backup/backup-$(date +%Y-%m-%d-%H.%M)"
mkdir "$FOLDER"

tar -cvzf $FOLDER/linux-back1.tar.gz /home/robo/meinedaten && mkisofs -o /home/backup/linux-back1.iso -U -J -R -f $FOLDER/linux-back*.tar.gz && cdrecord -v -multi driveropts=burnfree -nofix dev=/dev/scd0 /home/backup/linux-back1.iso

#EOF
for Windows problems: reboot
for Linux problems: be root

15

15.12.2009, 18:19

Ok, sorry - mein Fehler. Irgendwie hätte ich jetzt gerne, daß der ganze Ordner "$FOLDER" gebrannt wird. Denn es wird nur der Inhalt gebrannt. Ich habe das Brennkommando so stehen:

Quellcode

1
tar -cvzf $FOLDER/linux-back1.tar.gz /home/robo/meinedaten && mkisofs -o /home/backup/linux-back1.iso -U -J -R -f $FOLDER && cdrecord -v -multi driveropts=burnfree -nofix dev=/dev/scd0 /home/backup/linux-back1.iso

16

16.12.2009, 02:20

Dann könntest Du's etwa so machen:

Quellcode

1
2
3
4
5
6
7
BASEDIR='/home/backup/linux-back-isofsroot/';
WORKDIR="${BASEDIR}backup-$(date +%Y-%m-%d-%H.%M)";
mkdir -p "$WORKDIR";

tar -cvzf "$WORKDIR/linux-back1.tar.gz" /home/robo/meinedaten && \
mkisofs -o /home/backup/linux-back1.iso -U -J -R -f "$BASEDIR" && \
cdrecord -v -multi driveropts=burnfree -nofix dev=/dev/scd0 /home/backup/linux-back1.iso

17

16.12.2009, 14:03

Danke schön, das hat funktioniert! :+++:

Allerdings habe ich jetzt festgestellt (habe cron das script alle 3 Minuten ausführen lassen), daß die DVD jedesmal komplett neugeschrieben wird. Also habe ich immer nur einen Ordner, die alten backups werden von der DVD gelöscht. Das liegt wohl an mkisofs - es kann keine neuen sessionen (so wie jetzt eingestellt zumindest) erzeugen. Oder sollte ich auf mkisofs gleich verzichten?

Ich versuchs schon mal, wenn jemand aber eine Erklärung hat, kann sie trotzdem schreiben.

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »wums4all« (16.12.2009, 14:15)


18

16.12.2009, 16:23

Also ich habe versucht das zu lösen, das Archiv (vorletzte Zeile) wird auch erstellt, dann wird es aber nicht gebrannt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
rm -rf /home/backup/*;
umount /dev/cdrom;

BASEDIR='/home/backup/';
WORKDIR="${BASEDIR}backup-$(date +%Y-%m-%d.%H:%M)";
NAME="saved-at-$(date +%Y-%m-%d-%H.%M)";
mkdir -p "$WORKDIR";

tar -cvzf "$WORKDIR/back-1.tar.gz" /home/robo;

sleep 1;
cd $BASEDIR
tar -cvzf "$NAME.tar.gz" "$WORKDIR" && \
cdrecord -v -multi -fs=2 speed=8 driveropts=burnfree -nofix dev=/dev/scd0 "$NAME.tar.gz";


Am Ende der Ausgabe - nachdem Brennen, kommt so eine Meldung:

Quellcode

1
2
3
4
5
Track 01: Total bytes read/written: 733325312/733325312 (358069
sectors). Writing  time: 16.454s
Average write speed   0.1x.
Min drive buffer fill was 0%
Total of 1 possible drive buffer underruns predicted.


Das wird was damit zu tun haben. Vorher war es nicht da.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »wums4all« (16.12.2009, 16:35)


19

17.12.2009, 11:24

Die DVD ist eine DVD-RW+ - falls das relevant ist...

Das andere Script (Anfang dieses Topics) Funktioniert ohne Einschränkungen. Die Daten werden gebrannt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »wums4all« (17.12.2009, 11:25)


Thema bewerten