Verwendung des Befehls dd zum Kopieren des Inhalts eines Ordners

9

Ich versuche, den ddBefehl zu verwenden, um den Inhalt des Ordners boot0 auf die Anfangsbytes meiner Festplatten zu kopieren.

Dies ist der Befehl:

sudo dd if=boot0/ of=/dev/sdb ibs=440 obs=440 count=1 

Aber ich bekomme diesen Fehler:

dd: error reading ‘boot0/’: Is a directory
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000209512 s, 0.0 kB/s

Wie kann ich dieses Problem lösen?

Aimad Majdou
quelle
2
ddliest Dateien, keine Ordner. Dies ist jedoch nicht die richtige Methode, um Dateien an den Start eines Laufwerks zu schreiben. Sie müssen zuerst eine FAT32-Partition erstellen und dann cpden Inhalt kopieren.
Saiarcot895
Ich denke, Sie möchten rsync verwenden, man rsync.
ppetraki

Antworten:

8

Es kann getan werden

Wir müssen zwei Probleme umgehen:

  1. dd weiß nicht, was ich mit Verzeichnissen machen soll
  2. dd Es kann jeweils nur eine Datei kopiert werden

Definieren wir zunächst Eingabe- und Ausgabeverzeichnisse:

SOURCE="/media/source-dir"
TARGET="/media/target-dir"

Lassen Sie uns nun cdin das Quellverzeichnis findgehen, um relative Verzeichnisse zu melden, die wir leicht bearbeiten können:

cd "$SOURCE"

Duplizieren Sie den Verzeichnisbaum von $SOURCEbis$TARGET

find . -type d -exec mkdir -p "$TARGET{}" \;

Duplizieren Sie Dateien von $SOURCEbis zum $TARGETWeglassen des Schreibcaches (verwenden Sie jedoch den Lesecache!)

find . -type f -exec dd if={} of="$TARGET{}" bs=8M oflag=direct \;

Bitte beachten Sie, dass dadurch die Änderungszeiten, der Besitz und andere Attribute der Datei nicht erhalten bleiben.

unfa
quelle
6

Der Hauptzweck des ddDienstprogramms ist das Konvertieren und Kopieren von Dateien.

Zum Beispiel:

dd if=filename of=filename2 conv=ucase
dd if=/dev/urandom of=myrandom bs=100 count=1

Wenn Sie den Inhalt des Ordners kopieren möchten, verwenden Sie entweder rsync:

rsync -vuar src/ dst/

oder cpDienstprogramm:

cp -va src/. dst/
Kenorb
quelle
1
-R/ -rnicht erforderlich bei Verwendung -awie -aimmer impliziert rekursiv.
Thomasrutter
1
Es ist keine Antwort auf die Frage, es ist eine Empfehlung.
Arch Linux Tux
0

dd arbeitet mit der von Ihnen angegebenen Datei und ermöglicht so das Kopieren von Daten zwischen Geräten oder von einem Gerät in eine Datei. Dies wird häufig zum Verschieben von Daten verwendet, wenn bestimmte Geräte betroffen sind (Erstellen eines ISO-Images von einer CD-ROM-Disc, z. B. dd if = / dev / cdrom von = mycdrom.iso) oder zum Sichern von Rohgeräten (manchmal in RAC-Datenbanken verwendet) : dd if = / dev / raw / raw1 von = device_raw1)

cp wird zum Duplizieren von Dateiinhalten in eine neue Datei oder an einen neuen Speicherort verwendet. Dinge, die Sie speziell wollen, sind die Wahrung des Eigentums, des Zeitstempels und des Modus (Rechte) sowie die Möglichkeit, den Vorgang zu wiederholen (= Verzeichnisse kopieren zu können).

Versuchen Sie diesen Befehl:

   cp -r /home/source_folder/* /home/destination_folder
SweetWisher ツ
quelle
cp -aDies ist vorzuziehen, cp -rda Berechtigungen, Zeitstempel, symbolische Links usw. beibehalten werden. cp -rAlle Dateien, deren Eigentümer Sie sind, werden wie bisher mit einem Erstellungs- / Änderungsdatum zurückgesetzt, und symbolische Links werden befolgt und ihre Ziele dupliziert.
Thomasrutter