چگونه یک دیسک ایمیج با فرمان dd بسازیم؟ نحوه ایجاد نسخه کپی از یک سی‌دی لینوکس به منظور پشتیبان‌گیری یا بازیابی اطلاعات چگونه است؟ اینها سؤالاتی است که پاسخ آنها را در این مطلب دنبال می‌کنیم.

شما به راحتی می‌توانید از فرمان dd برای ساخت یک ایمیج از پارتیشن یا یک درایو کامل استفاده کنید.

dd ایمیج چیست؟

تهیه کپی از حافظه یا به عبارتی، دیسک کلونینگ در واقع، فرآیند ایجاد یک ایمیج از کل دیسک است. چنین کاری می‌تواند برای نسخه‌برداری از دیسک‌، پشتیبان‌گیری، بازیابی و امثال آن مفید باشد. فرمان dd راه‌حلی ساده برای ایجاد این نوع ایمیج است.

نکته: البته باید در هنگام استفاده از فرمان dd احتیاط زیادی داشته باشید. چرا که می‌تواند موجب از بین رفتن داده‌‌ها شود. حتماً ترتیب فایل‌های ورودی (if=) و فایل‌های خروجی (of=) را به خاطر بسپارید.

ساخت یک نسخه کپی از کل هارد دیسک

قالب کلی فرمان به صورت زیر است:


dd if=/dev/input/DEVICE-HERE of=/dev/OUTPUT/DEVICE-HERE bs=64K conv=noerror,sync

برای تهیه کپی از /dev/sdc (250G) در /dev/sdd (250G) در محیط لینوکس داریم:


# dd if=/dev/sdc of=/dev/sdd bs=64K conv=noerror,sync

برای تهیه کپی از /dev/sdd (250G) در /dev/adb0 (250G) در FreeBSD داریم:


# dd if=/dev/ada0 of=/dev/adb0 bs=64K conv=noerror,sync

که در آن:

  • if=/dev/file : فایل یا دستگاه ورودی
  • of=/dev/file : فایل یا دستگاه خروجی
  • bs=64k : تنظیم ابعاد بلوک به ۶۴ کیلوبایت؛ شما می‌توانید مقادیر ۱۲۸ یا بزرگتر را نیز انتخاب کنید.
  • conv=noerror : دستور ادامه عملیات بدون توجه به خطاهای هنگام خواندن
  • sync : اضافه‌کردن بلوک‌ها با ابعاد صفر در هنگام وجود خطا در خواندن. در این صورت داده‌ها همگام باقی می‌مانند.

تهیه نسخه کپی از یک پارتیشن

برای کپی‌کردن /dev/sdc1 به /dev/sdd1 فرمان زیر را وارد کنید.


# dd if=/dev/sdc1 of=/dev/sdd1 bs=128K conv=noerror,sync

نمونه خروجی


15874+0 records in

15873+0 records out

1040252928 bytes transferred in 3.805977 secs (273320858 bytes/sec)

ساخت دیسک ایمیج با فرمان dd

می‌توانید راه‌اندازی دوباره سیستم را با استفاده از یک «لایو سی‌دی» انجام دهید. وقتی سیستم دوباره اجرا شد، حتماً دقت کنید که هیچ پارتیشنی از منبع هارددیسک فعال نباشد. در عین حال، امکان ذخیره دیسک ایمیج بر روی یک حافظه USB خارجی وجود دارد. فرمت کار به این صورت خواهد بود.


dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=64K | gzip -c > /path/to/my-disk.image.gz

در این مثال می‌خواهیم یک دیسک ایمیج برای /dev/da0 بسازیم و آن را در دایرکتوری کنونی ذخیره کنیم.


# dd if=/dev/da0 conv=sync,noerror bs=128K | gzip -c > centos-core-7.gz

نمونه خروجی

اجرای دیسک ایمیج با فرمان dd

فرمان بالا موجب تهیه نسخه کپی از تمام هاردیسک شد. یعنی تمام موارد از جمله MBR، بوت‌لودر، همه پارتیشن‌ها، UUID ها و داده‌ها شامل این نسخه کپی خواهند بود.

چگونه با دیسک ایمیج، سیستم را بازیابی کنیم؟

قالب کار به صورت زیر است:


# gunzip -c IMAGE.HERE-GZ | dd of=/dev/OUTPUT/DEVICE-HERE

به عنوان مثال:


# gunzip -c centos-core-7.gz | dd of=/dev/da0

ترفند ۱) نبود فضای کافی در دیسک محلی و استفاده از ریموت

شما می‌توانید یک ایمیج را از طریق ssh انتقال داده و آن را در یک سیستم ریموت با عنوان server1.ariaservice.net ذخیره کنید.


# dd if=/dev/da0 conv=sync,noerror bs=128K | gzip -c | ssh Masoud@server1.ariaservice.net dd of=centos-core-7.gz

ترفند ۲) مشاهده مراحل فرآیند ساخت دیسک ایمیج با فرمان dd

برای این منظور باید از گزینه status=progress در فرمان dd استفاده کنید. درنظر داشته باشید که باید نسخه 8.24 بسته ابزاری GNU DD را در اختیار داشته باشید.


# dd if=/dev/sdc1 of=/dev/sdd1 bs=128K conv=noerror,sync status=progress

نمونه خروجی

اجرای GNU DD همراه با نمایش مراحل کار

اجرای GNU DD همراه با نمایش مراحل کار

منبع: cyberciti.biz