কম্পিউটার টিউটোরিয়াল

লিনাক্সে dd কমান্ড কীভাবে ব্যবহার করবেন

dd লিনাক্সের সবচেয়ে গুরুত্বপূর্ণ কমান্ডগুলোর একটি, অধিকাংশত হার্ড ডিস্ক এবং পার্টিশন ব্যাকআপ করার জন্য ব্যবহার হয়। সঠিকভাবে ব্যবহার করলে, dd একটি পাওয়ারফুল টুল হতে পারে এক পার্টিশন থেকে অন্য পার্টিশনে ডেটা লিখতে এবং ফাইল দিয়ে বিভিন্ন টাস্ক পেরফর্ম করতে। এখানে আমরা দেখাবো dd কমান্ডকে ভালোভাবে কীভাবে কাজে লাগাবেন।

dd-এর গল্প

এই কমান্ডটি মূলত AT&T বেল ল্যাবরেটরিতে ১৯৭০-এর দশকে একটি কম্পিউটার সায়েন্টিস্ট কেন থম্পসন দ্বারা ডেভেলপ করা হয়েছিল। এটি Unix-ভিত্তিক সিস্টেমের জন্য ডেভেলপ করা হয়েছিল এবং একটি নাম দিয়া হয়েছিল যা IBM-এর জব কন্ট্রোল ল্যাঙ্গুয়েজে পাওয়া একটি স্টেটমেন্টের রেফারেন্স হিসেবে বেছে নেওয়া হয়েছিল, যেটি "DD" বলা হতো। নোট করা যাবে যে কমান্ডটির সিনট্যাক্স জব কন্ট্রোল ল্যাঙ্গুয়েজের একটি স্টেটমেন্টের সাথে নিকটস্থভাবে মিলে যাবে।

কমান্ডটি মূলত ASCII কে EBCDIC-এ এবং বিপরীতভাবে কনভার্ট করার একটি ইউটিলিটি হিসেবে ডিজাইন করা হয়েছিল। এটি প্রথম بار Unix-এর একটি ভার্সনে ইন্টিগ্রেট করা হয়েছিল ১৯৭৪ সালে, অপারেটিং সিস্টেমের ৫ম এডিশন রিলিজের সাথে।

dd কে মজাক মজাকেই "disk destroyer" বলা হয় Unix কমিউনিটিতে এর ক্ষমতা გამო যাতে ইমপ্রপারলি ব্যবহার করলে হার্ড ডিস্কে ডেটা ধ্বংস করতে পারে।

বেসিক অপারেন্ড

এখন আপনি কমান্ডের ব্যাকগ্রাউন্ড এবং এর ডিস্ট্রাক্টিভ ক্ষমতা অপ্রোপারলি ব্যবহার করলে সেটি সম্পর্কে কিছুটা জানেন, এই সময় শিখতে পারেন কীভাবে এটি ইউজারদের জন্য যা অফার করে সবকিছু উপযোগী করবেন বিভিন্ন লিনাক্স ডিস্ট্রিবিউশনের।

প্রথমে, --help ফ্ল্যাগ ব্যবহার করে ম্যানুয়াল দেখুন:

dd --help

কমান্ডের জন্য দুটি অপারেন্ড আছে যেগুলো সবচেয়ে কমনলি ইউটিলাইজ করা হয়। সেগুলো হল if এবং of, যেগুলো মানে "input file" এবং "output file" যথাক্রমে। if অপারেন্ডটি সোর্স লোকেশন রিপ্রেজেন্ট করতে ব্যবহৃত হয়, যখন of অপারেন্ডটি সেই লোকেশন রিপ্রেজেন্ট করতে ব্যবহৃত হয় যেখানে আপনি ইনপুট লোকেশন থেকে ডেটা সংরক্ষণ করতে চান।

dd if= of=

সবচেয়ে কমন সোর্স এবং আউটপুট লোকেশনগুলোর মধ্যে রয়েছে হার্ড ডিস্ক, পার্টিশন, এবং ডিস্ক ইমেজ।

কমান্ড ব্যবহার করার আগে, 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

একটি কমপ্রেসড ডিস্ক ইমেজ তৈরি করা

আপনি যদি একটি ফুল-সাইজ হার্ড ডিস্কের ডিস্ক ইমেজ তৈরি করেন, আপনি কল্পনা করতে পারেন চূড়ান্ত ডিস্ক ইমেজের ফাইল সাইজ খুব বড় হবে। এই কারণেই, dd ইউটিলিটিতে একটি ফিচার আছে কমপ্রেসড ডিস্ক ইমেজ তৈরি করার।

একটি কমপ্রেসড ডিস্ক ইমেজ তৈরি করা যায় পাইপ | কমান্ড ব্যবহার করে। এই কেসে, এটি ব্যবহার করা হয় ইনপুট ফাইলের কন্টেন্ট নেওয়া এবং gzip কমান্ড -c ফ্ল্যাগ দিয়ে পারফর্ম করা, কন্টেন্টটি একটি ".gz" ফাইলে প্যাকেজ করা হয়:

dd if=/dev/sda | gzip -c > image.gz

একটি ব্লক সাইজ স্পেসিফাই করা

আপনি dd কমান্ডের অপারেশনের স্পিডও নিয়ন্ত্রণ করতে পারেন। এটি bs অপারেন্ড ব্যবহার করে সম্পন্ন করা যায়, যা ব্লক সাইজ রিপ্রেজেন্ট করতে ব্যবহৃত হয়। ব্লক সাইজ রিপ্রেজেন্ট করে dd আউটপুট ফাইলে একবারে কত বাইট কপি করবে। এটি ১০২৪ বাইটের মাল্টিপ্লായി রিপ্রেজেন্ট করা হয়, এবং ডিফল্ট ভ্যালু ৫১২ বাইট সেট করা থাকে। ব্লক সাইজ যত বেশি হবে, ডেটা আউটপুট ফাইলে তত দ্রুত সংরক্ষিত হবে।

এই কেসে, আমরা ব্লক সাইজ ২০৪৮ সেট করছি:

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=

শেষ কথা

নিরাপদে বলা যায় যে dd কমান্ডকে একটি "সুইস আর্মি নাইফ" বলা যেতে পারে এর ইউজফুলনেসের কারণে অনেক এরিয়ায় এবং যেকোনো জিনিস যা হার্ড ড্রাইভ, পার্টিশন, এবং ডিস্ক ইমেজ ফাইল সম্পর্কিত। যতক্ষণ না আপনি আপনার হার্ড ডিস্ক ধ্বংস করেন, এটি একটি ইফেক্টিভ এবং সিম্পল-টু-ইউজ টুল যেকোনো জিনিসের জন্য যেতে পারে হার্ড ডিস্ক বা USB ড্রাইভ ওয়াইপ করার থেকে কমপ্রেসড ব্যাকআপ তৈরি করার পর্যন্ত।

  1. লিনাক্স টার্মিনাল ক্যালকুলেটর হিসেবে ব্যবহার করুন

  2. লিনাক্সে tee কমান্ড ব্যবহার করুন

  3. লিনাক্সে নেটওয়ার্ক সংযোগ পর্যবেক্ষণের জন্য ss কমান্ডের ব্যবহার

  4. Linux Watch কমান্ড 습득: সিনট্যাক্স, অপশন এবং প্রয়োগিক উদাহরণ