बहुत सारे शून्य बाइट्स के साथ एक परीक्षण फ़ाइल बनाएं


25

मुझे पता है कि खाली फाइल कैसे बनाई जाती है:

touch /var/tmp/nullbytes

लेकिन मैं 1MB फ़ाइल कैसे बना सकता हूं जिसमें केवल बैश के साथ कमांडलाइन पर nullbytes हैं?


SU सवाल संबंधित है: superuser.com/q/609020/151431
terdon

1
+1। दिलचस्प सवाल। क्या कोई व्यक्ति विस्तृत रूप से बता सकता है कि इस तरह की फ़ाइल की आवश्यकता किस परिदृश्य में होगी ..?
कैंट पवार

1
मुझे chkrootkit पर एक दुर्घटना का अनुकरण करने की आवश्यकता थी: unix.stackexchange.com/questions/86866/…
rubo77

जवाबों:


56

GNU के साथ truncate:

truncate -s 1M nullbytes

(यह मानते हुए nullbytesकि पहले से मौजूद नहीं था) 1 mebibyte विरल फ़ाइल बनाएगा। यह एक ऐसी फाइल है जो शून्य से भरी हुई दिखाई देती है लेकिन यह डिस्क पर कोई स्थान नहीं लेती है।

इसके बिना truncate, आप ddइसके बजाय उपयोग कर सकते हैं :

dd bs=1048576 seek=1 of=nullbytes count=0

(कुछ ddकार्यान्वयन के साथ , आप 1048576 को बदल सकते हैं 1M)

यदि आप डिस्क स्थान को लिनक्स और कुछ फाइल सिस्टम पर आवंटित करते हैं, तो आप कर सकते हैं:

fallocate -l 1M nullbytes

यह वास्तव में डिस्क को डेटा लिखने के बिना अंतरिक्ष आवंटित करता है (अंतरिक्ष आरक्षित है लेकिन असिंचित के रूप में चिह्नित है)।

dd < /dev/zero bs=1048576 count=1 > nullbytes

वास्तव में डिस्क पर शून्य लिखेंगे। यह कम से कम कुशल है, लेकिन अगर आपको उस फ़ाइल को एक्सेस करने के लिए अपने ड्राइव को स्पिन करने की आवश्यकता है, तो वह वही है जिसके लिए आप जाना चाहते हैं।

या @ mikeserv की ddNUL बाइट्स बनाने के लिए चाल के तरीके :

dd bs=1048576 count=1 conv=sync,noerror 0> /dev/null > nullbytes

जीएनयू के साथ एक विकल्प जिसमें headब्लॉक आकार निर्दिष्ट करना शामिल नहीं है (1M ठीक है, लेकिन उदाहरण के लिए 10G नहीं होगा):

head -c 1M < /dev/zero > nullbytes

या एक प्रगति बार पाने के लिए:

pv -Ss 1M < /dev/zero > nullbytes

truncateस्वैप वॉल्यूम के रूप में उपयोग की जाने वाली खाली फ़ाइल बनाने के लिए उपयोग न करें ... यह काम नहीं करेगा! ddइस मामले में इसके बजाय का उपयोग करें ।
एलियास प्रोब्स्ट 12

1
@EliasProbst, ITYM कॉपी / dev / शून्य के बजाय , एक विरल फ़ाइल का उपयोग न करेंddमैं के रूप में अच्छी तरह से दिखाया के रूप में विरल फ़ाइलें बना सकते हैं।
स्टीफन चेज़लस 12

2
फैलोकैट बनाने का सबसे अच्छा और तेज़ तरीका है क्योंकि यह अंतरिक्ष को आरक्षित करता है और इसे तेज़ी से करता है लेकिन यह कुछ भी लिखने की जहमत नहीं
उठाता है

... या bs=1kx1k। या <&1 dd bs=1kx1k conv=sync,noerror count="$rpt" | cat >fileशाब्दिक के लिए डिस्क बात लिखें। 100% नहीं पर कितना त्रुटि खो त्रुटि पढ़ने के लिए मजबूर कर सकते हैं, हालांकि।
माइकस

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