কমান্ড লাইন ব্যবহার করে আপনি কীভাবে ফাইলগুলি ছাঁটাতে পারেন?


18

নিম্নলিখিত পাইথন কোডের সমতুল্য কনসোলটি কী:

target = file("disk", "w")    # create a file
target.seek(2*1024*1024*1024) # skip to 2 GB
target.write("\0")
target.close()

হয়ত কিছু ডিডি ইন্টেনশন? ধারণাটি ভার্চুয়ালাইজেশনে যেমন ব্যবহারের জন্য 2 গিগাবাইটের আপাত আকারের সাথে একটি ফাইল তৈরি করছে।

kvm disk -cd whatever.iso #Only allocate space as necessary

ddএকমাত্র traditionalতিহ্যবাহী হাতিয়ার যা seekসিস্টেম কলকে বহিঃপ্রকাশ করে (দেখুন ডিডি বনাম বিড়াল - আজকাল কি ডিডি প্রাসঙ্গিক? তবে সাধারণ বিড়ালের উপরে এই বিড়ালের চামড়ার অন্যান্য উপায় রয়েছে।
গিলস 'তাই' দুষ্ট হওয়া বন্ধ করুন '21

উত্তর:


8

সাধারণভাবে বলতে গেলে, শুধু ব্যবহার করুন dd; তবে আপনি যেমন কেভিএম ভার্চুয়ালাইজেশন ব্যবহারের কথা উল্লেখ করেছেন, আপনি এটি ব্যবহার করতে পারেন qemu-img:

qemu-img create -f raw disk 2G

এটি ddকার্যকরভাবে ক্রিস ডাউন এর উত্তরে আদেশ হিসাবে একই কাজ করে ।

ভার্চুয়ালাইজেশনে ব্যবহারের জন্য আপনি যে আদেশটি ব্যবহার করুন না কেন, fallocateভগ্নাংশ রোধ করতে এবং কর্মক্ষমতা বাড়ানোর জন্য ব্লকগুলি প্রাক-বরাদ্দ করার জন্য আমি দৃ .়ভাবে পরামর্শ দেব ।

fallocate -l 2G disk

যদিও এটি সমস্ত প্ল্যাটফর্ম এবং ফাইল সিস্টেমে উপলভ্য নয়। এটি শূন্যগুলি লিখবে না, তবে প্রতিবার যখন ফাইলটি প্রসারিত করতে হবে তখন অন-ডিমান্ড করার চেয়ে কেবল ফাইলটিকে ব্লকগুলি বরাদ্দ করে।


উক্তিটি কি টাইপো?
Badp

হ্যাঁ, স্থির
জার্মটভিডিজ্ক

2
qemu-imgএবং ddউভয়ই ফাইলের আকার (ftruncate) সেট করার জন্য একটি সিস্টেম কল সম্পাদন করে তবে তারা এবং তাদের সাথে যুক্ত লাইব্রেরিগুলি লোড করার জন্য আরও অনেক কিছু সম্পাদন করবে। এবং সে ক্ষেত্রে, এর ddচেয়ে অনেক বেশি কার্যকর হতে চলেছে qemu-img(যা অনেক বড় এবং আরও অনেকগুলি গ্রন্থাগারের সাথে যুক্ত)। জিএনইউ truncateআরও কার্যকর হতে চলেছে। ddসর্বব্যাপী হওয়ার সুবিধাও রয়েছে। fallocateযদিও সম্পর্কে ভাল পয়েন্ট ।
স্টাফেন চেজেলাস

@ স্টাফেনচাজেলাস আমি আপনার মন্তব্যে পুরোপুরি দ্বিতীয়। আমি আমার উত্তরটি সম্পাদিত করেছি যে qemu-imgকেভিএম ভার্চুয়ালাইজেশনের ব্যবহারের একটি সুস্পষ্ট বিকল্প point
জার্মটভিডিজক

14

আপনি এর মতো একটি স্পার ফাইল তৈরি করতে পারেন dd:

dd of=file bs=1 seek=2G count=0
$ du file
0       disk
$ du --apparent-size file
2097152 disk

4
এছাড়াও, 2Gএটিতে একটি জিএনইউ এক্সটেনশন ddbs=1024 seek=2097152আপনার জিএনইউ না থাকলে আপনি ব্যবহার করতে পারেন dd
ক্রিস ডাউন

হেই, Gএটি একটি এক্সটেনশন এবং এটি ওপেনবিএসডি'র ডিডি সংস্করণ দ্বারা সমর্থিত নয় ... তবে, Mএবং Kএটি সমর্থিত, তাই seek=2048Mআপনি কী প্ল্যাটফর্মগুলি টার্গেট করছেন তার উপর নির্ভর করে কিছুটা আরও পঠনযোগ্য
আর্লজ

আপনার / দেব / শূন্য থেকে পড়া উচিত: যদি = / দেব / শূন্য
ড্যানিয়েল ফানজুল

@ ড্যানিয়েলফানজুল কেন? একেবারে কোনও পার্থক্য নেই, কোনও বাইট লেখা নেই।
ক্রিস ডাউন

@ ক্রিসডাউন কারণ আপনি যখন পড়েন তখন / dev / নলের কোনও ডেটা থাকে না, তবে / ডিভ / শূন্যে ইনফিন্ট জিরো থাকে। ওহ, গণনা = 1, লেখার জন্য বাইটের সংখ্যা অবশ্যই শূন্য নয়।
ড্যানিয়েল ফানজুল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.