Dd द्वारा फाइल में डेटा कैसे जोड़ा जाए?


19

मैं एसएसडी में संग्रहीत फ़ाइल में नए डेटा को जोड़ना चाहता हूं।

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

लिनक्स कर्नेल में 4.1 FALLOC_FL_INSERT_RANGEविकल्प जोड़ा गया था। से fallocate(2) आदमी पेज :

मोड में FALLOC_FL_INSERT_RANGE ध्वज (लिनक्स 4.1 के बाद से उपलब्ध) को निर्दिष्ट करने से किसी भी मौजूदा डेटा को अधिलेखित किए बिना फ़ाइल आकार के भीतर एक छेद डालने से फ़ाइल स्थान बढ़ जाता है। छेद ऑफसेट पर शुरू होगा और लेन बाइट्स के लिए जारी रहेगा। फ़ाइल के अंदर छेद सम्मिलित करते समय, ऑफसेट पर शुरू होने वाली फ़ाइल की सामग्री को लेन बाइट्स द्वारा ऊपर की ओर (यानी, एक उच्च फ़ाइल ऑफसेट के लिए) स्थानांतरित किया जाएगा। फ़ाइल के अंदर एक छेद डालने से फ़ाइल का आकार लेन बाइट्स से बढ़ जाता है।

और हाल ही में इस विकल्प का समर्थन जोड़ा गया है करने के लिए util-linux:

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

इसलिए जब util-linuxसंस्करण २.३० जारी किया जाएगा और आपका लिनक्स डिस्ट्रो इस संस्करण में अपडेट हो जाएगा, तो हम निम्नलिखित के द्वारा फ़्लैश में फ़ाइल का आकार बढ़ाने में सक्षम होंगे:

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

128Mवर्तमान फ़ाइल आकार कहां है।


1

फ़ाइल में विरल छेद को जोड़ने का एक आसान तरीका है।

truncatedd से बहुत तेज है। फ़ाइल को 10 बाइट के उपयोग से विकसित करने के लिए:

 truncate -s +10 file.txt 

उत्तर मिला: https://serverfault.com/a/343726/70242

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.