আমি কীভাবে দ্রুত একটি বড় ফাইল তৈরি করতে পারি?


26

বলুন, 2 জিবি আকারের একটি ফাইল তৈরি করার দ্রুত এবং সহজ উপায় কী?

উত্তর:


36

জিরো-ভরাট পদ্ধতি (এখানে এড়াতে পরিবর্তিত সম্ভাব্য মেমরির bottlenecks ) 17 সেকেন্ড লেগেছে একটি এসএসডি উপর একটি 10 জিবি ফাইল তৈরি করতে এবং উবুন্টু এর গ্রাফিকাল ইন্টারফেস ক্ষমাহীন পরিণত হত।

$ time sh -c 'dd if=/dev/zero iflag=count_bytes count=10G bs=1M of=large; sync'
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 17.2003 s, 624 MB/s

real    0m17.642s
user    0m0.008s
sys     0m9.404s
$ du -B 1 --apparent-size large
10737418240     large
$ du -B 1 large
10737422336     large

ফলোঅোকট সরাসরি ফাইলের বরাদ্দ হওয়া ডিস্কের স্থানটি পরিচালনা করে তাত্ক্ষণিকভাবে বড় ফাইলগুলি তৈরি করে:

$ time sh -c 'fallocate -l 10G large; sync'

real    0m0.038s
user    0m0.000s
sys     0m0.016s
$ du -B 1 --apparent-size large
10737418240     large
$ du -B 1 large
10737422336     large

ট্র্যাঙ্কেট তাত্ক্ষণিকভাবে কাজ করে এবং স্পার্স ফাইলগুলি তৈরি করে যা ডেটা পরে লেখা না হওয়া পর্যন্ত আসল ডিস্ক স্পেস ব্যবহার করে না:

$ time sh -c 'truncate -s 10G large; sync'

real    0m0.014s
user    0m0.000s
sys     0m0.004s
$ du -B 1 --apparent-size large
10737418240     large
$ du -B 1 large
0       large

dd ... bs=2G count=12 জিবি মেমোরিতে পড়ে (এক read(2)কলে)। যদি আপনি মেমরির চাপ পেয়ে থাকেন তবে সম্ভবত এটি যাওয়ার উপায় নয়। আরও কম, ছোট ব্লকগুলি দ্রুত হতে পারে যদি এর অর্থ কম প্যাজিং হয়।
মৃন্ময়

19

একটি সহজ উপায় ddহ'ল শূন্যে পূর্ণ একটি ফাইল লিখতে কমান্ডটি ব্যবহার করা।

dd if=/dev/zero of=outputFile bs=2G count=1
  • if = ইনপুট ফাইল
  • এর = আউটপুট ফাইল
  • বিএস = বাইটস

আপনি যদি কম্পিউটার (1024 * 1024 * 1024) গিগা বাইট, বা আপনি মানব (1000 * 1000 * 1000) গিগাবাইট চান তবে জিবি সাইজ আর্গুমেন্টে জি ব্যবহার করুন।


1
আমি কেবল যুক্ত করব যে আপনি যদি সমস্ত শূন্য না চান তবে আপনি বেছে নিতে পারেন যদি = / dev / এলোমেলো
Denwerko

যদিও / দেব / এলোমেলো আরও সময় লাগবে।
কন-এফ-ব্যবহার

10
/ Dev / এলোমেলো ব্যবহারে একটি ভয়ঙ্কর সময় লাগবে। /dev/urandomসেক্ষেত্রে ব্যবহার করুন (এটি অবরুদ্ধ নয়, তবে একই স্তরের এলোমেলোভাবে থাকার নিশ্চয়তা নেই)। যে কোনও একটি থেকে 2 জিবি আঁকার ফলে অবশ্যই আপনার সিস্টেমের এনট্রপি সম্পূর্ণরূপে নিঃশেষ হয়ে যাবে, সুতরাং কিছুক্ষণ পরে ক্রিপ্টোগ্রাফিক কিছু করবেন না।
একটি সিভিএন

1

ftp://ftp.fsf.hu/testfiles/maketestfiles.sh

বা সিক হ'ল আপনি যে ফাইলটি বাইটগুলি চান তা আকার - 1।

dd if=/dev/zero of=filename.big bs=1 count=1 seek=1048575 # 1 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=10485759 # 10 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=104857599 # 100 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=1073741823 # 1024 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=42949672959 # 40960 MByte
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.