Как добавить данные в файл с помощью 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 4.1 FALLOC_FL_INSERT_RANGEбыла добавлена ​​опция. С fallocate(2) man-страницы :

Задание флага FALLOC_FL_INSERT_RANGE (доступно с Linux 4.1) в режиме увеличивает файловое пространство, вставляя дыру в размер файла без перезаписи существующих данных. Отверстие начнется со смещением и продолжится для длинных байтов. При вставке отверстия внутри файла содержимое файла, начиная со смещения, будет смещено вверх (то есть в более высокое смещение файла) на длину в байты. Вставка дыры в файл увеличивает размер файла на длину в байт.

И недавно эта опция поддержки была добавлена в 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.