Bir dosyaya dd ile veri nasıl eklenir?


19

SSD'de depolanan bir dosyaya yeni veriler eklemek istiyorum.

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

Ancak df -h, dd komutunun her zaman test dosyasının üzerine yazıldığını gösterir, bunun yerine test dosyasına yeni veriler ekler. Ben de denedim

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

Bu da işe yaramıyor.

Yanıtlar:


12

Ne dersin:

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

çözümünüz çalışır. Teşekkürler. Ama çözümlerimin neden işe yaramadığını biliyor musunuz? Adam sayfasını kontrol ettim. sebebini bulamıyor. Teşekkürler.
şehir


1

Linux çekirdeğinde 4.1 FALLOC_FL_INSERT_RANGEseçeneği eklendi. Gönderen fallocate(2) adam sayfası :

FALLOC_FL_INSERT_RANGE bayrağının (Linux 4.1'den beri kullanılabilir) modda belirtilmesi, varolan verilerin üzerine yazmadan dosya boyutuna bir delik ekleyerek dosya alanını artırır. Delik ofsetten başlayacak ve lent için devam edecektir. Dosyanın içindeki deliği eklerken, ofsetten başlayarak dosyanın içeriği len baytlarla yukarı kaydırılır (yani, daha yüksek bir dosya ofsetine). Dosyanın içine bir delik eklemek, dosya boyutunu len bayt artırır.

Ve son zamanlarda bu seçenek desteği eklendi için util-linux:

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

Dolayısıyla, util-linuxsürüm 2.30 yayınlanacak ve linux dağıtımınız bu sürüme güncellenecekse, çalıştırarak bir dosyadaki dosya boyutunu artırabiliriz:

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

128Mgeçerli dosya boyutu nerede .


1

Bir dosyaya seyrek bir delik eklemenin daha kolay bir yolu vardır.

truncatedd'den çok daha hızlıdır. Dosyayı 10 bayt ile büyütmek için şunu kullanın:

 truncate -s +10 file.txt 

cevap bulundu: /server//a/343726/70242

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.