# اسرار اداة dd العجيبة

**URL:** <https://discourse.aosus.org/t/topic/2597>\
**Category:** البرامج والتطبيقات\
**Tags:** برمجيات, برنامج, برمجيات-الحرة, لينكس\
**Created:** [7 أكتوبر 2022، 10:53م UTC](https://discourse.aosus.org/t/topic/2597 "2022-10-07T22:53:45Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![bx\_user](https://discourse.aosus.org/letter_avatar_proxy/v4/letter/b/a88e4f/32.png) [@bx\_user](https://discourse.aosus.org/u/bx_user)\
**Post date:** [7 أكتوبر 2022، 10:53م UTC](https://discourse.aosus.org/t/topic/2597/1 "2022-10-07T22:53:45Z")

</div>

![image](https://cdn-cf-discourse.aosus.org/original/2X/2/2c558ade1ebcd6452c4e83bdee9a47c938f4f23f.png)

# اسرار أداة dd في جنو لينكس
  
السلام عليكم و رحمة الله و بركاته  
و الصلاة و السلام على خير البرية العادل الصادق البر الأمين  
و لا ننسى الدعاء لإخواننا في كل مكان 
* * *

## المحتويات

- حرق اقراص iso في وحدة التخزين، مثلا usb
- نسخ الملفات بإستخدما dd
- نسخ الأقراص باستخدام dd
- اخذ نسخة احتياطية للقرص على صيغة ملف iso
- إختبار سرعة الإنترنت من خادم ssh محلي
- سرعة المعالج و اتصالات النظام و سرعة الذاكرة بأداة dd
- عمل تهيئة للقرص بشكل كامل (ملؤه بالأصفار) ، او كتابة ملف مصفر فيه
- تنبيهات للأخطاء القاتلة و الحلول لما بعد الإصابة
- المصادر او بعض المصادر
- الترخيص

* * *

## حرق iso في usb يمكن فعل ذلك عن طريق gnome-disks

لكن ماذا لو احتجت في يوم اداة للحرق و لم يتوفر عندك البرنامج و لم تعلم كيفية تنزيل الحزم او في حال عدم الإتصال بالإنترنت او في حال عدم وجود واجهة رسومية

عندها ستحتاج للأمر dd كي يقوم بالحرق

1. اولا تأكد من القرص تأكد انه الذي تريد وضع به ملف iso من خلال امر

```auto
sudo fdisk -l 

```

تأكد من تشغيله بصلاحية الجذر (root) من خلال كتابة قبله sudo ثم كتابة كلمة السر

⚠ تحذير الخطأ في المسار يؤدي لفقد البيانات

 ![image](https://cdn-cf-discourse.aosus.org/original/2X/e/e16b24d5c70a06dad6b6fac406791cea2ffb49cf.png)

في حالتي هذا القرص المستهدف سعته 7.5 جيجا ، لكن عندما اشتريته اشتريته على اساس انه 8 جيجا

لكن هذا بسبب فرق الحساب بين البت و البايت ، بحساب البايت فهو يعادل 8.1 جيجا بايت ام بالبت فهو 7.5 جيجا بت

ما يهمنا هو موقعه في حالتي موقعه dev/sdb/ ساقوم الأن بحرق التوزيعة التي نزلتها مسبقا عندي

 ![image](https://cdn-cf-discourse.aosus.org/original/2X/e/e68dbba934b5eb8be0c4376e250767e032de08a3.png)

1. اكتب الأمر بصلاحية الجذر

```auto
 sudo dd if=<"path of iso"> of=<"path of device"> status=progress

```

#### يمكن ان يكون الجهاز usb, hdd, ssd… او اية وحدة تخزين يمكن الكتابة عليها

غير مسار iso للمصدر الخاص بك و مسار القرص للقرص الذي تريد الحرق عليه

معامل if يعني مصدر القراءة و في حالتي هو قرص iso موجود في نفس المجلد الحالي

معامل of يعني مصدر الكتابة (اين سينسخ الملف المدخل) و في حالتي هو جهاز التخزين dev/sdb/

status هي لإظهار حالة ما  
status=progress لإظهار حالة التقدم

هذه صورة بعد الإنتهاء من النسخ (الحرق يعتبر نسخا لملف iso)

 ![image](https://cdn-cf-discourse.aosus.org/original/2X/f/f1a992d41cf336df4c3a130792cc1f45c9e70584.png)

يظهر ان سرعة الكتابة به كانت 4.8 ميجا بايت/الثانية  
و ان حجم ملف iso كان يعادل 913 ميجا بايت او 871 ميجا بت

هكذا تمت عملية الحرق بنجاح

الموجز :

1. 

```
sudo fdisk -l # لعرض الأقراص و اختيار القرص المستهدف

```

2. 

```
sudo dd if=<path of iso> of=<path of device> status=progress

```

device يمكن ان يكون usb او قرصا صلبا hdd او ssd او جهاز شبيه  
if المصدر  
of هي الهدف للنسخ  
status=progress لعرض حالة التقدم

3.⚠ احذر من اختيار موقع قرص خاطئ فسيتم الكتابة فوقه و حذف البيانات التي عليه

* * *

## نسخ الملفات بإستخدام dd

نفس الأمر السابق لكن كلا مصدر القراءة و الكتابة ملفات  
في حالتي نسخت iso لـ iso آخر (ليس شرط ان يكون iso) ، اي شيء عبارة عن ملف يمكن نسخه ، و في فلسفة لينكس كل شيء عبارة عن ملف 🙂

 ![image](https://cdn-cf-discourse.aosus.org/original/2X/f/f5d95e958ef3f7447357e62ebb8e552ad668738e.png)

نفس الأمر السابق مع تغيير الهدف لمسار الملف الجديد بدل مسار القرص

```auto
sudo dd if=<path of file> of=<path of file> status=progress

```

* * *

## نسخ الأقراص باستخدام dd

```auto
sudo dd if=<path device> of=<path of device> status=progress

```

device يمكن ان يكون usb او قرصا صلبا hdd او ssd او جهاز شبيه  
if نفس هذا الأمر و أن يكون المسار القراءة هو القرص المرجو نسخه  
of و مسار الكتابة القرص الذي تريد النسخ عليه

⚠ سيتم حذف جميع بيانات القرص الذي تريد الكتابة عليه

* * *

## اخذ نسخة احتياطية من القرص لملف بصيغة iso

 ![image](https://cdn-cf-discourse.aosus.org/original/2X/1/17fb7a04e27b3de54118c1c8fea571b4f0d9a145.png)

انشأت ملفا فارغا لأقوم بعمل نسخة احتياطة به من الـ القرص الخاص بي  
نفس الأمر لكن يكون مصدر القراءة من القرص  
ومصدر الكتابة ملف iso تسميه انت ، في حالتي سميته mydisk.iso

```auto
sudo dd if=<path of device> of=<path of iso > status=progress

```

* * *

## إختبار سرعة الإنترنت من خادم ssh محلي

 ![image](https://cdn-cf-discourse.aosus.org/original/2X/4/454612f6c28e66dcf3a373e8bbbf230da6c8e834.png)

```auto
dd if=/dev/zero status=progress | ssh user@server_ip 'dd of=/dev/null'

```

استبدل مكان user اسم المستخدم  
و مكان server\_ip الأيبي الخاص بخادمك  
-p في ssh لإستخدام منفذ آخر غير الإفتراضي 22 (في termux هو 8022)

يظهر هنا سرعة الإتصال مع هاتفي تصل لـ 8.3 ميجا بايت و تم نسخ خلال 19 ثانية ما يقارب 158 ميجا بايت او 151 ميجا بت

يمكن تطبيق ذلك على تطبيق termux بالهاتف و اعتبار حاسوبك هو الخادم او العكس منفذ ssh في termux هو 8022 كما فعلت انا بالصورة

 ![image](https://cdn-cf-discourse.aosus.org/original/2X/6/6305f8e6e27ad2f6f78abed8940eaf0bf1b772b5.png)

يمكن تغيير حجم الحزمة المرسلة او المنسوخة في كل مرة عبر اضافة bs=الحجم  
غيرت حجم القطعة لـ 1ميجا بت

في الصورة التالية تظهر القسيمات M ميجا بت , MB ميجا بايت

 ![image](https://cdn-cf-discourse.aosus.org/original/2X/a/a2a4299825ef5be9f20d4913eb193391508e8a84.png)

```
dd if=/dev/zero status=progress bs=1M | ssh user@server_ip -p 8022 'dd of=/dev/null'

```

يمكن تحديد عدد محدد من الحزم من خلال count=عدد الحزم بدل من الإستمرار بدون توقف

```
dd if=/dev/zero status=progress bs=1M count=300 | ssh user@server_ip -p 8022 'dd of=/dev/null'

```

⚠ لايحتاج لصلاحية الجذر فقط سيطلب كلمة سر المستخدم في الخادم

* * *

## إختبار سرعة مكالمات النظام ذات الصلة (relevant system calls) و المعالج و الذاكرة مجتمعين في امر واحد (لست متأكد من معنى استدعاءات النظام ذات الصلة لكن الرابط موجود في المصادر)

```auto
dd if=/dev/zero of=/dev/null status=progress

```

يقوم بالقراءة من قرص الأصفار (يولد اصفار) و يقوم بالكتابة في قرص لا شيء (يقوم بحذف او تجاهل كل شيء يرسل له اشبه بالثقب الأسود)

 ![image](https://cdn-cf-discourse.aosus.org/original/2X/5/521d1ac7cbdf42d862068441ebea879232dd9b31.png)

عند تغيير حجم الحزمة تتغير السرعة (اعتقد الأمر يعتمد على الذاكرة)

dd if=/dev/zero of=/dev/null bs=1MB status=progress  
نلحظ فرقا في السرعة عند تصغير الحزمة

 ![image](https://cdn-cf-discourse.aosus.org/original/2X/4/48e09f3cf9f61af6179b10de427f1ea5f336bbfe.png)

* * *

## عمل تهيئة للقرص بشكل كامل (ملؤه بالأصفار) ،لجعل استعادة البيانات امرا غير ممكنا في hdd اما في ssd فطريقة التخزين مختلفة ، قرأت انها لا تنفع مع ssd

1.طريقة على القرص مباشرة

```auto
sudo dd if=/dev/zero of=/dev/your-device-path status=progress

```

استبدل your-device-path بمسار الجهاز المستهدف usb, hdd او ما شابه

 ![image](https://cdn-cf-discourse.aosus.org/original/2X/8/864e503ddebc2281b996578d5049cab1c5ab6c64.png)

1. طريقة تعبئة ملف بالأصفار داخل القرص (اقل خطر لا يوجد بها اسماء اقراص)

```auto
dd if=/dev/zero of=zeros_file status=progress

```

 ![image](https://cdn-cf-discourse.aosus.org/original/2X/e/e52850de321ac60f763dc6cf1c12e238f96337e0.png)

هنا يظهر حجم الملف كبير جدا ، ,و هذا بسبب نظام الملفات fat اكبر ملف به يساوي 4 جيجا بت ، في هذه الحالة عليك تكرار الخطوة حتى تشغل جميع الذاكرة او تغيير نظام الملفات لنظام حدوده اوسع او ليس له حدود، مثلا ext4 يسمح بـ 16 تيرا بايت للملف الواحد (في المصادر)

* * *

## تنبيهات للأخطاء القاتلة و الحلول لما بعد الإصابة

⚠ انتبه من اسم القرص جيدا لأنه في حال الكتابة على قرص به اغراض سيتم الكتابة فوقه و حذف ما فيه

⚠ إذا فقدت بياناتك لا تجزع فلازال بإمكانك استرجاع ما يمكن استرجاعه عبر اداة testdisk لإستعادة الأقسام او photorec موجودة ايضا في نفس حزمة الأداة السابقة (هناك الكثير من المقاطع الصورة و المواقع التي تشرح استعمالها)

⚠ عند فقدان بيانات حاول عدم الكتابة على القرص نهائيا لأن الكتابة ستقلل فرص الإستعادة لأن الملف عبارة عن اجزاء و إذا كتبت فوق جزء يصبح الملف ناقصا و هو ما يصعب الإستعادة

* * *

## المصادر

لا اذكر معظم الصادر ، لكن لا انسى فضل الأخ فارس و الأخ سالم و الكثير من الأشخاص ممن ساعدني و شكر لمجتمع اسس و شكر خاص لمجتمع اسس على تيليجرام

> **[What is /Dev/Null in Linux? - GeeksforGeeks](https://www.geeksforgeeks.org/linux-unix/what-is-dev-null-in-linux/)**
>
> Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and...

[https://superuser.com/questions/580030/dd-from-dev-zero-to-dev-null-what-actually-happens](https://superuser.com/questions/580030/dd-from-dev-zero-to-dev-null-what-actually-happens)

> **[Test network speed without wasting disk Using dd, ssh](https://www.commandlinefu.com/commands/view/5799/test-network-speed-without-wasting-disk)**
>
> dd if=/dev/zero bs=4096 count=1048576 | ssh user@host.tld 'cat \> /dev/null' - (Test network speed without wasting disk The above command will send 4GB of data from one host to the next over the network, without consuming any unnecessary disk on...

> **[Use dd to Clone a Disk – Linux Hint](https://linuxhint.com/clone-disk-using-dd-linux/)**
>
> The dd command in Linux is a powerful utility used to copy and convert a file. As in Linux, everything is considered as a file; even your hard disk drives. Hence, dd can also be used for cloning disks and partitions. The dd utility comes installed in...

> **[dd Command in Linux: 5 Real World Examples Explained](https://linuxhandbook.com/dd-command/)**
>
> The dd command in Linux is a utility for copying and converting files and has many practical uses.

[https://stackoverflow.com/questions/21868768/ext4-fs-max-file-size](https://stackoverflow.com/questions/21868768/ext4-fs-max-file-size)

* * *

ترخيص الموضوع يتبع لترخيص مواضيع مجتمع أسس CC-BY-SA 4.0
