So kopieren Sie ein großes Verzeichnis auf eine externe Festplatte unter Linux

So kopieren Sie ein großes Verzeichnis auf eine externe Festplatte unter Linux

Ich habe eine externe 3-TB-Festplatte mit fdisk (eigentlich gnu fdisk) als ext4 formatiert, sie unter /media/external gemountet und versuche, mein gesamtes Home-Verzeichnis darauf zu kopieren.

Ich dachte, mein erster Versuch sei erfolgreich gewesen, aber als der Vorgang nach einer Weile anhielt, konnte ich nicht mehr per CD in das kopierte Home-Verzeichnis wechseln. Der Wechsel per CD schien zu scheitern:

sudo: cd: command not found

Dann dachte ich, dass es vielleicht eine Begrenzung für cp gibt und versuchte es noch einmal mit tar.

cd /from-stuff/
tar cf – . | (cd /to-stuff; tar xvf -)

Ich habe die Größe meines Home-Verzeichnisses auf ca. 100 GB gemessen. In meinem Home-Verzeichnis habe ich Folgendes ausgeführt:

du -ch | grep total

Ich habe es wie folgt montiert:

sudo mount -t ext4 /dev/sdd1 /media/external

Beachten Sie, dass ich das Mounten nicht durchführen konnte , was bei /dev/sdd1 nicht /dev/sddangezeigt wird .sudo fdisk -l

Beim Formatieren habe ich die Standardeinstellungen verwendet, 1 Partition, alles andere auf Standard. Ich habe bestätigt, dass die Formatierung korrekt war, da keine Fehler wegen „ungültiger Partitionstabelle“ auftraten. Ich bin neu hier, also haben Sie bitte Geduld. Vielleicht habe ich versehentlich GUID gewählt? Ich weiß aber nicht, wie ich das überprüfen oder davon weg auf das umformatieren kann, was auch immer es sein muss.

Gibt es irgendetwas, das ich offensichtlich falsch gemacht habe? Kann mir jemand vielleicht eine Fdisk-Sequenz anbieten, um wirklich sicherzustellen, dass alles eine Basispartition ist, die als ext4 formatiert ist?

Hier ist meine Dokumentation zu dem, was ich zur Formatierung getan habe. Bitte erläutern/ergänzen Sie, wenn Sie können. Möglicherweise gab es zuvor einen fehlgeschlagenen Gparted-Versuch:

sudo fdisk /dev/sdb # this will pull up an interactive menu
n       # create a new partition
p       # create a primary partition
[enter] # use default value of 1 for the partition number
[enter] # use default value of 256 for first sector
[enter] # use default value for last sector
w       # write these settings and leave the interactive menu

# make the file system
sudo mkfs.ext4 /dev/sdb1

Antwort1

  • über diesudo: cd: command not found

    Das ist normal. cd ist eine integrierte Shell. Das heißt nicht, dass das Zielverzeichnis nicht existiert. Versuchen Sie „su - root“, wenn Sie Root sein müssen, um in dieses Verzeichnis zu gelangen, und wechseln Sie dann mit cd zum Ziel.

  • über die Tatsache, dass /dev/sdd nicht gemountet werden kann

    /dev/sdd ist eine komplette SD-Festplatte (einschließlich der Masterpartitionstabelle, allem, sogar dem unpartitionierten Speicherplatz). Es ist keine Partition. /dev/sdd1 ist die erste Partition. Und Vorsicht: Sie geben an, dass Sie /dev/sdd1 mounten möchten, aber Sie zeigen ein fdisk auf /dev/sdb1 (eine andere Festplatte! /dev/sdb ist nicht dasselbe wie /dev/sdd)

  • Wenn das neue Laufwerk zum Erstellen von Backups gedacht ist: Anstatt tar | ( cd dest ; tar) zu verwenden, das jedes Mal alles kopiert (und Zieldateien/-verzeichnisse nicht löscht, wenn sie auf der Quelle gelöscht werden), sollten Sie sich den Befehl ansehen rsync. Insbesondere lokal (aber auch beim Kopieren an einen Remote-Speicherort, da rsync nur die geänderten Teile jeder geänderten Datei kopiert, nicht die gesamte Datei). Aberin acht nehmenseine Verwendung: rsync kann am Anfang knifflig sein. Verwenden Sie die Option „--delete“ nicht, bevor Sie viel darüber gelesen haben, da dies die Quell- oder Zieldateien löschen könnte, wenn sie auf der anderen Seite keine Entsprechung haben ... sehen Sie sich die verschiedenen Möglichkeiten zum Angeben von Quell-/Zielverzeichnissen an. Manchmal fügen Sie das abschließende „/“ hinzu, manchmal nicht, je nachdem, wie rsync reagieren soll.

Antwort2

Ich vermute, Ihr Problem besteht darin, dass fdisk keine großen Festplatten unterstützt. Es wurde durch ersetzt parted.

Es ist ähnlich wie fdisk, nur aktualisiert für neuere Technologie. Angenommen, die Festplatte ist /dev/sdb (überprüfen Sie mit sudo parted -l):

  1. sudo parted /dev/sdb
  2. mklabel (Typ gpt)
  3. mkpart (Standardantworten: Erstellen einer Partition mit maximaler Größe)
  4. q zum Verlassen des Raumes
  5. sudo mkfs.ext4 /dev/sdb1um das Dateisystem zu erstellen.

Danach sollte es nur noch eine Frage von sein sudo mount /dev/sdb1 /media/external. Es wäre eine gute Idee, zuerst sicherzustellen, dass Sie Eigentümer des Verzeichnisses sind mitsudo chown tarabyte.tarabyte /media/external

Ich verwende es normalerweise rsyncfür große Kopien, auch lokal. Es hat eine bessere Ausgabe und lässt sich bei Unterbrechungen problemlos fortsetzen.

rsync -avh --progress /from-stuff /to-stuff

man rsyncWeitere Informationen finden Sie unter.

verwandte Informationen