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.

Jawaban:


12

Bagaimana dengan:

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

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


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.


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.