Wie füge ich dd Daten in eine Datei ein?

17

Ich möchte neue Daten in eine auf der SSD gespeicherte Datei einfügen.

dd if=/dev/shm/test of=/data/sdb/test bs=1G oflag=append

Df -h zeigt jedoch an, dass der Befehl dd die Testdatei immer überschreibt und stattdessen neue Daten an die Testdatei anfügt. Ich habe es auch versucht

dd if=/dev/shm/test of=/data/sdb/test bs=1G conv=notrunc

Es funktioniert auch nicht.

city
quelle

Antworten:

10

Wie wäre es mit:

 dd if=/dev/shm/test bs=1G >>/data/sdb/test
mdpc
quelle
Ihre Lösung funktioniert. Vielen Dank. Aber wissen Sie, warum meine Lösungen nicht funktionieren? Ich habe die Manpage überprüft. kann den Grund nicht finden. Vielen Dank.
city
27
dd if=/dev/shm/test of=/data/sdb/test bs=1G oflag=append conv=notrunc 

Das ist, was ich denke, du hättest verwenden sollen.

REF: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=373736

Charm_quark
quelle
1
Ohne count=1 Mit dieser Option wird der gesamte verfügbare Speicherplatz angehängt.
mixel
1

Im Linux-Kernel 4.1 FALLOC_FL_INSERT_RANGE Option wurde hinzugefügt. Von fallocate(2) Manpage :

Festlegen des Flags FALLOC_FL_INSERT_RANGE (verfügbar ab Linux 4.1)   im Modus vergrößert den Dateibereich, indem ein Loch in die Datei eingefügt wird   Größe, ohne vorhandene Daten zu überschreiben. Das Loch beginnt bei   Offset und weiter für len Bytes. Beim Einsetzen der Bohrung nach innen   Datei wird der Inhalt der Datei ab Versatz verschoben   aufwärts (d. h. zu einem höheren Dateiversatz) um len Bytes. Einfügen eines Lochs   Innerhalb einer Datei wird die Dateigröße um len Bytes erhöht.

Und vor kurzem diese Option zu unterstützen wurde hinzugefügt zu util-linux:

   -i, --insert-range
          Insert a hole of length bytes from offset, shifting existing
          data.

Also wann util-linux Version 2.30 wird veröffentlicht und Ihre Linux-Distribution wird auf diese Version aktualisiert.

fallocate -i -l 1G -o 128M /path/to/file

woher 128M ist die aktuelle Dateigröße.

mixel
quelle
0

Es gibt eine einfachere Möglichkeit, einer Datei ein dünnes Loch hinzuzufügen.

truncate ist viel schneller als dd. Um die Datei mit 10 Bytes zu vergrößern, verwenden Sie:

 truncate -s +10 file.txt 

Antwort gefunden in: https://serverfault.com/a/343726/70242

akostadinov
quelle