एक मनमाने ढंग से बड़ी "नकली" फ़ाइल बनाना


16

मैं करने के लिए इसी तरह की एक विशेष फ़ाइल बनाने के लिए चाहते हैं /dev/nullया /dev/random, जहां फ़ाइल करता है वास्तव में नहीं मौजूद हैं, लेकिन आप, यह सब एक ही से पढ़ सकते हैं, सिवाय इसके कि मैं वास्तव में फ़ाइल के स्पष्ट आकार पर एक सीमा निर्धारित कर सकता है।

इसे दूसरे तरीके से रखने के लिए, मैं एक विशेष फ़ाइल बनाना चाहता हूँ, जहाँ (मैं 500GB पर कैप सेट करता हूँ) जब मैं फ़ाइल को "कैट" करूँगा तो यह सभी 500GB फ़ाइल को आउटपुट कर देगी और फिर रुक जाएगी। इसे वास्तविक 500GB फ़ाइल के समान कार्य करने की आवश्यकता होती है, लेकिन स्थान न लेते हुए। इस फ़ाइल की विषयवस्तु कोई मायने नहीं रखती है, यह सब \0की तरह हो सकता है /dev/null, या बस एक छोटी सी स्ट्रिंग को भेजा जा सकता है, या जो भी हो।

क्या यह ऐसा कुछ है जो सक्षम है? केवल एक चीज जो मुझे दूर से मिल रही है वह है मैन पेज के बारे में बात करना mknod, लेकिन वे बहुत उपयोगी नहीं थे।

जवाबों:


17

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

$ dd if=/dev/null of=sparse bs=1024 count=1 seek=524288000
0+0 records in
0+0 records out
0 bytes (0 B) copied, 2.4444e-05 s, 0.0 kB/s
$ ls -l sparse 
-rw-rw-r--. 1 ignacio ignacio 536870912000 May  9 22:25 sparse
$ du -h sparse
0   sparse

यह पूरी तरह से काम करता है। सबसे अच्छा मामला मैं एक समाधान की उम्मीद कर रहा था, जहां मैं वास्तव में यह बता सकता हूं कि आउटपुट क्या है (जैसे, हर उस स्थिति के लिए जो आप डेटा को देखते हैं, उस स्थिति का एक हैश होगा या उन पंक्तियों के साथ कुछ होगा), लेकिन वह बहुत सुंदर था वहाँ। यह निश्चित रूप से अभी के लिए काम करता है, धन्यवाद!
मेदियोरे गोफर

1
@MediocreGopher, आप निश्चित रूप से FUSE के साथ ऐसा कुछ कर सकते हैं ।
cjm

1

पोर्टेबल dd से परे / आधारित समाधान पहले से ही उल्लेख किया है कुछ यूनिक्स विशेष आदेश है:

कम से कम Solaris , MacOS / X और Irix पर :

mkfile -n 500m sparseFile

HP-UX पर prealloc , AIX lmktemp पर। और कई लिनक्स डिस्ट्रीब्यूशन ट्रंकेट हैं


1

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

mkfifo my_special_file
yes | head -n 100 > my_special_file&
cat my_special_file

बेशक, आप पाइप में डेटा उत्पन्न करने के लिए किसी जटिल स्क्रिप्ट सहित किसी अन्य कमांड का उपयोग कर सकते हैं।


0

ठीक है, dd के साथ, आप एक अवरोध और एक गिनती निर्दिष्ट कर सकते हैं, और इस तरह आकार को सीमित कर सकते हैं:

dd if=/dev/urandom count=5 bs=1024 > nullfile

यदि आप इसे पढ़ना चाहते हैं, तो इसे पाइप करें:

dd if=/dev/urandom count=5 bs=1024 | yourReadingProcess 

पूर्व समय में, मेरे द्वारा किए गए प्रत्येक लिनक्स इंस्टॉलेशन में कुछ नेटवर्किंग टूल, पोर्टमैप, इनएट। डी। और जैसे थे, और एक इनसेट। डी। था, जहां कुछ सेवाएं हमेशा निर्दिष्ट होती थीं, उनमें से एक का वर्णन / नाम चारगेन था, अगर मुझे सही याद है।

(... एक मिनट बाद ...)

हाँ। / Etc / सेवाओं में, आप पाते हैं

chargen         19/tcp          ttytst source
chargen         19/udp          ttytst source

इसलिए मुझे लगता है कि यह कुछ का परीक्षण करने के लिए एक सेवा है, और जो चार्ट भेजता है - शायद यादृच्छिक - नेटवर्क पर। मैं केवल अपने पीसी पर /etc/xinet.d/chargen ढूंढता हूं। अधिक infos हैं:

# default: off
# description: An xinetd internal service which generate characters.  The
# xinetd internal service which continuously generates characters until the
# connection is dropped.  The characters look something like this:
# !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg
# This is the tcp version.

हालाँकि, मुझे नहीं पता कि इसे अपने उद्देश्य के लिए कैसे उपयोग किया जाए।

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