dd
دستوری است که برای تبدیل و کپی یک فایل به اندازه تعیین شده بکار میرود dd
به جای خواندن ورودی از صفحه کلید, ورودی را از یک فایل میخواند و به جای نوشتن در نمایشگر, خروجی را در یک فایل ذخیره میکند. فرض کنید میخواهید از یک فایل به اندازه ۸۰۰ کیلوبایت فقط ۵۱۲ کیلوبایت آن را کپی کنید. برای این کار باید dd
را طوری تنظیم کنید که به تعداد ۵۱۲ کیلوبایت از آن فایل را در یک فایل جدید ذخیره کند. فرمت کلی دستور dd
بصورت زیر است:
dd [operand] ... dd option
سوئیچ یا option
های متداول dd
بصورت زیر هستند:
Input File
و فایلی را مشخص که میخواهیم کپی آن را تهیه کنیم. دستور dd
از این فایل به جای صفحه کلید استفاده میکند.Output file
و فایلی را مشخص میکند که میخواهیم خروجی ( کپی فایل اول ) را در آن ذخیره کنیم.of
مشخص میشود در اصل به اندازه مقدار Byte
, از فایل if
, فایل of
را میسازد.count=1
باشد فایل جدید 1*512 بایت خواهد بود.شکل معمول استفاده از آن بصورت زیر است.
dd if=/path/to/inputfile of=/path/to/outputfile bs=Byte count=value
dd if=/dev/hda of=/tmp/mbrbackup.img bs=512 count=1
دستور بالا ۵۱۲ بایت اول هارد hda
را در یک فایل به نام mbrbackup.img
ذخیره میکند. ۵۱۲ بایت اول هارد شامل mbr
است. دستور زیر برای بازیابی mbr
استفاده میشود به اینصورت که فایلی به نام mbrbackup.img
و به اندازه ۵۱۲ بایت در ۵۱۲ بایت اول هارد hda
ذخیره میشود.
dd if=/tmp/mbrbackup.img of=/dev/hda bs=512 count=1
دستور زیر از محتوای فلاپی یک فایل image تهیه کرده و دستور دومی همان فایل را برای فلاپی بازیابی میکند.
dd if=/dev/fd0 of=/tmp/fdimage dd if=/tmp/fdimage of=/dev/fd0
از دستور dd
و بصورت خط زیر میتوان از پارتیشن فایل پتشیان تهیه کرد. در مثال زیر با دستور gzip و از پارتیشن dev/hda1/
یک فایل پشتیبان به نام partbackup.gz
تهیه میشود.
dd if=/dev/hda1|gzip -c >/tmp/partbackup.gz
برای بازیابی آن از دستور زیر استفاده میکنیم فقط باید دقت شود که اندازه پارتیشن مقصد با اندازه پارتیشن مبدا یکسان باشد.
cat /tmp/partbackup.gz|gzip -d|dd of=/dev/hda1
از دیگر کاربردهای دستور dd ایجاد یک فایل برای ساخت یک پارتیشن swap یدکی استفاده میشود ایجاد یک swap file (یک فضای swap اضافی بصورت یک فایل)
گزینه sync
در دستور فوق به شما اجازه میدهد هر چیزی را با استفاده از همگام سازی i/o
بر روی flash memory
کپی کنید همچنین bs
یا byte size
نیز عموما کمتر از 512 بایت نیست به عنوان مثال میتوانید یکی از مقادیر :512,1024,2048,4096,8192,16384
باشد امام میتوان هر مقدار integer
دیگری را برای آن وارد کرد.
برای مثال ما میخواهیم یک فایل iso
را بر روی فلش bootable
کنیم برای این منظور از دستور زیر استفاده میکنیم
sudo dd if=file.iso of=/dev/sdb bs=1M;sudo sync;sudo eject /dev/sdb