Як додати дані у файл від dd?


19

Я хочу додати нові дані у файл, що зберігається на SSD.

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

Але df -h показує, що команда dd завжди перезаписує тестовий файл, замість цього додає нові дані до тестового файлу. Я також спробував

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

Це також не працює.

Відповіді:


12

Що стосовно:

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

ваше рішення працює. Спасибі. Але чи знаєте ви, чому мої рішення не працюють? Я перевірив сторінку чоловіка. не можу знайти причину. Спасибі.
місто


1

У Linux kernel 4.1 FALLOC_FL_INSERT_RANGEдодана опція. З fallocate(2) чоловічої сторінки :

Вказівка ​​прапора FALLOC_FL_INSERT_RANGE (доступна з Linux 4.1) в режимі збільшує файловий простір, вставляючи отвір у розмірі файлу, не перезаписуючи жодних існуючих даних. Дірка розпочнеться в зсуві і продовжуватиме тривати байти. Під час вставлення отвору всередині файлу вміст файлу, який починається зі зміщення, зміщуватиметься вгору (тобто, до більш високого зміщення файлу) на лейні байтів. Вставлення отвору всередині файлу збільшує розмір файлу на len bytes.

І нещодавно ця опція підтримка була додана до util-linux:

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

Отже, коли util-linuxбуде випущена версія 2.30, а ваш дистрибутив Linux оновиться до цієї версії, ми зможемо, збільшивши розмір файлу, миттєво збільшивши:

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

де 128Mпоточний розмір файлу.


1

Існує простіший спосіб приєднати рідкий отвір до файлу.

truncateнабагато швидше, ніж дд. Щоб виростити файл з 10 байтами, використовуйте:

 truncate -s +10 file.txt 

відповідь знайдено на веб-сайті : /server//a/343726/70242

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.