আমি কীভাবে লিনাক্সে 1 জিবি র‌্যান্ডম ফাইল তৈরি করব?


88

আমি ব্যাশ শেল ব্যবহার করছি এবং পাইপ কমান্ড থেকে বের চাই openssl rand -base64 1000কমান্ড ddযেমন dd if={output of openssl} of="sample.txt bs=1G count=1। আমি ভেরিয়েবলগুলি ব্যবহার করতে পারি বলে মনে করি তবে কীভাবে এটি করা যায় তা সম্পর্কে আমি নিশ্চিত নই। আমি ফাইলটি তৈরি করতে চাইছি কারণ আমি এলোমেলো পাঠ্য সহ একটি 1 জিবি ফাইল চাই।

উত্তর:


130

if=প্রয়োজন হয় না, আপনি ddপরিবর্তে কিছু পাইপ করতে পারেন :

something... | dd of=sample.txt bs=1G count=1

এখানে দরকারী হবে না যেহেতু openssl randযাহাই হউক না কেন বাইটের সংখ্যা উল্লেখ করা প্রয়োজন। সুতরাং আপনি আসলে প্রয়োজন হবে না dd- এই কাজ করবে:

openssl rand -out sample.txt -base64 $(( 2**30 * 3/4 ))

1 গিগাবাইট সাধারণত 2 30 বাইট হয় (যদিও আপনি পরিবর্তে 10**910 9 বাইট ব্যবহার করতে পারেন )। * 3/4অংশ করুন Base64- ওভারহেড জন্য অ্যাকাউন্ট, উপার্জন এনকোড আউটপুট 1 গিগাবাইট।

বিকল্পভাবে, আপনি ব্যবহার করতে পারেন /dev/urandom, তবে এটি ওপেনএসএসএল থেকে কিছুটা ধীর হবে:

dd if=/dev/urandom of=sample.txt bs=1G count=1

ব্যক্তিগতভাবে, আমি ব্যবহার bs=64M count=16বা অনুরূপ হবে:

dd if=/dev/urandom of=sample.txt bs=64M count=16

2
আমি superuser.com/questions/467697/… এ বড় ফাইলগুলি সঙ্কুচিত করার বিষয়ে একটি প্রশ্ন পোস্ট করেছি এবং আপনাকে পরামর্শ দেওয়া হয়েছিল যে ব্যবহার /dev/urandomকরে বাইনারি ফাইল তৈরি করা হয়, সত্যিকারের পাঠ্য ফাইল নয়।
চিনাবাদামমনেকি

2
টুইটারে আপনার মতো কিছু লাগবে dd if=/dev/urandom bs=750M count=1 | uuencode my_sample > sample.txt
স্কট

3
@PeanutsMonkey: কোন একক "বাস্তব জগতে দৃশ্যকল্প" এর কিছু পরিস্থিতিতে, লেখার গিগাবাইট সঙ্গে তার আচরণ হতে পারে অন্যদের - JPEGs আউট এর গিগাবাইট, অথবা কম্পাইল সফ্টওয়্যার গিগাবাইট সঙ্গে ... আপনি টেক্সট অনেকটা চান, একটি ডাউনলোড উইকিপিডিয়া ডাম্প জন্য উদাহরণ।
মাধ্যাকর্ষণ

2
@ পানটসমোনকি: dd7৫০,০০০,০০০ বাইট পড়ে /dev/urandomএবং এগুলিতে পাইপ দেয় uuencodeuuencodeএটির ইনপুটটি বেস 64 এর এনকোডিংয়ের আকারে এনকোড করে (অন্যান্য প্রোগ্রামের সাথে অগত্যা সুসংগত নয়)। অন্য কথায়, এটি বাইনারি ডেটা পাঠ্যে রূপান্তর করে। আমি 750 এম ব্যবহার করেছি কারণ আমি গ্রাবিটির বক্তব্যকে বিশ্বাস করি যে বেস 64 টি এনকোডিংটি ডেটা 33⅓% দ্বারা প্রসারিত করে, তাই আপনার পাঠ্য ফাইলে আপনি যতটা বাইনারি ডেটা চান তার জন্য আপনাকে জিজ্ঞাসা করতে হবে।
স্কট

3
দ্রষ্টব্য যদি এটি বলে যে dd: warning: partial read (33554431 bytes); suggest iflag=fullblockএটি একটি কাটা ফাইল তৈরি করবে তাই iflag=fullblockপতাকা যুক্ত করুন , তবে এটি কার্যকর হয়।
রজারডপ্যাক

25

একটি 1GB.bin এলোমেলো সামগ্রী ফাইল তৈরি করুন:

dd if = / dev / urandom of = 1GB.bin bs = 64M গণনা = 16 iflag = ফুলব্লক


3
আমার জন্য, iflag=fullblockঅন্যান্য উত্তরের তুলনায় প্রয়োজনীয় সংযোজন ছিল।
dojuba

2

আপনি যদি ঠিক 1 জিবি চান, তবে আপনি নিম্নলিখিতগুলি ব্যবহার করতে পারেন:

ওপেনসেল র‌্যান্ড-আউট $ টেস্টফিল-বেস 64792917038; কাটা কাটা -s-1 $ পরীক্ষাফাইলে

ওপেনএসএল কমান্ড একটি ফাইল ঠিক 1 বাইটকে খুব বড় করে তোলে। বিচ্ছিন্ন কমান্ডটি ছাঁটাই করে যে বাইট বন্ধ।


যে অতিরিক্ত বাইট সম্ভবত কারণ -base64। এটি অপসারণের ফলে সঠিক আকারের ফাইল থাকবে in
ড্যানিয়েল

-1

এই স্ক্রিপ্ট চেষ্টা করুন।

#!/bin/bash
openssl rand -base64 1000 | dd of=sample.txt bs=1G count=1

এই স্ক্রিপ্টটি যতক্ষণ না আপনি ব্যবহার করতে আপত্তি করেন না ততক্ষণ কাজ করতে পারে /dev/random

#!/bin/bash
dd if=/dev/random of="sample.txt bs=1G count=1"

8
এটি /dev/randomকরার জন্য খুব ভাল কারণ না থাকলে আমি এটিকে নষ্ট করার প্রস্তাব দিই না। /dev/urandomঅনেক সস্তা।
আনসগার ওয়াইচারস

1
এছাড়াও, $var=(command)এই প্রসঙ্গে বৈধ সিনট্যাক্স নয়।
মাধ্যাকর্ষণ

@ গ্রায়েটি - আপনি যখন বলেন যে এটি বৈধ নয়, আপনার অর্থ কী?
চিনাবাদামমনেকি

আমি ঠিক তার অর্থ - এটি ভুল mean
মাধ্যাকর্ষণ

3
@ গ্রায়েটি, @ পিন্টসমোনকি: তিনি একটি টাইপো করেছেন; তিনি অভিপ্রেত random=$(openssl rand -base64 1000)। যদিও আমি আপনাকে জিজ্ঞাসা করব যে bashআপনাকে কোনও ভেরিয়েবলের জন্য গিগাবাইট-দীর্ঘ মান নির্ধারণ করতে দেয় কিনা । এবং এমনকি যদি আপনি বলেন random=$(openssl rand -base64 1000), পরবর্তী অর্থবোধ if=$randomকরে না।
স্কট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.