dd
লিনাক্সের সবচেয়ে গুরুত্বপূর্ণ কমান্ডগুলির মধ্যে একটি, যা বেশিরভাগ হার্ড ডিস্ক এবং পার্টিশন ব্যাক আপ করতে ব্যবহৃত হয়। সঠিকভাবে ব্যবহার করা হলে, dd একটি শক্তিশালী হাতিয়ার হতে পারে একটি পার্টিশন থেকে অন্য পার্টিশনে ডেটা লেখার জন্য এবং ফাইলগুলির সাথে বিভিন্ন কাজ সম্পাদন করার জন্য। এখানে আমরা আপনাকে দেখাচ্ছি কিভাবে dd কমান্ডটি ভালোভাবে ব্যবহার করতে হয়।
ডিডির গল্প
কমান্ডটি মূলত AT&T বেল ল্যাবরেটরিতে 1970-এর দশকে কেন থম্পসন নামে একজন কম্পিউটার বিজ্ঞানী দ্বারা তৈরি করা হয়েছিল। এটি ইউনিক্স-ভিত্তিক সিস্টেমের জন্য তৈরি করা হয়েছিল এবং একটি নাম দেওয়া হয়েছিল যা আইবিএম-এর জব কন্ট্রোল ল্যাঙ্গুয়েজে পাওয়া একটি বিবৃতির রেফারেন্স হিসাবে বেছে নেওয়া হয়েছিল, যাকে "ডিডি" বলা হয়েছিল। এটা লক্ষ করা যায় যে কমান্ডের সিনট্যাক্স জব কন্ট্রোল ল্যাঙ্গুয়েজের একটি বিবৃতির সাথে ঘনিষ্ঠভাবে সাদৃশ্যপূর্ণ।
কমান্ডটি মূলত ASCII কে EBCDIC তে রূপান্তর করার জন্য একটি ইউটিলিটি হিসাবে ডিজাইন করা হয়েছিল এবং এর বিপরীতে। 1974 সালে অপারেটিং সিস্টেমের 5 তম সংস্করণ প্রকাশের সাথে এটি প্রথম ইউনিক্সের একটি সংস্করণের সাথে একত্রিত হয়েছিল৷
অনুপযুক্তভাবে ব্যবহার করা হলে হার্ড ডিস্কের ডেটা ধ্বংস করার ক্ষমতার কারণে ইউনিক্স সম্প্রদায়ে একটি রসিকতা হিসাবে dd-কে "ডিস্ক ধ্বংসকারী" বলা হয়েছে৷
বেসিক অপারেন্ড
এখন যেহেতু আপনি কমান্ডের পটভূমি এবং ভুলভাবে ব্যবহার করার সময় এর ধ্বংসাত্মক ক্ষমতা সম্পর্কে কিছুটা জানেন, এটি বিভিন্ন লিনাক্স ডিস্ট্রিবিউশনের ব্যবহারকারীদের কাছে অফার করা সমস্ত কিছুর সুবিধা কীভাবে নেওয়া যায় তা শেখার সময় এসেছে।
প্রথমত, --help
ব্যবহার করে ম্যানুয়ালটি দেখুন পতাকা:
dd --help
কমান্ডের জন্য দুটি অপারেন্ড রয়েছে যা সাধারণত ব্যবহৃত হয়। তারা হল if
এবং of
, যা যথাক্রমে "ইনপুট ফাইল" এবং "আউটপুট ফাইল" এর জন্য দাঁড়ায়। if
অপারেন্ডটি উৎসের অবস্থানের প্রতিনিধিত্ব করতে ব্যবহৃত হয়, যখন of
অপারেন্ড সেই অবস্থানের প্রতিনিধিত্ব করতে ব্যবহৃত হয় যেখানে আপনি ইনপুট অবস্থান থেকে ডেটা সংরক্ষণ করতে চান।
dd if=<input file> of=<output file>
সবচেয়ে সাধারণ উৎস এবং আউটপুট অবস্থানের মধ্যে রয়েছে হার্ড ডিস্ক, পার্টিশন এবং ডিস্কের ছবি।
কমান্ড ব্যবহার করার আগে, fdisk
ব্যবহার করা সহায়ক হতে পারে আপনার সিস্টেমে পার্টিশন দেখার জন্য ইউটিলিটি। কমান্ডের -l
ব্যবহার করে এটি সহজেই করা যেতে পারে পতাকা:
sudo fdisk -l
এই ক্ষেত্রে, if
"/dev/sda" ড্রাইভ এবং of
উপস্থাপন করতে ব্যবহৃত হয় "/dev/sdb" ড্রাইভের প্রতিনিধিত্ব করে, যেখানে "/dev/sda" থেকে ডেটা সংরক্ষিত হবে:
dd if=/dev/sda of=/dev/sdb
একটি ডিস্ক চিত্র তৈরি করা
কমান্ডের সর্বোত্তম ব্যবহারের ক্ষেত্রে একটি হল “.img” ফাইল ফরম্যাটে ডিস্কের ছবি তৈরি করা। এটি আপনার লিনাক্স-ভিত্তিক সিস্টেমে ডেটা ব্যাক আপ করার জন্য অত্যন্ত উপযোগী এবং সম্ভবত একটি সম্পূর্ণ হার্ড ডিস্ক ব্যাক আপ করার দ্রুততম এবং সহজ উপায়।
এখানে যুক্তিটি প্রাথমিকভাবে এই ক্ষেত্রে একই, if
এর সাথে অপারেন্ড "/dev/sda" ড্রাইভ এবং of
প্রতিনিধিত্ব করে অপারেন্ড একটি ".img" ফাইলের প্রতিনিধিত্ব করে, যেখানে হার্ড ডিস্ক থেকে ডেটা সংরক্ষণ করা হবে:
dd if=/dev/sda of=example.img
একটি পার্টিশনে একটি ডিস্ক চিত্র সংরক্ষণ করা
কমান্ডের সাহায্যে একটি ডিস্ক চিত্র তৈরি করা মোটামুটি সহজ, কিন্তু সেই প্রক্রিয়াটির বিপরীত সংস্করণও তাই৷
এই পরিস্থিতিতে, আমাদের ডিস্ক ইমেজ ফাইল ইনপুট ফাইল হিসাবে কাজ করছে, এবং আমাদের নতুন পার্টিশন আউটপুট ফাইল হিসাবে কাজ করছে। ইউটিলিটি আমাদের ডিস্ক ইমেজ থেকে আমাদের “/dev/sdb” পার্টিশনে ডেটা সংরক্ষণ করছে:
dd if=example.img of=/dev/sdb
একটি সংকুচিত ডিস্ক চিত্র তৈরি করা
আপনি যদি একটি পূর্ণ আকারের হার্ড ডিস্কের একটি ডিস্ক চিত্র তৈরি করেন, আপনি কল্পনা করতে পারেন যে চূড়ান্ত ডিস্ক চিত্রের ফাইলের আকার সম্ভবত বেশ বড় হবে৷ এই কারণে, ডিডি ইউটিলিটির একটি বৈশিষ্ট্য রয়েছে যা সংকুচিত ডিস্ক চিত্র তৈরি করে।
পাইপ |
ব্যবহার করে একটি সংকুচিত ডিস্ক চিত্র তৈরি করা যেতে পারে আদেশ এই ক্ষেত্রে, এটি ইনপুট ফাইলের বিষয়বস্তু নিতে এবং gzip
সম্পাদন করতে ব্যবহৃত হয় একটি -c
সহ কমান্ড পতাকা, বিষয়বস্তু একটি ".gz" ফাইলে প্যাকেজ করা হয়েছে:
dd if=/dev/sda | gzip -c > image.gz
একটি ব্লকের আকার নির্দিষ্ট করা
আপনি dd কমান্ডের অপারেশনের গতির সাথেও খেলতে পারেন। এটি bs
ব্যবহার করে সম্পন্ন করা যেতে পারে অপারেন্ড, যা ব্লকের আকার উপস্থাপন করতে ব্যবহৃত হয়। ব্লক সাইজ একটি একক উদাহরণে আউটপুট ফাইলের dd কপি বাইট সংখ্যা প্রতিনিধিত্ব করে। এটি 1024 বাইটের গুণিতক ব্যবহার করে উপস্থাপন করা হয় এবং ডিফল্ট মান 512 বাইটে সেট করা হয়। ব্লকের আকার যত বেশি হবে তত দ্রুত ডেটা আউটপুট ফাইলে সংরক্ষিত হবে।
এই ক্ষেত্রে, আমরা ব্লকের আকার 2048 সেট করছি:
dd if=/dev/sda of=example.img bs=2048
ব্লকের আকার কিলোবাইটেও নির্দিষ্ট করা যেতে পারে:
dd if=/dev/sda of=example.img bs=2048K
একটি হার্ড ডিস্ক মুছা
dd আপনার হার্ড ডিস্ক মুছতেও ব্যবহার করা যেতে পারে। এটি "/dev/zero" বা "/dev/urandom" থেকে শূন্য বা এলোমেলো অক্ষর পড়ার মাধ্যমে এবং সেগুলিকে হার্ড ডিস্ক/পার্টিশনে সংরক্ষণ করার মাধ্যমে সম্পন্ন করা হয়, যা এতে ডেটা ওভাররাইট করে। এটি অত্যন্ত কার্যকর যখন আপনি নিশ্চিত করতে চান যে আপনার হার্ড ডিস্ক বিক্রি বা অন্যথায় নিষ্পত্তি করার পরে আপনার ডেটা সহজে পুনরুদ্ধার করা যাবে না।
জিরো ব্যবহার করে একটি হার্ড ডিস্ক ওভাররাইট করা হচ্ছে:
dd if=/dev/zero of=/dev/sdb
ওভাররাইট করার প্রক্রিয়াটি এলোমেলো অক্ষর ব্যবহার করেও করা যেতে পারে:
dd if=/dev/urandom of=/dev/sdb
একটি বুটযোগ্য USB ড্রাইভ তৈরি করা
কমান্ড সহ “.iso” ফাইল ব্যবহার করে বুটযোগ্য USB ফ্ল্যাশ ড্রাইভ তৈরি করা সহজ:
dd if=os.iso of=<USB drive location>
র্যাপিং আপ
এটা বলা নিরাপদ যে dd কমান্ডটিকে "সুইস আর্মি ছুরি" হিসাবে বিবেচনা করা যেতে পারে কারণ অনেক ক্ষেত্রে এর উপযোগিতা এবং হার্ড ড্রাইভ, পার্টিশন এবং ডিস্ক ইমেজ ফাইলগুলির সাথে কিছু করার জন্য। যতক্ষণ না আপনি আপনার হার্ডডিস্ক ধ্বংস না করেন, এটি একটি কার্যকরী এবং সহজ-ব্যবহারযোগ্য টুল যা হার্ডডিস্ক বা ইউএসবি ড্রাইভ মুছে ফেলা থেকে শুরু করে সংকুচিত ব্যাকআপ তৈরি করা পর্যন্ত।