Bagaimana cara menambahkan data dalam file dengan dd?

19

Saya ingin menambahkan data baru dalam file yang disimpan dalam SSD.

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

Tapi df -h menunjukkan perintah dd selalu menimpa file tes, alih-alih menambahkan data baru dalam file uji. Saya juga mencoba

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

Itu juga tidak bekerja.

kota
sumber

Jawaban:

12

Bagaimana dengan:

 dd if=/dev/shm/test bs=1G >>/data/sdb/test
mdpc
sumber
solusi Anda berhasil. Terima kasih. Tapi tahukah Anda mengapa solusi saya tidak berhasil? Saya telah memeriksa halaman manual. tidak dapat menemukan alasannya. Terima kasih.
kota
29
dd if=/dev/shm/test of=/data/sdb/test bs=1G oflag=append conv=notrunc 

Itulah yang saya pikir seharusnya Anda gunakan.

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

Charm_quark
sumber
2
Tanpa count=1opsi itu menambahkan semua ruang yang tersedia.
mixel
1

Di Linux kernel 4.1 FALLOC_FL_INSERT_RANGEopsi ditambahkan. Dari fallocate(2) halaman manual :

Menentukan flag FALLOC_FL_INSERT_RANGE (tersedia sejak Linux 4.1) dalam mode meningkatkan ruang file dengan memasukkan lubang di dalam ukuran file tanpa menimpa data yang ada. Lubang akan mulai dari offset dan berlanjut selama len byte. Saat memasukkan lubang di dalam file, isi file mulai dari offset akan bergeser ke atas (yaitu, ke file offset yang lebih tinggi) dengan len byte. Memasukkan lubang di dalam file meningkatkan ukuran file sebesar len byte.

Dan baru-baru ini dukungan opsi ini ditambahkan ke util-linux:

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

Jadi, ketika util-linuxversi 2.30 akan dirilis dan distro linux Anda akan memperbarui ke versi ini, kami akan dapat meningkatkan ukuran file dalam sekejap dengan menjalankan:

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

di mana 128Mukuran file saat ini.

mixel
sumber
1

Ada cara yang lebih mudah untuk menambahkan lubang jarang ke file.

truncatejauh lebih cepat daripada dd. Untuk menumbuhkan file dengan 10 byte gunakan:

 truncate -s +10 file.txt 

jawaban ditemukan di: /server//a/343726/70242

akostadinov
sumber