Hi, Es handelt sich um eine ntfs-partition, welche unter Winxp angelegt wurde und nach /mnt gemountet ist. Die Zielpartition ist eine Linux welche in /home/medien gemountet ist. Mfg. Sebastian ----- Original Message ----- From: "Kristian Köhntopp" <kris@koehntopp.de> To: "Sebastian Andres" <s_andres@web.de>; "Suse Mailingliste" <suse-linux@suse.com> Sent: Tuesday, November 25, 2003 9:24 PM Subject: Re: daten kopieren On Tuesday 25 November 2003 19:10, Sebastian Andres wrote:
Ich möchte gern eine komplette partition kopieren! Mit cp -v -r klappt das nicht er stürzt beim kopieren ab.
"cp -v -r" ist kein gültiges Kommando. Wie lautet das genaue Kommando, das Du verwendet hast? "cp -v -r / /woanders" kopiert nicht eine Partition, sondern einen Dateibaum (und den dann teilweise auf sich selber). Dabei wird unter anderem auch /proc mit kopiert, was wegen der besonderen Natur von /proc eine schlechte Idee ist - dort drin sind Dateien, die beim Durchlesen Dinge an der Hardware Deines Rechners bewirken können und zum Absturz des Systems führen können.
ich hatte es schon einmal mit dd probiert aber da ist das ganze system zerschossen und ich musste eine komplette neuinstallation durchführen!
Eine einzelne Partition kopiert man entweder mit dem Dump-Programm für dieses Dateisystem (dump, xfsdump usw), oder mit GNU tar (dabei müssen bestimmte Einschränkungen beachtet werden). Die Strategie ist, ein Backup des Dateisystems auf stdout zu erzeugen, und dann in einem zweiten Prozeß dieses Backup auf der Zielpartition wieder einzuspielen. Nimm zum Beispiel das Kommando (nicht ausprobieren!): # tar -c --one-file-system -f - / Dieses Kommando erzeugt ein tar-Archiv (-c, create archive) des /-Dateisystems. Das tar wird dabei die Grenze des Dateisystems nicht überschreiten (--one-file-system). Das Archiv wird nach stdout geschrieben, also ausgedruckt (-f -). Die Ausgabe dieses Kommandos kann mit einem zweiten tar wieder eingelesen werden. Das wäre dann ein (nicht ausprobieren) # tar -x -v -f - Dieses tar-Kommando packt ein Archiv aus (-x, extract archive). Es arbeitet verbose (-v), sagt Dir also, was es auspackt. Es erwartet sein Eingabearchiv auf stdin (-f -) und packt dieses im aktuellen Verzeichnis aus. Nehmen wir an, daß Deine Zielpartition als /mnt gemountet ist. Wir willen, daß das aktuelle Verzeichnis von tar, in dem es dann das Eingabearchiv auspackt, das Verzeichnis /mnt ist. Wir könnten - in GNU tar und nur da - die Option -C verwenden: # tar -x -v -C /mnt -f - aber das ist nicht portabel. Traditionell würde man denselben Effekt so erzielen: # ( cd /mnt; tar -x -v -f - ) Die Shell erzeugt mit den Klammern () eine Subshell. Alle Kommandos in der Subshell hängen an denselben stdin/stdout/stderr Datenströmen, und werden nacheinander angeführt. Die Subshell wechselt also das aktuelle Verzeichnis ( cd / ) und packt dann das Archiv im aktuellen Verzeichnis aus. Wir stecken beide Kommandos nun zusammen: # tar -c --one-file-system -f - / | ( cd /mnt; tar -x -v -f - ) Dies kopiert den Inhalt des /-Dateisystems nach /mnt um. Nur den Inhalt von /, nichts anderes. Das Verfahren ist auf andere Kommandos anwendbar: Wenn ein ext2-Dateisystem gesichert werden soll, kann man analog # dump 0f - /dev/hdb1 | ( cd /mnt; restore -rf - ) verwenden. Für ein xfs-Dateisystem geht es mit # xfsdump -J - / | xfsrestore -J - /mnt (Dieses Beispiel stammt so direkt aus der xfsdump Manpage). Das Verfahren ist auch erweiterbar. Ein # tar -c --one-file-system -f - / |
ssh user@remotehost "( cd /mnt; tar -x -v -f - )"
macht genau das gleiche wie das Ausgangskommando, nur daß die Zielplatte jetzt auch auf einem anderen Rechner liegen kann. Dieser Antworttext kann in der SDB oder in FAQ-Projekten verwendet werden. Kristian