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


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.