Como acrescentar dados em um arquivo por dd?

19

Quero acrescentar novos dados em um arquivo armazenado no SSD.

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

Mas df -h mostra que o comando dd sempre substitui o arquivo de teste, em vez disso, acrescenta novos dados no arquivo de teste. Eu também tentei

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

Também não funciona.

cidade
fonte

Respostas:

12

A respeito:

 dd if=/dev/shm/test bs=1G >>/data/sdb/test
mdpc
fonte
sua solução funciona. Obrigado. Mas você sabe por que minhas soluções não funcionam? Eu verifiquei a página de manual. não consigo encontrar o motivo. obrigado.
cidade
29
dd if=/dev/shm/test of=/data/sdb/test bs=1G oflag=append conv=notrunc 

É isso que eu acho que você deveria ter usado.

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

Charm_quark
fonte
2
Sem count=1opção, anexa todo o espaço disponível.
mixel
1

No Linux kernel 4.1 FALLOC_FL_INSERT_RANGEopção foi adicionada. Na fallocate(2) página do manual :

A especificação do sinalizador FALLOC_FL_INSERT_RANGE (disponível desde o Linux 4.1) no modo aumenta o espaço no arquivo, inserindo um furo no tamanho do arquivo sem substituir os dados existentes. O furo começará no deslocamento e continuará por bytes de len. Ao inserir o furo dentro do arquivo, o conteúdo do arquivo que começa no deslocamento será deslocado para cima (ou seja, para um deslocamento maior do arquivo) por bytes de len. Inserir um furo dentro de um arquivo aumenta o tamanho do arquivo em bytes de len.

E recentemente esse suporte de opção foi adicionado a util-linux:

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

Portanto, quando a util-linuxversão 2.30 for lançada e sua distribuição Linux for atualizada para esta versão, poderemos aumentar o tamanho do arquivo rapidamente, executando:

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

onde 128Mé o tamanho do arquivo atual.

mixel
fonte
1

Existe uma maneira mais fácil de acrescentar um orifício esparso a um arquivo.

truncateé muito mais rápido que o dd. Para aumentar o arquivo com 10 bytes, use:

 truncate -s +10 file.txt 

resposta encontrada em: /server//a/343726/70242

akostadinov
fonte