परीक्षण उद्देश्यों के लिए मुझे एक निश्चित आकार की एक फ़ाइल (एक अपलोड सीमा का परीक्षण करने के लिए) उत्पन्न करनी होगी।
लिनक्स पर एक निश्चित आकार की फ़ाइल बनाने के लिए एक कमांड क्या है?
परीक्षण उद्देश्यों के लिए मुझे एक निश्चित आकार की एक फ़ाइल (एक अपलोड सीमा का परीक्षण करने के लिए) उत्पन्न करनी होगी।
लिनक्स पर एक निश्चित आकार की फ़ाइल बनाने के लिए एक कमांड क्या है?
जवाबों:
dd if=/dev/zero of=upload_test bs=file_size count=1
file_sizeबाइट्स में आपकी परीक्षण फ़ाइल का आकार कहां है
ddइसके मूल्यों के लिए 2 ^ 32 की सीमा है, इसलिए 4 जीबी से बड़ी फ़ाइल बनाने के लिए, एक चाल है dd if=/dev/zero of=test bs=1M count=<size in megabytes>:।
कृपया, आधुनिक आसान और तेज है। लिनक्स पर, (एक चुनें)
truncate -s 10G foo
fallocate -l 5G bar
यह जरूरत है कि कहा जा करने के लिए truncateएक फाइल सिस्टम पर समर्थन स्पार्स फ़ाइलों स्पार्स फ़ाइल पैदा करेगा और fallocateनहीं होगा। एक विरल फ़ाइल वह है जहाँ फ़ाइल बनाने वाली आबंटन इकाइयाँ वास्तव में उपयोग होने तक आवंटित नहीं की जाती हैं । फ़ाइल के लिए मेटा डेटा होगा लेकिन कुछ काफी अंतरिक्ष लेकिन संभावना नहीं है, जहां फ़ाइल के वास्तविक आकार के पास तक ले। आपको अधिक जानकारी के लिए विरल फ़ाइलों के बारे में संसाधनों से परामर्श करना चाहिए क्योंकि इस प्रकार की फ़ाइल के फायदे और नुकसान हैं। एक गैर-विरल फ़ाइल के पास इसके ब्लॉक (आवंटन इकाइयां) हैं जो समय से पहले आवंटित किए गए हैं जिसका अर्थ है कि जहां तक फाइल सिस्टम इसे देखता है, अंतरिक्ष आरक्षित है। इसके अलावा fallocateन ही truncateफ़ाइल की सामग्री को एक निर्धारित मूल्य पर सेट किया जाएगा जैसे dd, इसके बजाय किसी फ़ाइल के साथ आवंटित की गई सामग्री fallocateया truncateकोई कचरा मूल्य हो सकता है जो निर्माण के दौरान आवंटित इकाइयों में मौजूद था और यह व्यवहार वांछित हो सकता है या नहीं। यह ddसबसे धीमा है क्योंकि यह वास्तव में कमांड लाइन विकल्प के साथ निर्दिष्ट संपूर्ण फ़ाइल स्ट्रीम में डेटा का मूल्य या हिस्सा लिखता है।
यह व्यवहार संभवतः भिन्न हो सकता है - किसी भी मानक या विनिर्देश के लिए उपयोग की गई फ़ाइल प्रणाली और उस फ़ाइल सिस्टम के अनुरूप होने पर निर्भर करता है। इसलिए यह सलाह दी जाती है कि उचित विधि का उपयोग करने के लिए उचित शोध किया जाए।
truncate। इसके ऊपर के सिंटैक्स का उपयोग करके एक शून्य-आकार की फ़ाइल का उत्पादन किया गया। 'मैन पेज' का fallocateकहना है कि इसके द्वारा बनाई गई फाइलें spaceडेटा के बजाय खाली हैं । ऐसा प्रतीत होता है कि यह कुछ अपेक्षित मामलों के लिए उपयोगी नहीं होगा जैसे "1G फ़ाइल को कॉपी करने में कितना समय लगता है"।
brew install coreutils:। यह कमांड के सामने एक g जोड़ देगा , इसलिए आपको इसे इस तरह चलाना होगा gtruncate -s 10G foo:। उम्मीद है की यह मदद करेगा!
NTFSविभाजन पर काम नहीं करता है ।
बस टॉम की पोस्ट का पालन करने के लिए , आप स्पार्स फ़ाइलों को बनाने के लिए dd का उपयोग कर सकते हैं:
dd if=/dev/zero of=the_file bs=1 count=0 seek=12345
यह अधिकांश यूनिक्स पर एक "छेद" के साथ एक फ़ाइल बनाएगा - डेटा वास्तव में डिस्क पर नहीं लिखा जाएगा, या किसी भी स्थान को तब तक उठाएगा जब तक कि शून्य के अलावा कुछ और इसमें लिखा न जाए।
count=0, bs * seekफ़ाइल का आकार बन जाता है
OSX (और सोलारिस, जाहिरा तौर पर) पर, mkfileकमांड उपलब्ध है:
mkfile 10g big_file
यह एक 10 जीबी फ़ाइल बनाता है जिसका नाम "big_file" है। यह दृष्टिकोण यहां मिला ।
truncateऔर fallocateकमांड उपलब्ध नहीं हैं। ddयह भी ऊपर वर्णित के रूप में काम करता है, हालांकि यह mमेगाबाइट के लिए है, नहीं M।
इस कमांड का उपयोग करें:
dd if = $ INPUT-FILE = $ OUTPUT-FILE bs = $ BLOCK-SIZE काउंट = $ NUM-BLOCKS
एक बड़ी (खाली) फ़ाइल बनाने के लिए, सेट करें $INPUT-FILE=/dev/zero।
फ़ाइल का कुल आकार होगा $BLOCK-SIZE * $NUM-BLOCKS।
बनाई गई नई फाइल होगी $OUTPUT-FILE।
आप इसे प्रोग्रामेटिक रूप से कर सकते हैं:
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
int main() {
int fd = creat("/tmp/foo.txt", 0644);
ftruncate(fd, SIZE_IN_BYTES);
close(fd);
return 0;
}
यह दृष्टिकोण विशेष रूप से फ़ाइल को मेमोरी में mmap करने के लिए उपयोगी है ।
फ़ाइल को सही आकार देने के लिए निम्न कमांड का उपयोग करें:
# du -B1 --apparent-size /tmp/foo.txt
सावधान रहे:
# du /tmp/foo.txt
शायद 0 को प्रिंट करेगा क्योंकि यह आपके फ़ाइल सिस्टम द्वारा समर्थित होने पर स्पार्स फ़ाइल के रूप में आवंटित किया गया है।
यह भी देखें: आदमी 2 खुला और आदमी 2 छोटा
इनमें से कुछ उत्तर आपने /dev/zeroअपने डेटा के स्रोत के लिए उपयोग किए हैं। यदि आपके परीक्षण नेटवर्क ने गति अपलोड की है, तो यह सबसे अच्छा विचार नहीं हो सकता है यदि आपका एप्लिकेशन कोई संपीड़न कर रहा है, तो जीरो कम्प्रेस से भरी फ़ाइल वास्तव में अच्छी तरह से संपीड़ित होती है । फ़ाइल बनाने के लिए इस कमांड का उपयोग करना
dd if=/dev/zero of=upload_test bs=10000 count=1
मैं upload_testलगभग 200 बाइट्स को कम कर सकता था । तो आप अपने आप को ऐसी स्थिति में डाल सकते हैं जहाँ आपको लगता है कि आपकी अपलोडिंग 10KB फाइल है लेकिन यह वास्तव में बहुत कम होगी।
मेरा सुझाव है कि /dev/urandomइसके बजाय का उपयोग कर रहा है /dev/zero। मैं /dev/urandomबहुत अधिक के आउटपुट को संपीड़ित नहीं कर सका ।
/dev/zero, इसलिए /dev/urandomअच्छा है।
dd if=/dev/zero of=my_file.txt count=12345
बहुत सारे उत्तर हैं, लेकिन किसी ने भी अच्छी तरह से नहीं समझाया कि और क्या किया जा सकता है। Dd के लिए मैन पेजों को देखते हुए , फ़ाइल के आकार को बेहतर ढंग से निर्दिष्ट करना संभव है।
यह शून्य से भरा /tmp/zero_big_data_file.bin बनाने जा रहा है, जिसका आकार 20 मेगाबाइट है:
dd if=/dev/zero of=/tmp/zero_big_data_file.bin bs=1M count=20
यह शून्य से भरा /tmp/zero_1000bytes_data_file.bin बनाने जा रहा है, जिसका आकार 1000 बाइट्स है:
dd if=/dev/zero of=/tmp/zero_1000bytes_data_file.bin bs=1kB count=1
या
dd if=/dev/zero of=/tmp/zero_1000bytes_data_file.bin bs=1000 count=1
शेल कमांड के रूप में:
< /dev/zero head -c 1048576 > output
fallocateयदि आप डिस्क के लिए इंतजार नहीं करना चाहते हैं तो उपयोग करें ।
उदाहरण:
fallocate -l 100G BigFile
उपयोग:
Usage:
fallocate [options] <filename>
Preallocate space to, or deallocate space from a file.
Options:
-c, --collapse-range remove a range from the file
-d, --dig-holes detect zeroes and replace with holes
-i, --insert-range insert a hole at range, shifting existing data
-l, --length <num> length for range operations, in bytes
-n, --keep-size maintain the apparent size of the file
-o, --offset <num> offset for range operations, in bytes
-p, --punch-hole replace a range with a hole (implies -n)
-z, --zero-range zero and ensure allocation of a range
-x, --posix use posix_fallocate(3) instead of fallocate(2)
-v, --verbose verbose mode
-h, --help display this help
-V, --version display version