dd (یونیکس)
دیدی (به انگلیسی: dd) دستوری در یونیکس است که کاربرد معمول آن برای رونوشت گرفتن و تبدیل سطح پایین دادگان خام است. این دستور، رونوشتی از پرونده را تبدیل کرده و برطبق عملگرهای دادهشده آن را قالببندی میکند.
در حالت کلی و با تنظیمات پیشفرض و اختصاص ندادن عملگرها، دستور dd
دادهها را از ورودی استاندارد (مثلاً صفحهکلید) گرفته و به خروجی استاندارد میدهد.
ساختار دستور
ساختار کلی این فرمان با بیشتر فرمانهای یونیکس متفاوت است. این تفاوت از این نظراست که معمولاً در یونیکس شما پارامترها یا سوئیچهای دستور را مستقیماً وارد میکنید و برنامه مرتبط با آن دستور، خود متوجه میشود که سوئیچ مربوطه باید چه تغییری را در روند اجرای عادی برنامه اعمال کند. در حالیکه فرمان dd سوئیچها و پارامترهایش را به صورت ترکیب «متغیر = مقدار» دریافت مینماید. به صورت پیش فرض، درگاه ورودی این فرمان STDIN و درگاه خروجی آن، STDOUT است، اما توسط سوئیچهای if و of میتوان آنها را تغییر داد.
dd if=FILE of=FILE ibs=BYTES obs=BYTES bs=BYTES cbs=BYTES
skip=BLOCKS seek=BLOCKS count=BLOCKS status=noxfer
توضیحات:
- if (از input file) و FILE: نام پروندهٔ مبدا.
- of (از output file) و FILE: نام پروندهٔ مقصد.
Block یا بلاک
Block یک واحد اندازهگیری بایت هاست، که خوانده، نوشته یا تبدیل میشود. سوئیچهای مربوطه میتوانند اندازه بلاک سایز متفاوتی را برای خواندن/دریافت (ibs) و نوشتن/خروجی (obs) تعیین کنند. تعیین obs نیز هر دوی این دو سوئیچ را بیاثر میسازد. مقدار پیشفرض برای ibs و obs برابر با ۵۱۲ بایت است (که یک اجبار از طرف POSIX است و از قدیم برای اندازه بلاک تعریف شدهاست. اندازه بلاکها در برخی کارها بسیار حیاتی است، از جمله زمانی که اطلاعات صدمه دیده را از روی هارد دیسک بازیابی میکنیم. تعیین تعداد کوچک بلاک سایز در این کار، باعث میشود بازیابی اکثر بلاکها با موفقیت و صحیح صورت گیرد. از طرف دیگر، تعیین تعداد کوچک بلاک باعث خواندن - نوشتن بیشتر روی دیسک شده و لذا سرعت کل عملیات پایینتر میآید، بنابراین در زمان کپی کردن اطلاعات بهتر است اندازه بلاک بزرگتر باشد.
گزینه count برای تعیین تعداد بلاکها استفاده میشود.
مثال
دستور زیر دادههای از لوح فشرده را از درایو سیدیرام گرفته و یک پرونده با نام image و با پسوند iso از آن میسازد. در هر بلوک ۲۰۰۰ بایت (۲ کیلوبایت) فراخوانی میشوند.
user@localhost:~$ dd if=/dev/cdrom of=image.iso bs=2k