Partclone einer NTFS-Partition auf einer kleineren Festplatte ohne Platz für das vollständige Image

452
JPT

Hin und wieder habe ich folgendes Problem:

Ein Datenträger fällt aus und der Ersatzdatenträger ist kleiner. Die Daten passen oft leicht auf die kleinere Festplatte, aber Partclone verkleinert das Dateisystem einfach nicht, um der kleineren Partitionsgröße zu entsprechen.

Sie können einfach die gesamte Festplatte auf Ihr temporäres Laufwerk kopieren und dann verkleinern. Aber wenn es nicht genug Platz gibt?

0
vielleicht versuchen ntfsclone? JPT vor 5 Jahren 1
"Eine Festplatte schlägt fehl" <- da ist Ihr Problem. Andernfalls verkleinern Sie die Partition vor dem Kopieren auf der Quellfestplatte. Wenn Sie wirklich wollen, können Sie die Partition auf der Quellfestplatte erneut erweitern. Ich würde nur die Gparted Live Disk von https://gparted.sourceforge.io/ verwenden. BeowulfNode42 vor 5 Jahren 0
Nun, ich ziehe es vor, mich nicht mit dem Quelllaufwerk zu beschäftigen, ohne ein Backup zu haben. Natürlich können Sie zunächst ein Standard-Backup mit partclone erstellen. JPT vor 5 Jahren 0

1 Antwort auf die Frage

1
JPT

Funktioniert noch nicht ab Punkt 16. Vielleicht, weil es ein veraltetes Loop-Gerät gab, das ich nicht gelöscht habe.

partclone Rohkippe in spärliches Bild

Diese Lösung ist gefährlich für Ihre Daten. Versuchen Sie es nur, wenn Sie verstehen, was Sie tun und mit ddGeräten vertraut sind. Ich kann keine Verantwortung für Datenverlust übernehmen.

Bevor wir anfangen:

  • Verwenden Sie dieses Verfahren nicht, um eine Festplatte zu spiegeln, die physisch beschädigt ist

    • partclone braucht ein gesundes Dateisystem, an dem gearbeitet werden kann

    • Diese Prozedur ist weitaus komplexer als der Vorgang, ddsodass Sie sie wahrscheinlich mehrmals wiederholen müssen, bis Sie Erfolg haben. Dadurch wird die kaputte Festplatte stärker beansprucht

    • für defekte Festplatten sollten Sie safecopystattdessen verwenden, da dies ddauf fehlerhaften Sektoren abbricht

  • Auf Ihrem temporären Laufwerk benötigen Sie bis zu 2 x Datengröße freien Speicherplatz .

  • Ich werde sdXXfür jeden Befehl eingeben, der Daten zerstören könnte, wenn Sie vergessen haben, den Befehl anzupassen. Dies gilt nicht für Schleifen. Stellen Sie daher sicher, dass Sie während des folgenden Vorgangs KEINE anderen Schleifengeräte verwenden, um ein versehentliches Überschreiben wertvoller Daten zu vermeiden.

  • Wenn Sie irgendwo und löschen Sie das Bild ausfallen, sollten Sie zuerst etwas aushängen auf sie zeigen, dann die Loop - Geräte entfernen: kpartx -dv <image>. Wenn Sie falsche Schleifengeräte verwenden, kann dies zu großen Problemen führen! Ich glaube, mein Problem wird durch ein veraltetes Schleifengerät verursacht ...

  • Am Ende dieser Antwort finden Sie Korrekturen für häufig auftretende Probleme.

Lass uns gehen

  1. Holen Sie sich die Festplattengröße Ihrer Quellplatte

    sudo fdisk -l /dev/sda output: Disk /dev/sda: 465,8 GiB, 500107862016 bytes, 976773168 sectors 
  2. Lesen Sie das ursprüngliche Partitionslayout in das Bild

    sudo dd if=/dev/sda of=sparse.img bs=1M count=1 
  3. Füllen Sie das Bild mit "nichts" bis zur obigen Größe. - Das wird nicht jeden Raum auf der Platte nehmen.

    sudo dd if=/dev/zero of=sparse.img bs=1 count=0 seek=500107862016 
  4. Vergewissern Sie sich, dass keine anderen Loop-Geräte aktiv sind. Wenn der Ausgang nicht leer ist, siehe Abschnitt "Fehlerbehebung"

    losetup -l -a 
  5. Prüfen Sie, ob das Partitionslayout mit dem Quelllaufwerk übereinstimmt

    fdisk -l sparse.img 
  6. Erstellen Sie Schleifengeräte für den Zugriff auf die Partitionen im Image

    sudo kpartx -av sparse.img  output: add map loop0p1 (253:0): 0 976771072 linear 7:2 2048 
  7. Lesen Sie die Daten in das Bild ein partclone- dies erhöht Raumnutzung durch „Datengröße“ plus „Overhead“.

    sudo partclone.ntfs -s /dev/sda1 -o /dev/mapper/loop0p1 -b -L sparse.log 
  8. Entfernen Sie das Quelllaufwerk, um es zu speichern

  9. verkleinern mit gparted- sollte mindestens 10% kleiner als das Ziellaufwerk sein

    • Erstellen Sie Links, da gparteddie kpartxerstellten Devs nicht verstanden werden .

      ln -s /dev/mapper/loop0p1 sparse.img1 
    • Verwenden Sie gparteddiese Option, um die Partition zu verkleinern

      sudo gparted sparse.img 
  10. Alternativ können Sie auch mit verkleinern, müssen ntfsresizeaber die Partition anschließend auch verkleinern.

    • Mindestgröße erhalten

      sudo ntfsresize -i /dev/mapper/loop0p1 
    • Testgröße ändern

      sudo ntfsresize -n -s 100G /dev/mapper/loop0p1 
    • echte Größenänderung - dies erhöht die Speicherplatznutzung um bis zu "Datengröße"

      sudo ntfsresize -s 100G /dev/mapper/loop0p1 
    • TODO: Partition verkleinern

  11. (nicht erforderlich, da verkleinert, nicht vergrößert?) Löschen und erstellen Sie die Schleifengeräte neu, da sich die Partitionsgröße geändert hat

    sudo kpartx -dv sparse.img  sudo kpartx -av sparse.img  
  12. (optional) TODO schneidet das Bild ab

  13. check using ntfsresize- für mich gibt es eine OK-Antwort

    sudo ntfsresize -i /dev/mapper/loop0p1 
  14. Ziellaufwerk einfügen - überprüfen Sie, ob Sie das richtige Laufwerk eingelegt haben

  15. (funktioniert nicht, weil ntfsresizedas fs als verschmutzt markiert wurde) partclone das Image auf das neue Laufwerk

    sudo partclone.ntfs -o /dev/sdXX -s /dev/mapper/loop0p1 -b -L restore.log 
  16. Stattdessen dddas Image auf das neue Laufwerk - entweder geben Sie keine Größe an oder liegen Sie um 10% über der verkleinerten Partitionsgröße

    sudo dd if=sparse.img of=/dev/sdXX 
  17. check using ntfsresize- FAILS für mich, dies sollte nicht passieren, da das Bild in Ordnung war und wir eine identische Kopie des Bildes erstellt haben !!!

    sudo ntfsresize -i /dev/sda1 
  18. Schleifengeräte löschen

    sudo kpartx -dv sparse.img 
  19. Löschen Sie alle Loop-Geräte, die nicht ordnungsgemäß entfernt wurden. Wenn noch einige vorhanden sind, starten Sie das Web neu, oder durchsuchen Sie das Web.

    sudo losetup -D 
  20. Schließlich sollten Sie versuchen, die Festplatte zu booten und dann Windows auszuführen chkdsk / f. Danach gpartederweitern Sie die Partition auf ihre volle Größe.

Fehlerbehebung:

  • Wenn auf das Image nicht zugegriffen werden kann ntfsresizeoder gpartednicht: exec chkdsk /fvon Fenstern auf dem Quelldatenträger. NICHT verwenden ntfsfix. Irgendein NTFS-Checker für Linux?

  • Wenn kpartxdie Loop-Geräte nicht erstellt werden können: Nicht verwendete Geräte prüfen losetupund löschen.

  • Wenn Sie veraltete Loop-Geräte entfernen möchten, löschen Sie sie mit sudo losetup -doder durchsuchen Sie das Web.