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.

Antworten:


10

Wie wäre es mit:

 dd if=/dev/shm/test bs=1G >>/data/sdb/test

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


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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.