Comment ajouter des données dans un fichier par DD?


19

Je veux ajouter de nouvelles données dans un fichier stocké sur SSD.

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

Mais df -h montre que la commande dd écrase toujours le fichier de test, ajoute à la place de nouvelles données dans le fichier de test. J'ai aussi essayé

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

Cela ne fonctionne pas non plus.

Réponses:


12

Qu'en est-il de:

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

votre solution fonctionne. Merci. Mais savez-vous pourquoi mes solutions ne fonctionnent pas? J'ai vérifié la page de manuel. ne peut pas trouver la raison. Merci.
ville


1

Dans Linux kernel 4.1, une FALLOC_FL_INSERT_RANGEoption a été ajoutée. Depuis la fallocate(2) page de manuel :

La spécification de l'indicateur FALLOC_FL_INSERT_RANGE (disponible depuis Linux 4.1) en mode augmente l'espace fichier en insérant un trou dans la taille du fichier sans écraser les données existantes. Le trou commencera à l'offset et continuera pendant len ​​octets. Lors de l'insertion du trou dans le fichier, le contenu du fichier commençant à l'offset sera déplacé vers le haut (c'est-à-dire vers un offset de fichier plus élevé) de len octets. L'insertion d'un trou dans un fichier augmente la taille du fichier de len octets.

Et récemment, cette prise en charge des options a été ajoutée à util-linux:

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

Ainsi, lorsque la util-linuxversion 2.30 sera publiée et que votre distribution linux sera mise à jour vers cette version, nous pourrons augmenter la taille du fichier en un éclair en exécutant:

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

128Mest la taille actuelle du fichier.


1

Il existe un moyen plus simple d'ajouter un trou clairsemé à un fichier.

truncateest beaucoup plus rapide que dd. Pour agrandir le fichier avec 10 octets, utilisez:

 truncate -s +10 file.txt 

réponse trouvée dans: /server//a/343726/70242

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.