كيف يمكنك مراقبة التقدم المحرز في دد?

dd هو عجب. فإنه يتيح لك تكرار القرص الصلب إلى آخر ، تماما صفر القرص الصلب ، الخ. ولكن بمجرد إطلاق dd القيادة ، لا يوجد شيء لأقول لكم من التقدم الذي أحرزته. انها مجرد يجلس هناك في المؤشر حتى ينتهي الأمر أخيرا. فكيف واحد رصد التقدم دد ل?

تحديث 2016>: إذا كنت تستخدم جنو كوروتيلز = 8.24 (الافتراضي في أوبونتو زينيال 16.04 صعودا) ، انظر الطريقة 2 أدناه للحصول على طريقة بديلة لعرض التقدم.


الطريقة 1: باستخدام pv

تثبيت pv ووضعها بين الإدخال / الإخراج فقط dd الأوامر.

ملاحظة: لا يمكنك استخدامه عندما بدأت بالفعل dd.

من عند وصف الحزمة:

pv - عارض الأنابيب-هي أداة قائمة على المحطة الطرفية لرصد تقدم البيانات من خلال خط أنابيب. يمكن إدراجها في أي خط أنابيب عادي بين عمليتين لإعطاء إشارة مرئية لمدى سرعة مرور البيانات ، والمدة التي استغرقتها ، ومدى اقترابها من الاكتمال ، وتقدير المدة التي ستستغرقها حتى الانتهاء.

التركيب

sudo apt-get install pv

مثال

dd if=/dev/urandom | pv | dd of=/dev/null

الناتج

1,74MB 0:00:09 [ 198kB/s] [      <=>                               ]

يمكنك تحديد الحجم التقريبي مع --size إذا كنت ترغب في تقدير الوقت.


مثال على افتراض قرص 2 جيجابايت يتم نسخها من / ديف / سدب

القيادة دون pv سيكون:

sudo dd if=/dev/sdb of=DriveCopy1.dd bs=4096

القيادة مع pv:

sudo dd if=/dev/sdb | pv -s 2G | dd of=DriveCopy1.dd bs=4096

الناتج:

440MB 0:00:38 [11.6MB/s] [======>                             ] 21% ETA 0:02:19

استخدامات أخرى

يمكنك بالطبع استخدام pv مباشرة إلى الأنابيب الإخراج إلى ستدوت:

pv /home/user/bigfile.iso | md5sum

الناتج

50,2MB 0:00:06 [8,66MB/s] [=======>         ] 49% ETA 0:00:06

لاحظ أنه في هذه الحالة, pv يتعرف على الحجم تلقائيا.


الطريقة 2: جديد status تمت إضافة الخيار إلى dd (جنو كوروتيلز 8.24+)

dd في جنو كوروتيلز 8.24+ (أوبونتو 16.04 وأحدث) حصلت على جديد status الخيار لعرض التقدم:

مثال

dd if=/dev/urandom of=/dev/null status=progress

الناتج

462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s

من عند كيف: رصد التقدم المحرز في دد

يمكنك مراقبة التقدم المحرز في dd بمجرد تشغيله دون إيقافه باستخدام kill الأمر لإرسال إشارة إلى العملية.

بعد أن تبدأ dd، افتح محطة طرفية أخرى وأدخل إما:

sudo kill -USR1 $(pgrep ^dd$)

أو، إذا كنت على بسد أو نظام التشغيل العاشر:

sudo kill -INFO $(pgrep ^dd$)

سيعرض هذا التقدم في dd نافذة المحطة دون وقف العملية (عن طريق الطباعة إلى تيار ستدير لها). على سبيل المثال:

# dd if=/dev/urandom of=rando bs=1024 count=1048576335822+0 records in335821+0 records out343880704 bytes (344 MB, 328 MiB) copied, 6.85661 s, 50.2 MB/s

إذا كنت ترغب في الحصول على تحديثات منتظمة من dd التقدم ، ثم أدخل:

watch -n5 'sudo kill -USR1 $(pgrep ^dd$)'

watch سوف التحقيق في dd معالجة كل ن ثانية (-n5 = 5 ثوان) وتقرير دون وقف ذلك.

لاحظ علامات الاقتباس المفردة المناسبة في الأوامر أعلاه.

وهناك عدد قليل من الأعراف عينة يدوية مع pv وأقل الكتابة أو المزيد من التقدم ثم إجابات أخرى:

أولا سوف تحتاج إلى تثبيت pv، مع الأمر:

sudo apt-get install pv

ثم بعض الأمثلة هي:

pv -n /dev/urandom | dd of=/dev/nullpv -tpreb source.iso | dd of=/dev/BLABLA bs=4096 conv=notrunc,noerror

ملاحظة: العينة الأولى هي 5 أحرف أقل كتابة ثم dd if=/dev/urandom | pv | dd of=/dev/null.

والمفضلة لاستنساخ محرك الأقراص (استبدال العاشر مع أحرف محركات الأقراص):

(pv -n /dev/sdX | dd of=/dev/sdX bs=128M conv=notrunc,noerror) 2>&1 | dialog --gauge "Running dd command (cloning), please wait..." 10 70 0

screenshot

المصدر: http://www.cyberciti.biz/faq/linux-unix-dd-command-show-progress-while-coping/

أيضا لأرشفة نفسي.

من أجل الاكتمال:

الإصدار 8.24 من جنو كوروتيلز يتضمن التصحيح ل د إدخال معلمة لطباعة التقدم.

الالتزام إدخال هذا التغيير لديه التعليق:

دد: جديد الحالة = التقدم مستوى طباعة الإحصائيات بشكل دوري

العديد من التوزيعات ، بما في ذلك أوبونتو 16.04.2 لتر استخدم هذا الإصدار.

استخدام Ctrl+Shift+T بينما dd قيد التشغيل ، وسوف إخراج التقدم (بالبايت):

load: 1.51  cmd: dd 31215 uninterruptible 0.28u 3.67s321121+0 records in321120+0 records out164413440 bytes transferred in 112.708791 secs (1458745 bytes/sec)

الأفضل هو استخدام http://dcfldd.sourceforge.net/ فمن السهل لتثبيت من خلال الرابطة بين الحصول على

تمت إضافة حالة التقدم الأصلي إلى دد!!!

الإصدار الجديد من كوروتيلز (8.24) يضيف حالة التقدم إلى dd أداة:

الاستخدام على إكس أوبونتو 15.10:

افتح محطة واكتب هذه الأوامر:

wget ftp://ftp.gnu.org/pub/gnu/coreutils/coreutils-8.24.tar.xztar -xf coreutils-8.24.tar.xzcd coreutils-8.24./configure && make -j $(nproc)

اركض dd كما الجذر:

sudo sucd src./dd if=/dev/sdc of=/dev/sda conv=noerror status=progress

سترى: بايت ، ثانية وسرعة (بايت / ثانية).

للتحقق من إصدارات dd:

الأم:

dd --version

جديد:

cd coreutils-8.24/src./dd --version

إذا كنت قد بدأت بالفعل دد ، وإذا كنت تكتب ملف مثل عند إنشاء نسخة من بندريف إلى القرص ، يمكنك استخدام الأمر ووتش لمراقبة باستمرار حجم ملف الإخراج لرؤية التغييرات وتقدير الانتهاء.

watch ls -l /pathtofile/filename

لرؤية حجم الملف فقط (ح-عرض الإنسان):

watch ls -sh /pathtofile/filename

ال dd | pv | dd جعل ثالوث بلدي 50 جيجابايت فم نسخة تأخذ 800 ثانية ، بدلا من 260 ثانية باستخدام دد فقط. مع هذا الخط ، على الأقل ، بف ليس لديه فكرة عن كيفية كبيرة ملف الإدخال لذلك لن تكون قادرة على ان اقول لكم مدى طول كنت حتى لا يكون هناك عيب للقيام بذلك على النحو التالي - وتحصل على ميزة سرعة لطيفة:

وأود أن تجنب بف على أي شيء كبير، و (في حالة استخدام باش):

التحكم-ض عملية دد

bg لوضعها في الخلفية. لاحظ ذلك bg سوف تعطيك الإخراج مثل [1] 6011 حيث الرقم الأخير هو معرف العملية. لذا ، افعل:

while true; do kill -USR1 process_id ; sleep 5; done

حيث يكون معرف العملية هو معرف العملية الذي لاحظته. ضرب السيطرة-ج عندما ترى شيئا مثل:

[1]+  Done dd if=/path/file.qcow2 of=/dev/kvm/pxetest bs=4194304 conv=sparse-bash: kill: (60111) - No such process

لقد انتهيت.

تحرير: مدير أنظمة سخيفة! أتمتة حياتك، لا تعمل! إذا كان لدي عملية دد طويلة التي أريد أن مراقبة ، وهنا بطانة واحدة من شأنها أن تأخذ الرعاية من انتشيلادا كله بالنسبة لك ؛ وضع هذا كله على سطر واحد:

 dd if=/path/to/bigimage of=/path/to/newimage conv=sparse bs=262144 & bgid=$!; while true; do sleep 1; kill -USR1 $bgid || break; sleep 4; done

يمكنك ، بطبيعة الحال ، النصي ، وربما جعل $1 ملف الإدخال الخاص بك و file 2 ملف الإخراج الخاص بك. يتم ترك هذا كممارسة للقارئ. لاحظ أنك بحاجة إلى القليل من النوم قبل القتل أو قد يموت القتل في محاولة لإرسال إشارة إلى دد عندما لا يكون جاهزا بعد. اضبط نومك حسب الرغبة (ربما قم بإزالة النوم الثاني تماما).

باش-فتو! :-)

http://linuxcommando.blogspot.com/2008/06/show-progress-during-dd-copy.html

أساسا:

kill -USR1 < dd pid >