BSDForen.de  

Zurück   BSDForen.de > FreeBSD > FreeBSD - Allgemein

Antwort
 
Themen-Optionen Thema bewerten Ansicht
Alt 20.10.2006, 13:16   #1
sirko
Sirko
 
Benutzerbild von sirko
 
Registrierungsdatum: Jun 2004
Beiträge: 14
Neues Effektiv Platten kopieren

Hi.

ich habe regelmäßig ne Installation, die auf andere Platten kopiert werden muß. Die Platten haben leider oft unterschiedliche Größen. Daher würde ich mir gern ein Script schreiben welches die Inhalte der Platten mit cpdup anstelle von dd schnell und effektiv kopiert.
Folgendes Script kann so nicht funktionieren, denke ich. Es ist bestimmt nicht möglich, mit bsdlabel einfach so Platte A auszulesen und auf Platte B übertragen zu wollen. Die Platte muss ja auch irgendwie bootfähig gemacht werden. Aber grundsätzlich müßte es mit der Methode doch gehen, man könnte auch noch einen Schritt einbauen, im gemounteten Ziel-Dateisystem Konfigurations-Dateien anzupassen. Da ich keinerlei Erfahrung mit bsdlabel habe, stelle ich den ersten Arbeitsentwurf mal zur Diskussion.

Meine wichtigste Fragen wären:

Wie kriege ich bsdlabel dazu, für einzelne Partitionen wie /, /usr, swap feste Größen zu benutzen und den kompletten restlichen freien Bereich z.B. für /var oder /home zu benutzen?

Wie kriege ich die Platte bootfähig?

Also nochmal: Dieser Code funktioniert so nicht!

Code:
#!/bin/sh dd if=/dev/zero of=/dev/da1 bs=1k count=1 # Initialisieren der neuen Platte fdisk -BI ad2 # Labeln bsdlabel -B -w -r ad2s1 auto # Disklabel von der Quell-Platte lesen bsdlabel ad0 > /tmp/bsdlabel.txt # Editieren des Disklabels und Hinzufügen von Partitionen bsdlabel -R /tmp/bsdlabel.txt rm /tmp/bsdlabel.txt # Diesen Part fuer jede Partition wiederholen #-------------------------------------------------- [test -d /mnt/root/] || mkdir -p /mnt/root # Dateisystem erzeugen newfs /dev/ad2s1a # Anhängen der Partitionen mount /dev/ad2s1a /mnt/root/ # Kopie mit cpdup von der Quelle cpdup -v / /mnt/root/ #--------------------------------------------------
sirko ist offline   Mit Zitat antworten
Alt 20.10.2006, 16:55   #2
-Daemon-
Lehrling
 
Benutzerbild von -Daemon-
 
Registrierungsdatum: Aug 2005
Beiträge: 955
Ich habe vor einiger Zeit auch meine FreeBSD-Installation auf neue Platten kopiert. Ich habe dazu die neue Platte partitioniert, und dann mit dd den Inhalt der alten Platte auf die neue Platte gebuegelt.
Die Groesse der Slices/Partitionen ist dabei (fast) egal, um von der neuen Platte zu booten habe ich einfach die alte ausgebaut. Fertig

Das ist etwas mehr Handarbeit als die Loesung die dir vorschwebt, hat aber gut funktioniert
__________________
"Thinking of using NT for your critical apps?
Isn't there enough suffering in the world?"

(Advertisement of Sun Microsystems in Wall Street Journal)
-Daemon- ist offline   Mit Zitat antworten
Alt 20.10.2006, 16:59   #3
cheasy
SysAdm*n from Hell
 
Benutzerbild von cheasy
 
Registrierungsdatum: May 2003
Ort: Steinbach / Taunus
Beiträge: 668
cheasy eine Nachricht über ICQ schicken cheasy eine Nachricht über Skype™ schicken
Zitat:
Zitat von sirko Beitrag anzeigen
Wie kriege ich bsdlabel dazu, für einzelne Partitionen wie /, /usr, swap feste Größen zu benutzen und den kompletten restlichen freien Bereich z.B. für /var oder /home zu benutzen?
Indem Du bsdlabel mit einer Konfigurationsdatei fütterst, z.B. so:
bsdlabel -R [-An] [-m machine] disk protofile
protofile enthält
Code:
8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 1G 16 4.2BSD * * * b: 512M * swap c: * 0 unused * * # "raw" part, don't edit d: * * 4.2BSD * * *
Dabei soll protofile in demselben Format sein, in dem bsdlabel die Partitionstabelle ausgibt. Die Sterne werden von bsdlabel durch sinnvolle Werte ersetzt, in diesem Fall wird der Partition d: der Rest der Platte zugeordnet.

Wenn ich mich recht erinnere, sind als Multiplikatoren k, M, G und % zulässig. Genaueres findet man in "The Complete FreeBSD" von Greg Lehey. Dieses Buch ist inzwischen auch online zu finden.

Sinnvollerweise lässt man einmal bsdlabel eine Platte automatisch labeln, gibt das entstandene Label in eine Datei aus, editiert diese und füttert das Ergebnis wieder in bsdlabel.

Geändert von cheasy (20.10.2006 um 17:05 Uhr).
cheasy ist offline   Mit Zitat antworten
Alt 20.10.2006, 17:02   #4
sirko
Sirko
 
Benutzerbild von sirko
 
Registrierungsdatum: Jun 2004
Beiträge: 14
Das es so geht, ist mir schon klar. Das Scrip wäre sinnvoll, denn

1. Ich will sämtlichen auf der Ziel-Platte vorhandenen Platz ausnutzen
2. Das kopieren per dd dauert viel zu lange, wenn Du 10 Installationen an einem Tag schaffen willst.
3. Es soll so wenig Interaktion wie möglich nötig sein, um den Arbeitsaufwand gering zu halten
sirko ist offline   Mit Zitat antworten
Alt 20.10.2006, 17:04   #5
sirko
Sirko
 
Benutzerbild von sirko
 
Registrierungsdatum: Jun 2004
Beiträge: 14
Cheasy, Du bist ein Held. Vielen Dank!

Bleibt nur noch die Frage, wie ich die Platte bootable setzen kann.

Geändert von sirko (20.10.2006 um 17:09 Uhr).
sirko ist offline   Mit Zitat antworten
Alt 20.10.2006, 17:20   #6
sirko
Sirko
 
Benutzerbild von sirko
 
Registrierungsdatum: Jun 2004
Beiträge: 14
Seltsam.

Code:
# bsdlabel ad0 bsdlabel: /dev/ad0: no valid label found
Die Platte wurde per sysinstall eingerichtet und dort werden die Partitionen richtig angezeigt. Was kann das sein?
sirko ist offline   Mit Zitat antworten
Alt 20.10.2006, 18:18   #7
nice
Registered User
 
Registrierungsdatum: May 2006
Beiträge: 23
ad0 kann kein bsdlabel enthalten. Nur slices haben label ad0s1 z.B. . Um die slices zu bestimmen oder herauszufinden must du fdisk verwenden.
z.B.
Code:
fdisk /dev/ad0
nice ist offline   Mit Zitat antworten
Alt 20.10.2006, 18:31   #8
sirko
Sirko
 
Benutzerbild von sirko
 
Registrierungsdatum: Jun 2004
Beiträge: 14
*kopfklatsch* Ja, logisch. Danke.

Demnach würde ein Script etwa wie folgt aussehen:

Code:
#!/bin/sh dd if=/dev/zero of=/dev/da1 bs=1k count=1 # Initialisieren der neuen Platte fdisk -BI ad2 # Labeln bsdlabel -B -w -r ad2s1 auto # Disklabel von der Quell-Platte lesen bsdlabel ad0s1 > /tmp/bsdlabel.txt # Disklabel editieren vim /tmp/bsdlabel.txt # Editieren des Disklabels und Hinzufügen von Partitionen bsdlabel -R /tmp/bsdlabel.txt ad2s1 rm /tmp/bsdlabel.txt # Diesen Part fuer jede Partition wiederholen #-------------------------------------------------- [test -d /mnt/root/] || mkdir -p /mnt/root # Dateisystem erzeugen newfs /dev/ad2s1a # Anhängen der Partitionen mount /dev/ad2s1a /mnt/root/ # Kopie mit cpdup von der Quelle cpdup -v / /mnt/root/ #--------------------------------------------------
sirko ist offline   Mit Zitat antworten
Alt 20.10.2006, 19:24   #9
nice
Registered User
 
Registrierungsdatum: May 2006
Beiträge: 23
Schau dir mal partimage [1] an.
Auch wenn der Support für UFS noch beta ist vieleicht hilft es dir dennoch. Klappt auch super über das Netzwerk.

Gruß
nice

1 http://partimage.org/Main_Page
nice ist offline   Mit Zitat antworten
Alt 21.10.2006, 10:01   #10
MrFixit
aka uqs
 
Registrierungsdatum: Feb 2003
Beiträge: 2.024
Ich kenne cpdup nicht im Detail, wuerde aber dump|restore den Vorzug geben.

Auch funktioniert das so ja nur lokal. Baust du denn die Platten ständig um? Warum nicht eine Live-CD basteln und die Daten per SSH holen lassen?

ACHTUNG: Du willst die ssh_host_keys auf dem neuen System löschen, so dass eigene erzeugt werden. Auch hostname+IP bedürfen wohl eines manuellen Eingriffs.

Achja, wenn du nur ein standardisiertes Release auf mehreren Rechner installieren willst, dann schau die mal 'man release' an und baue deine eigene FreeBSD Release CD (mit automatischer Installation, etc.)
MrFixit ist offline   Mit Zitat antworten
Alt 23.10.2006, 13:54   #11
sirko
Sirko
 
Benutzerbild von sirko
 
Registrierungsdatum: Jun 2004
Beiträge: 14
Folgendes Script funktioniert nun schon für mich, könnte als Ausgangspunkt dienen. Ob die kopierte Platte auch bootfähig ist, weiß ich noch nicht, mal testen. Praktisch wäre, alle Partitionen gleich aus der fstab auszulesen und danach sowas wie ne Abfrage, wie gross die Partitionen auf der Zielplatte werden sollen.


Code:
#!/bin/sh # #TODO die Partitionen und Device-Namen aus der fstab auslesen #TODO bsdlabel.txt parsen und automatisch Default- # Partitions-Groessen eintragen #-------------------------------------------------- cp_partition() { # Parameter: # 1. Name der Ziel-Partition z.B. "ad2s1a" # 2. Mountpoint vom Quell-Dateisystem z.B. "/" oder "/usr" # Dateisystem erzeugen newfs /dev/$1 # Anhängen der Partitionen [test -d /mnt$2] || mkdir -p /mnt$2 mount /dev/$1 /mnt$2 # Kopie mit cpdup von der Quelle cpdup -v $2 /mnt$2 } #-------------------------------------------------- dd if=/dev/zero of=/dev/da1 bs=1k count=1 # Initialisieren der neuen Platte fdisk -BI ad2 # Labeln bsdlabel -B -w -r ad2s1 auto # Disklabel von der Quell-Platte lesen bsdlabel ad0s1 > /tmp/bsdlabel.txt # Disklabel editieren vim /tmp/bsdlabel.txt # Editieren des Disklabels und Hinzufügen von Partitionen bsdlabel -R /tmp/bsdlabel.txt ad2s1 rm /tmp/bsdlabel.txt # Diesen Part fuer jede Partition wiederholen #-------------------------------------------------- cp_partition "ad2s1a" "/" cp_partition "ad2s1d" "/usr" cp_partition "ad2s1e" "/var"
sirko ist offline   Mit Zitat antworten
Antwort


Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus
Gehe zu

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
PROBLEM MIT 2 seagate 200 GB ide platten godfasa FreeBSD - Allgemein 1 03.12.2005 13:02
Hilfe! halb-defekte Platte kopieren! bost FreeBSD - Allgemein 15 29.11.2005 16:21
langes kopieren und ruhezustand qfat MacOS X & Darwin 0 27.02.2005 16:13
FreeBSD: Mehrere Platten, gleiche /dev/da indy Hardware 21 23.11.2004 08:25
Komplette Festplate kopieren IDE=SCSI tms2002 Hardware 4 23.08.2004 17:32


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 Uhr.


Powered by vBulletin (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.