सटीक आकार की फ़ाइल कैसे बनाएँ
हर सिस्टम में इसके लिए एक कमांड है, और तीनों नीचे हैं। वे आपको ठीक सही बाइट संख्या की फ़ाइल देती हैं - और बहुत से टेस्ट के लिए आपको बस यही चाहिए। इस पेज की हर कमांड प्रकाशित करने से पहले उस सिस्टम पर चलाई गई जिसकी वह है।
छोटा जवाब
Windows: fsutil file createnew name 10485760। Linux: dd if=/dev/zero of=name
bs=1M count=10। macOS: mkfile 10m name। आकार बाइट में होते हैं, और आपके
फ़ाइल मैनेजर के गिनने के तरीके से 10 MB यानी 10485760।
Windows
fsutil, और बिना किसी अतिरिक्त चीज़ वाला PowerShell रूप
fsutil Windows के साथ आता है। यह आकार बाइट में लेता है, इसलिए पहले
संख्या निकाल लें - 10 MB यानी 10485760, 100 MB यानी 104857600, 1 GB यानी 1073741824।
fsutil file createnew test10mb.bin 10485760
Windows 11 पर मापा गया: यह सामान्य प्रॉम्प्ट से चलता है और उन्नत प्रॉम्प्ट नहीं माँगता, और फ़ाइल ठीक 10485760 बाइट की बनती है।
PowerShell बिना किसी दूसरे प्रोग्राम को बुलाए यही कर सकता है, और इकाइयाँ समझता है:
$file = New-Object System.IO.FileStream "test10mb.bin", Create, ReadWrite
$file.SetLength(10MB)
$file.Close()
PowerShell में 10MB का मतलब 10485760 बाइट है, वही 1024 आधारित गिनती जो एक्सप्लोरर
इस्तेमाल करता है, इसलिए ऊपर की दोनों कमांड एक ही आकार बनाती हैं।
Linux
dd, truncate और fallocate, और वह अंतर जो लोगों को फँसाता है
dd वह है जिसे सब जानते हैं। यह बाइट सच में लिखता है:
dd if=/dev/zero of=test10mb.bin bs=1M count=10
truncate तुरंत होता है, और यही पेंच है। Alpine Linux पर मापने पर फ़ाइल 10485760 बाइट
बताती है और शून्य ब्लॉक घेरती है - यह एक स्पार्स फ़ाइल है। जो
भी इसे पढ़ता है उसे दस मेगाबाइट शून्य मिलते हैं, पर डिस्क ने जगह कभी दी ही नहीं:
truncate -s 10M test10mb.bin
अपलोड सीमा परखने के लिए यह ठीक है और डिस्क कोटा परखने के लिए भ्रामक। जब जगह असली होनी चाहिए तब
fallocate की ओर जाएँ:
fallocate -l 10M test10mb.bin
और जब सामग्री असंपीड्य होनी चाहिए, ताकि कोई आर्काइवर उसे फिर से छोटा न कर सके:
head -c 10485760 /dev/urandom > test10mb.bin
macOS
mkfile, जो स्पार्स नहीं है, और वे दो जिन्हें आप पहले से जानते हैं
macOS में mkfile आता है। macOS 26.6.2 पर मापा गया: 10485760 बाइट और 20480 ब्लॉक, यानी
जगह वादे से नहीं, सच में आवंटित होती है:
mkfile 10m test10mb.bin
dd और truncate भी वहाँ हैं और Linux की तरह ही चलते हैं:
dd if=/dev/zero of=test10mb.bin bs=1m count=10
truncate -s 10M test10mb.bin
यह कहाँ काम करना बंद कर देता है
सही आकार की फ़ाइल सही क़िस्म की फ़ाइल नहीं होती
ऊपर की सारी चीज़ें आपको शून्यों का एक ब्लॉक देती हैं। जब जाँचा जा रहा हिस्सा सिर्फ़ आकार देखता है - अपलोड सीमा, कोटा, ट्रांसफ़र - तब यह काफ़ी है। जिस पल कोई चीज़ फ़ाइल को खोलती है, यह काफ़ी नहीं रहता।
मापा गया, और खुद करके देखना लायक है: fsutil से 2 MB की फ़ाइल बनाएँ, उसका नाम
photo.png रखें, और किसी इमेज लाइब्रेरी को दें। Pillow जवाब देता है cannot
identify image file। यह PNG नहीं है। यह कभी था ही नहीं - सिर्फ़ नाम ऐसा कहता था।
यह सुनने में जितना लगता है उससे ज़्यादा मायने रखता है, क्योंकि टेस्ट फिर किस तरफ़ विफल होता है यही सवाल है। आपका अपलोड एंडपॉइंट फ़ाइल ठुकरा देता है, आपका टेस्ट हरा हो जाता है, और आप मान लेते हैं कि आकार सीमा काम करती है। उसने फ़ाइल आकार की वजह से नहीं ठुकराई। उसने इसलिए ठुकराई कि बाइट तस्वीर नहीं थे, और जिस नियम को आप जाँचना चाहते थे वह कभी छुआ ही नहीं गया।
- कोई पार्सर आकार का कोई नियम देखे जाने से पहले ही उसे ठुकरा देता है
- थंबनेल का चरण विफल होता है और जो त्रुटि आप पढ़ते हैं वह थंबनेल के बारे में होती है
- कोई एंटीवायरस या सामग्री जाँच उसे तीसरे कारण से मना कर देती है
- कोई व्यूअर कुछ नहीं दिखाता, और कोई नहीं बता सकता कि यही बग है या नहीं
दूसरा रास्ता
उस फ़ॉर्मैट की असली फ़ाइल, ठीक उसी आकार में जो आपने माँगा
Testing Files Generator यही करता है। फ़ाइल अपने फ़ॉर्मैट की सच्ची फ़ाइल है - वह अपने सॉफ़्टवेयर में खुलती है - और उसमें ठीक उतने बाइट हैं जितने आपने माँगे, बाइट तक:
tfg generate --format png --size 10mb --out ./fixtures
ऐसा आकार माँगें जिस तक कोई फ़ॉर्मैट नहीं पहुँच सकता और आपको न्यूनतम सीमा और उसका कारण बताने वाली त्रुटि मिलती है, गलत आकार की फ़ाइल कभी नहीं। फ़ॉर्मैट पेज हर फ़ॉर्मैट को उसकी सबसे छोटी संभव फ़ाइल के साथ सूचीबद्ध करता है।
और एक सीमा एक नहीं, तीन टेस्ट केस होती है, इसलिए टूल तीनों बनाता है:
tfg generate --format pdf --boundary 10mb --out ./edges
इससे आपको 10485759, 10485760 और 10485761 बाइट की फ़ाइलें मिलती हैं, और एक मैनिफ़ेस्ट जो बताता है कि आपके सिस्टम को किन्हें स्वीकार करना चाहिए और किन्हें अस्वीकार। उपयोग के मामलों का पेज इसे और चार दूसरे काम समझाता है जिनके लिए यह बना है।
मुफ़्त और ओपन सोर्स, GPL-3.0। साइन अप की ज़रूरत नहीं। Windows और macOS के डाउनलोड हस्ताक्षरित हैं और बिना चेतावनी के शुरू होते हैं।
तो कौन सा इस्तेमाल करें?
-
सिस्टम की कमांड इस्तेमाल करें
जब कुछ भी फ़ाइल नहीं खोलता। ऐसे एंडपॉइंट पर आकार सीमा की जाँच जो पहले आकार देखता है, कोई ट्रांसफ़र, कोटा, डिस्क भरने की स्थिति। यह एक पंक्ति है और पहले से इंस्टॉल है।
-
असली जनरेटर इस्तेमाल करें
जब कुछ भी फ़ाइल को पार्स, रेंडर, इंपोर्ट या एक्सट्रैक्ट करता है - और जब आपको कल दूसरी मशीन पर वही फ़िक्स्चर बाइट-दर-बाइट फिर से चाहिए।
दोनों इस पेज पर इसलिए हैं क्योंकि दोनों कभी-कभी सही होते हैं। जिस गलती से बचना है वह है दूसरे की ज़रूरत वाली जगह पहले को इस्तेमाल करना और हरे टेस्ट को सबूत मान लेना।