कम समय में बड़े आकार की फ़ाइल बनाना


18

मैं एक बड़ी फ़ाइल बनाना चाहता हूं ~ 10G शून्य और यादृच्छिक मूल्यों से भरा। मैंने प्रयोग करने की कोशिश की है:

dd if=/dev/urandom of=10Gfile bs=5G count=10

यह लगभग 2Gb की फाइल बनाता है और एक्जिट स्टेटस '0' से बाहर निकलता है। मैं समझने में असफल क्यों?

मैंने भी फ़ाइल का उपयोग करके बनाने की कोशिश की:

head -c 10G </dev/urandom >myfile

इसे बनाने में लगभग 28-30 मिनट लगते हैं। लेकिन मैं चाहता हूं कि यह तेजी से बने। किसी के पास कोई हल है?

इसके अलावा, मैं तुलना के लिए एक ही (छद्म) यादृच्छिक पैटर्न के साथ कई फाइलें बनाना चाहता हूं। क्या कोई ऐसा करने का तरीका जानता है?


AskUbuntu में आपका स्वागत है! संभवत: आपको ddब्लॉक आकार के कारण त्रुटि हो रही है । आप इस पोस्ट को देखना चाहते हैं stackoverflow.com/questions/6161823/… इसके पास कुछ अच्छे उत्तर हैं कि सर्वश्रेष्ठ ब्लॉक आकार की गणना कैसे करें, साथ ही साथ कुछ उपयोगकर्ता स्क्रिप्ट / प्रोग्राम और अन्य सुझावों का उपयोग करें dd
कोई समय

1
इसके अलावा stackoverflow.com/questions/257844/…
muru

जवाबों:


12

फालोकेट का उपयोग करने के बारे में कैसे, यह उपकरण हमें एक फ़ाइल के लिए स्थान का प्रचार करने की अनुमति देता है (यदि फाइल सिस्टम इस सुविधा का समर्थन करता है)। उदाहरण के लिए, 'उदाहरण' नामक फ़ाइल में 5GB डेटा आवंटित करना, कोई भी कर सकता है:

fallocate -l 5G example

यह dd की तुलना में बहुत तेज़ है, और बहुत तेज़ी से स्थान आवंटित करेगा।


क्या इस फ़ाइल में यादृच्छिक डेटा है या इसमें जो कुछ भी हुआ है वह आवंटित डिस्क स्थान पर है?
cprn

इसमें सभी शून्य शामिल होंगे। मूल रूप से, अंतरिक्ष का प्रचार किया जाता है, और यदि आप डेटा को संशोधित नहीं करते हैं तो इसे शून्य माना जाएगा।
कॉलिन इयान किंग

/dev/zeroफिर यह डंपिंग से जल्दी कैसे हो सकता है ?
cprn

1
यह बहुत तेज़ है क्योंकि यह एक सिस्टम कॉल है, जो ब्लॉक प्रचार (जैसे कि यह अंतरिक्ष को आरक्षित करता है लेकिन न्यूनतम I / O करता है) करता है, जहाँ dd'ing से / dev / शून्य से एक फ़ाइल में रीड / राइट का लोड शामिल होता है।
कॉलिन इयान किंग

मैं यह एक ऊपर कर रहा हूँ। एक आखिरी सवाल हालांकि ... मैं truncateअतीत में इस्तेमाल कर रहा था और यह पाया कि यह भौतिक रूप से डिवाइस पर फ़ाइल को आवंटित नहीं करता है और बस उपलब्ध जगह की परवाह किए बिना, तब तक एक मनमाना बड़ी फ़ाइल बनाता है। क्या आप सुनिश्चित हैं कि ऐसा नहीं है fallocate? मैं इसकी जाँच करूँगा लेकिन मैं एक मोबाइल पर हूँ ...
cprn

9

आप ddपूरी तरह से शून्य से युक्त फ़ाइल बनाने के लिए उपयोग कर सकते हैं । उदाहरण:

dd if=/dev/zero of=zeros.img count=1 bs=1 seek=$((10 * 1024 * 1024 * 1024 - 1))

यह बहुत तेज़ है क्योंकि केवल एक बाइट वास्तव में भौतिक डिस्क को लिखा जाता है। हालाँकि, कुछ फ़ाइल सिस्टम इसका समर्थन नहीं करते हैं।

यदि आप छद्म यादृच्छिक सामग्री वाली फ़ाइल बनाना चाहते हैं, तो चलाएँ:

dd if=/dev/urandom of=random.img count=1024 bs=10M

मेरा सुझाव है कि आप बफर आकार ( bs) के रूप में 10M का उपयोग करें । ऐसा इसलिए है क्योंकि 10M बहुत बड़ा नहीं है, लेकिन यह अभी भी आपको एक अच्छा बफर आकार देता है। यह बहुत तेज़ होना चाहिए, लेकिन यह हमेशा आपकी डिस्क गति और प्रसंस्करण शक्ति पर निर्भर करता है।


5

Dd का उपयोग करते हुए, यह यादृच्छिक डेटा से भरी 10 GB फ़ाइल बनाना चाहिए:

dd if=/dev/urandom of=test1 bs=1M count=10240

count मेगाबाइट में है।

Source: stackoverflow - लिनक्स में दिए गए आकार के साथ फाइल कैसे बनाएँ?


मैंने बस कोशिश की dd if=/dev/urandom of=10Gfile bs=500M count=20, जिसने मुझे 20 मिनट के भीतर 10237226010 बाइट्स दिए।
जोस

1

आपके प्रश्न के पहले भाग का उत्तर देना:

एक बार में 5GB का बफर लिखने की कोशिश करना एक अच्छा विचार नहीं है क्योंकि आपका कर्नेल शायद उसका समर्थन नहीं करता है। यह आपको किसी भी मामले में कोई प्रदर्शन लाभ नहीं देगा। एक समय में 1M लिखना एक अच्छा अधिकतम है।


0

यह सवाल 5 साल पहले खोला गया था। मैं बस इस पर ठोकर खाई और अपने निष्कर्षों को जोड़ना चाहता था।

यदि आप बस उपयोग करते हैं

dd if=/dev/urandom of=random.img count=1024 bs=10M

यह काफी तेजी से काम करेगा जैसा कि xiaodongjie द्वारा समझाया गया है। लेकिन, आप इसका उपयोग करके इसे और भी तेज बना सकते eatmydataहैं

eatmydata dd if=/dev/urandom of=random.img count=1024 bs=10M

यह क्या eatmydataकरता है यह अक्षम करता है fsync डिस्क को तेजी से लिखता है।

आप इसके बारे में https://flamingspork.com/projects/libeatmydata/ पर अधिक पढ़ सकते हैं ।


1
जिस तरह से मैं इसे देखता हूं ddवह तेजी से शुरू होता है, और इसे एक कारण के लिए libEAT-MY-DATA कहा जाता है।
कारेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.