تهیه پشتیبان با دستور dd

dd یک دستور بیش از حد قوی، بیش از حد ساده، بیش از حد کارا و بیش از حد خطرناک است. دستور dd این قابلیت‌ را دارد که فایل‌ها را کپی کند و فرمت آن‌ها را تغییر دهد. همین! آنهم به این شکل:

dd if=INPUT of=OUTPUT

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

می‌دانیم که در لینوکس دیسک‌های سخت، با اسامی‌ای مثل sda و sdb شناخته می‌شوند. پارتیشن‌های روی آن ها هم با اسم‌هایی مثل sda0 و sda1 و … و همه این سخت‌افرازها، مثل بقیه سخت‌افزارها در شاخه dev/ قرار دارند.

حالا هر چیزی که برای بک‌آپ گرفتن از لینوکستان را لازم دارید، بلدید. برای گرفته یک کپی برابر اصل از هاردی که همین الان به کامپیوترتان وصل است (که می‌شود dev/sda/) روی هارد اکسترنالی که همین الان به کامپیوتر وصل کرده‌اید (یعنی dev/sdb/)، کافی است بزنید:

dd if=/dev/sda of=/dev/sdb

و هارد اکسترنال دقیقا به شکل هارد اینترنال درخواهد آمد.

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

dd if=/dev/sda of=./backup_10mordad.img

جذاب نیست؟ هر وقت هم خواستید آن را برگردانید می‌زنید:

dd if=./backup_10mordad.img if=/dev/sda

dd if=./backup_10mordad.img of=/dev/sda

و آن بک‌آپ روی هارد برگردانده می‌شود.

به راحتی حدس می‌نید (و درست هم هست) که برای کلون کردن فقط یک پارتیشن کافی است بزنید:

dd if=/dev/sda5 of=./mydisk_partition5.img

جذاب نیست؟ (:‌ به همین سادگی. البته به شرطی که این چند نکته را هم رعایت کنید:

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