আপনি কিভাবে ডিডি এর অগ্রগতি পর্যবেক্ষণ করবেন?


654

ddএকটি আশ্চর্যজনক। এটা আপনাকে অন্য একটি হার্ড ড্রাইভ নকল, সম্পূর্ণরূপে, হার্ড-ড্রাইভ শূন্য ইত্যাদি কিন্তু একবার আপনি একটি আরম্ভ করতে দেয় ddকমান্ড সেখানে তার অগ্রগতির তোমাকে বলতে কিছুই নেই। কমান্ডটি শেষ না হওয়া অবধি এটি কার্সারে বসে আছে। তাহলে একজন ডিডি এর অগ্রগতি কিভাবে করবেন?

উত্তর:


728

আপডেট ২০১ 2016 : আপনি জিএনইউ কোর্টিলস> = 8.24 (উবুন্টু জেনিয়ালে ১ default.০৪ ওপরের দিকে ডিফল্ট) ব্যবহার করেন, তবে অগ্রগতিটি প্রদর্শনের জন্য বিকল্প পদ্ধতির জন্য নীচের পদ্ধতি ২ দেখুন।


পদ্ধতি 1: ব্যবহার করে pv

pvকেবল ইনপুট / আউটপুট ddকমান্ডের মধ্যে ইনস্টল করুন এবং রাখুন ।

দ্রষ্টব্য : আপনি ইতিমধ্যে শুরু করার সময় আপনি এটি ব্যবহার করতে পারবেন না dd

থেকে প্যাকেজ বিবরণ :

pv- পাইপ ভিউয়ার - পাইপলাইনের মাধ্যমে ডেটার অগ্রগতি পর্যবেক্ষণ করার জন্য একটি টার্মিনাল ভিত্তিক সরঞ্জাম। ডেটাটি কীভাবে দ্রুত পাস হতে চলেছে, কতক্ষণ সময় নিয়েছে, কতটা সমাপ্তির কাছাকাছি রয়েছে তার দৃশ্যমান ইঙ্গিত দিতে এটি দুটি প্রক্রিয়ার মধ্যে যে কোনও সাধারণ পাইপলাইনে intoোকানো যেতে পারে এবং এটি সম্পূর্ণ হওয়ার আগ পর্যন্ত কতটা হবে তার একটি অনুমান।

স্থাপন

sudo apt-get install pv

উদাহরণ

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

আউটপুট

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

আপনি --sizeযদি সময় নির্ধারণ করতে চান তবে আপনি আনুমানিক আকারটি নির্দিষ্ট করতে পারেন।


উদাহরণস্বরূপ ধরে নেওয়া 2 / জিবি ডিস্কটি / dev / sdb থেকে অনুলিপি করা হচ্ছে

কমান্ড ব্যতীত 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

অন্যান্য ব্যবহার

আপনি অবশ্যই pvstdout এ আউটপুট পাইপ সরাসরি ব্যবহার করতে পারেন :

pv /home/user/bigfile.iso | md5sum

আউটপুট

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

মনে রাখবেন যে এই ক্ষেত্রে, pvস্বয়ংক্রিয়ভাবে আকারটি স্বীকৃতি দেয়।


পদ্ধতি 2: নতুন statusবিকল্পে যুক্ত হয়েছে dd(GNU Coreutils 8.24+)

ddজিএনইউ কোরিউটিলস ৮.২৪+ তে (উবুন্টু ১.0.০৪ এবং আরও নতুন) statusঅগ্রগতিটি প্রদর্শনের জন্য একটি নতুন বিকল্প পেয়েছে :

উদাহরণ

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

আউটপুট

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

76
পিভি বিগফিল.আইসো | = ডিভ / আপনার / ডিভাইস এর ডিডি
আয়ন বিআর।

18
মনে রাখবেন যে, "DD" জন্য পরামিতি প্রথমার্ধে (পাইপের ইনপুট অংশ) যথাযথ আছেন: dd if=/dev/zero bs=1M count=35000 | pv | dd of=VirtualDisk.raw
সোপালাজো ডি অ্যারিরেজ

6
pv bigfile.iso | dd of=VirtualDisk.raw bs=1M count=35000কাজ করে, যাচাই করা হয়। @ সোপালাজোডআরিরিজেজ, প্যারামিটারগুলি দ্বিতীয় ডিডিতে দেওয়া যেতে পারে।
সিদ্ধার্থআরটি

11
ব্যবহার pv < /dev/sda > /dev/sdbমনে ভাল গতি (পেতে উৎস )
নিকোলা Feltrin

14
গতিতে এফওয়াইআই dd if=/dev/urandom | pv | of=/dev/sdbস্যামসুং 840 প্রো এসএসডি দিয়ে আমার কম্পিউটারে পরীক্ষাগুলি: M 18MB / s লেখায় dd if=/dev/zero | pv | of=/dev/sdbদেয় , M 80MB / s dd if=/dev/zero of=/dev/sdbদেয় এবং সরল পুরানো ~ 550MB / s দেয় (এসএসডি সর্বোচ্চ লেখার গতির কাছাকাছি)। সব সাথে bs=4096000
টেড হানসেন

461

হাওটো থেকে : ডিডির অগ্রগতি পর্যবেক্ষণ করুন

killকমান্ডটি ব্যবহার না করে আপনি ডিডির অগ্রগতি নিরীক্ষণ করতে পারেন ।

ddএকবার চলমান থাকলে এর অগ্রগতি দেখতে অন্য টার্মিনালটি খুলুন এবং প্রবেশ করুন:

sudo kill -USR1 $(pgrep ^dd)

প্রক্রিয়াটি না থামিয়ে টার্মিনাল উইন্ডোতে এটি ddঅগ্রগতি প্রদর্শন করবে dd। আপনি BSD বা OS X এ থাকলে INFOপরিবর্তে ব্যবহার করুন USR1USR1সংকেত DD বিনষ্ট হবে।

আপনি যদি ddঅগ্রগতির নিয়মিত আপডেট পেতে চান তবে প্রবেশ করুন:

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

watchddপ্রক্রিয়াটি প্রতি-সেকেন্ডে ( -n5= 5 সেকেন্ড) তদন্ত করবে এবং এটিকে থামিয়ে না দিয়ে প্রতিবেদন করবে।

উপরের কমান্ডগুলিতে যথাযথ একক উক্তিগুলি নোট করুন।


19
এটি কাজ করেছে, কিন্তু বেশ কয়েকটি মন্তব্য করেছে। প্রথমত, আমি নিশ্চিত নই যে আপনি আপনার ব্যাকটিকগুলি কেন পালিয়ে এসেছেন (যদি এটি এসও সম্পাদকের হয়ে থাকে তবে আপনি এটি ভুলভাবে করেছিলেন)। দ্বিতীয়ত, আমি ^ dd using ব্যবহারের প্রস্তাব দিই, যদি উপসর্গ ডিডি সহ অন্য কিছু চলমান থাকে। শেষ অবধি, ইউএসআর 1 সংকেত প্রেরণের জন্য আপনার সুডোর দরকার নেই। অন্যথায়, ভাল উত্তর, +1।
gsingh2011

22
বিশেষ দ্রষ্টব্য! এইভাবে ওএসএক্সের আওতায় ডিডি কাজ করে।
ম্যাক্সিম খোলিয়াভকিন

26
@ স্পেপাকাস আপনাকে kill -INFO $(pgrep ^dd$)বিএসডি সিস্টেমে ( ওএসএক্সের মতো) ব্যবহার করতে হবে ।
টর্বেন

20
sudo pkill -usr1 ddমনে রাখা সহজ, পুরোপুরি সূক্ষ্মভাবে কাজ করে (কমপক্ষে উবুন্টু 14.04 এ), এবং টাইপ করাও কম।
ফোনগুলি

21
আমি এটি পছন্দ করি কারণ আমি ভয় করি যে pvবদলিটি হস্তান্তর করবে, যেমন টেডহানসেন দেখিয়েছিলেন showed এছাড়াও, আমি বাজি দেব যে প্রচুর লোকেরা এটি গুগল করছে কারণ তারা ইতিমধ্যেdd অপারেশন শুরু করেছে ;)
সুডো

104

কয়েকটি সহজ নমুনা ব্যবহার করে pvএবং কম টাইপিং বা আরও অগ্রগতি হয় তারপরে অন্যান্য উত্তরগুলি:

প্রথমে আপনাকে pvকমান্ডটি ইনস্টল করতে হবে :

sudo apt-get install pv

তারপরে কয়েকটি উদাহরণ হ'ল:

pv -n /dev/urandom | dd of=/dev/null
pv -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

স্ক্রিনশট

উত্স: http://www.cyberciti.biz/faq/linux-unix-dd-command-show-progress- moment-coping/

নিজেকে আর্কাইভ করার জন্যও।


3
আপনার dialogকমান্ডটিও ইনস্টল করতে হবেapt-get install dialog
k7k0

7
ভালোবাসেনdialog উদাহরণ। এখনই সিরিয়েন্স !
অ্যালেক্স ধূসর

আপনি কি কেবল সেই অজগর দিয়ে ডায়ালগ কল করতে পারেন?
মাইকিমপ

1
এই উত্তরের জন্য ধন্যবাদ, আবিষ্কার করা dialogএটি শেল স্ক্রিপ্টগুলি লেখার ক্ষেত্রে অত্যন্ত সহায়তা করবে: ডি
হলস

2
brew install pv dialogম্যাকের জন্য. এছাড়াও এই ভদ্রলোক শৈলীর সাথে গণনা করেন। সাবাস।
দুষ্টস্নুবু

62

ব্যবহার করুন Ctrl+ + Shift+ + Tযখন ddচলমান, এবং এটা আউটপুট উন্নতি (বাইটে) হবে:

load: 1.51  cmd: dd 31215 uninterruptible 0.28u 3.67s
321121+0 records in
321120+0 records out
164413440 bytes transferred in 112.708791 secs (1458745 bytes/sec)

5
কুবুন্টু ট্রাস্টিতে আমার জন্য কাজ করে না। সম্ভবত বিরোধী কী বাঁধাই?
জামাদগনি

14
দুর্দান্ত উপায়. এটি
ওএসএক্সের

1
প্রথম লাইনটি ওএস এক্স দ্বারা উত্পাদিত হয়, কেবল পরবর্তী 3 টি লাইনই dd
Itay গ্রুদেব

3
আপনি ওএস এক্স
19F15

3
এটি উবুন্টুতে কাজ করে না। Ctrl-T / Ctrl-Shift-T কেবলমাত্র ^Tটার্মিনালে আউটপুট দেয় (অনেক টার্মিনাল অ্যাপ্লিকেশন বাদে Ctrl-Shift-T কে স্বীকার করে একটি নতুন ট্যাব খুলবে)। ওএসএক্স / বিএসডি-তে অনেক সন্ধানকারী এই উত্তরটির প্রশংসা করতে পারে, তবে এটি পরিষ্কার করা উচিত যে এটি উবুন্টুর পক্ষে নয় (বা সাধারণভাবে জিএনইউ / লিনাক্স?)
mwfearnley

60

শেষ করার জন্য:

জিএনইউ কোর্টিলের ৮.২৪ সংস্করণে ডিডির জন্য একটি প্যাচ রয়েছে যা প্রগতিটি মুদ্রণের জন্য একটি পরামিতি প্রবর্তন করে।

দ্য কমিট এই পরিবর্তন উপস্থাপক মন্তব্য রয়েছে:

dd: পর্যায়ক্রমে পরিসংখ্যানগুলি মুদ্রণের জন্য নতুন স্থিতি = অগ্রগতি স্তর

উবুন্টু 16.04.2 এলটিএস সহ অনেকগুলি বন্টন এই সংস্করণটি ব্যবহার করে।


যোগ ঠিক করা কীভাবে আমি 8,24 coreutils কম্পাইল করেছি: apt install build-essentialএবং apt-get build-dep coreutils, তারপর ডাউনলোড coreutils-8.25.tar.xz, tar xvf coreutils-8.25.tar.xz configure --prefix=$HOME/usr/localএবং চালানোর make। নতুন সংকলিত ddহবে srcdir অধীনে । আপনি / bin এ এটা কপি এবং বিদ্যমান বা src / DD চালানো স্বত্ব প্রতিস্থাপন করতে পারেন
holms

2
কুল! আমি এই বৈশিষ্ট্যটি পছন্দ করি। এবং অগ্রগতি আউটপুট মুদ্রণ করতে ডিডি শেখাতে প্রায় 30 বছর সময় নিয়েছে। :-)
জোহানেস ওভারম্যান

কি শান্তি! আমি তাত্ক্ষণিকভাবে এই যুক্তিটি একটি ডিডি শেল ওরফে যুক্ত করব।
স্টিফান হেনিংসেন

নোট করুন যে স্ট্যাটাসটি কখনও কখনও দুটি সংখ্যার সাথে মুদ্রণ করবে, এসআই ইউনিটে একটি এবং বাইনারি ইউনিটগুলির সমমানের মান (যেমন 10 এমবি, 9.5 মাইবি)।
পালসউইম

33

সেরাটি http://dcfldd.sourceforge.net/ ব্যবহার করছে এটিপ-গেটের মাধ্যমে ইনস্টল করা সহজ


3
dcfldd এর পয়েন্টারটির জন্য ধন্যবাদ, ডিডির সাথে খুব সামঞ্জস্যপূর্ণ তবে কিছু ভাল নতুন বৈশিষ্ট্য রয়েছে। আমি বিশেষত স্ট্যান্ডার্ড অগ্রগতি পছন্দ করি।
ফ্লয়েড

4
ডিসিএফএলডিডি কেন বেশি পরিচিত নয় তা আমার কাছে সম্পূর্ণ রহস্য।
Freedom_Ben

28
সম্ভবত এটির জন্য
জিওভানি টরাল্ডো

এটিতে ডিফল্টরূপে, অগ্রগতি বার্তাগুলির জন্য, বার্তা আপডেটের ফ্রিকোয়েন্সি এবং শতাংশ সূচক জন্য বিকল্পগুলি ddএবং বিকল্প রয়েছে । আমি এটির নাম status=onstatusinterval=Nsizeprobe=[if|of]DD
রাখব

25

নেটিভ অগ্রগতি স্ট্যাটাস যোগ করা হয়েছে !!!

Coreutils (8.24) এর নতুন সংস্করণটি সরঞ্জামটিতে একটি অগ্রগতি স্থিতি যুক্ত করেছে dd:

জুবুন্টু 15.10 এ ব্যবহার:

একটি টার্মিনাল খুলুন এবং এই আদেশগুলি টাইপ করুন:

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

ddরুট হিসাবে চালান :

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

আপনি দেখতে পাবেন: বাইটস, সেকেন্ড এবং গতি (বাইটস / সেকেন্ড)।

এর সংস্করণগুলি পরীক্ষা করতে dd:

স্থানীয়:

dd --version

নতুন:

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

18

আপনি যদি ইতিমধ্যে ডিডি শুরু করে দিয়ে থাকেন এবং আপনি যদি কোনও ফাইল লিখে থাকেন যেমন ডিস্কে পেনড্রাইভের একটি অনুলিপি তৈরি করার সময়, আপনি পরিবর্তনগুলি দেখতে এবং সম্পূর্ণরূপে অনুমানের জন্য আউটপুট ফাইলটির আকার পর্যবেক্ষণ করতে ওয়াচ কমান্ডটি ব্যবহার করতে পারেন।

watch ls -l /pathtofile/filename

কেবলমাত্র ফাইলের আকার দেখতে (এইচ-হিউম্যান ভিউ):

watch ls -sh /pathtofile/filename

এছাড়াও একটি কার্যকর পদ্ধতি ...
ζ--

3
দরকারী, যদিও এটি অগত্যা কাজ করে না যদি আপনি ডিডি আউটপুটটি কোনও ফাইল ব্যতীত অন্য কোনও কিছুর সাথে পাইপ করে থাকেন (উদাহরণস্বরূপ ডিস্কে লেখার আগে gzip'ing)।
পঙ্কডুডল

বিশেষ ফাইলগুলিতে কাজ করে না।
জোহানেস ওভারম্যান

13

dd | pv | ddত্রয়ী আমার 50GB VM কপি 800 সেকেন্ডের নিতে, যেমন শুধু DD ব্যবহার 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 এবং আপনার আউটপুট ফাইলটি 2 ডলার করতে পারে। এটি পাঠকের অনুশীলন হিসাবে ছেড়ে গেছে। মনে রাখবেন যে কিল করার আগে কিল বা কিল মারা যাওয়ার আগে আপনার যখন অল্প ঘুম দরকার তখন ডিডি-র কাছে সিগন্যাল প্রেরণ করার চেষ্টা করা যায় যখন এটি প্রস্তুত না হয়। আপনার ঘুম পছন্দসই হিসাবে সামঞ্জস্য করুন (এমনকি দ্বিতীয় ঘুম পুরোপুরি মুছে ফেলুন)।

বাশ- এফটিডাব্লু! :-)


1
whileলুপটি সংকুচিত করুন । ব্যবহার watch
মুড়ু

1
@ মুরু এটি নির্ভর করে। আমি আপনার সিস্টেম সম্পর্কে জানি না তবে CentOS7 * এ আউটপুটটি কিছুটা গার্ফড; এটি পাঠযোগ্য তবে সুশৃঙ্খল নয়। এছাড়াও এটি আপনার আগের আউটপুটটির উপরে উঠে পড়ে যাতে আপনি আপনার ডিডির গতির ইতিহাস হারিয়ে ফেলেন; খনি 20 এমবি / গুলি এবং 300 এমবি / সেকেন্ডের মধ্যে পরিবর্তিত হয়। সংখ্যাগুলি বিভিন্ন এবং শিক্ষণীয়ও দেখতে আকর্ষণীয়। আমি মনে করি যে এলভিএম পাতলা পুলগুলি যে এলভিতে লিখছি তার জন্য বরাদ্দ বাড়ানোর কারণে কিছুটা বড় বৈকল্পিকতা রয়েছে। * হ্যাঁ এটি একটি উবুন্টু ফোরাম তবে আমি এখানে "ডিডি মনিটরের অগ্রগতি" খুঁজছি। এটি গুগলে প্রথম ফলাফল।
মাইক এস

ওহ, আমি অন্য টার্মিনাল বা স্ক্রিন উইন্ডো বলতে চাইছি, রান করুন sudo watch pkill dd। তারপরে ddস্বাচ্ছন্দ্যের পরিসংখ্যান দেখুন।
মুড়ু

Pkill ডিফল্টরূপে SIGTERM প্রেরণ করবেন না? আমি এমনকি পরীক্ষাও করতে চাই না, যেহেতু একক ডিডি চালানোর সময় pgrep dd 3 pid এর সাথে আসে: kthreadd, oddjob এবং dd। পিকিল কী করবে সে সম্পর্কে আমি ভীত। আপনি পিসিল দিয়ে-ইউএসআর 1 সিগন্যালটি প্রেরণ করতে পারেন তবে আবার আমি জানি না যে কার্নেল থ্রেডে বা অববজকে পাঠানো নিরাপদ কিনা। ওয়াচ কমান্ডটি আরও পরিষ্কার দেখাচ্ছে তবে কিছুক্ষণের লুপ এড়াতে এটি অনেকগুলি অতিরিক্ত পদক্ষেপের মতো মনে হচ্ছে। সাধারণত আমি যদি একটি উইন্ডোতে একটি ডিডি করছি আমি একই শেলের পরে ঠিক কিছু করব। কিছুক্ষণের লুপটি নিরাপদ: আপনি জানেন ঠিক কোন পিডটি সিগন্যাল পায়।
মাইক এস

আমি যেহেতু কোন পিডগুলি সিগন্যাল পায় তা বেশিরভাগ ক্ষেত্রেই আমি লক্ষ্য করি না watch pkill -USR1 -x dd। যেহেতু আমি watchঅন্যান্য অনুরূপ কাজের জন্যও ব্যবহার করি , এটি স্বাভাবিকভাবেই আসে।
মুড়ু

11

1
"পিকিল-ইউএসআর 1 ডিডি" হ'ল সহজ সংস্করণ যা আমি অবগত (যতক্ষণ না আপনি কেবলমাত্র ডিডির একটি উদাহরণ চালাচ্ছেন)। আমার সিস্টেমে আমার সুডো দরকার: "sudo pkill -USR1 dd"। আপনি dd কমান্ড টাইপ করার পরে কাজ করে এবং আপনাকে নতুন কিছু ইনস্টল করার দরকার নেই।
ফ্রেড হ্যামিল্টন

7

সবচেয়ে সহজ:

 dd if=... of=... bs=4M status=progress oflag=dsync

oflag=dsyncআপনার লেখাকে সিঙ্কে রাখবে, সুতরাং এর তথ্য status=progressআরও সঠিক। তবে এটি কিছুটা ধীর হতে পারে।


1
gnu.org/software/coreutils/manual/html_node/dd-invocation.html এর মতে ব্যবহার conv=fsyncকরা আরও ভাল
চেন দেং-টা

এর জন্য ধন্যবাদ! আমি একটি রিমোট lvm2 তে ডিডি করছি এবং বিএস = 4 এম 20 এর ফ্যাক্টর দ্বারা আমার ট্রান্সফার বৃদ্ধি করেছে এবং অগ্রগতির ইঙ্গিতটি দুর্দান্ত।
লনি সেরা

6

উবুন্টু 16.04 এ

উবুন্টু 16.04 ডিডি (কোর্টিল) সংস্করণ 8.25 এর সাথে আসে । অত: পর বিকল্প status=progress হয় সমর্থিত :-)

এটি ব্যবহার করতে, status=progressআপনার ddকমান্ড সহ কেবল যুক্ত করুন ।

উদাহরণ:

dd bs=4M if=/media/severus/tools-soft/OperatingSystems/ubuntu-16.04-desktop-amd64.iso of=/dev/null status=progress && sync

হিসাবে মর্যাদা দেয়

1282846183 bytes (1.2 GiB, 1.1 GiB) copied, 14.03 s, 101.9 MB/s

এখানে চিত্র বর্ণনা লিখুন


5

status=progressস্থানান্তরকালে অগ্রগতি পেতে বিকল্পটি ব্যবহার করুন ।

এছাড়াও, conv=fsyncI / O ত্রুটিগুলি প্রদর্শন করবে।

উদাহরণ:

sudo dd if=mydistrib.iso of=/dev/sdb status=progress conv=fsync

4

আমি সত্যিই ড্রেসস্কু পছন্দ করি, এটি ডিডি হিসাবে কাজ করে তবে আউটপুট দেয় এবং ত্রুটিগুলিতে ব্যর্থ হয় না, বিপরীতে এটির একটি খুব উন্নত অ্যালগরিদম রয়েছে একটি সফল অনুলিপি করার জন্য সত্যই চেষ্টা করা ... এটির জন্য অনেক জিইউআই রয়েছে

প্রকল্প: https://www.gnu.org/software/ddrescue

উইকিপিডিয়া: https://en.wikedia.org/wiki/Ddrescue

এখানে চিত্র বর্ণনা লিখুন


3

আমি এটির উপরে ব্যাশ মোড়ক তৈরি করেছি ddযা pvঅগ্রগতি দেখানোর জন্য ব্যবহার করবে । এটি আপনার মধ্যে রাখুন .bashrcএবং ddযথারীতি ব্যবহার করুন :

# dd if=/dev/vvg0/root of=/dev/vvg1/root bs=4M
    2GB 0:00:17 [ 120MB/s] [===========================================================>] 100%            
0+16384 records in
0+16384 records out
2147483648 bytes (2.1 GB) copied, 18.3353 s, 117 MB/s

উৎস:

dd()
{
    local dd=$(which dd); [ "$dd" ] || {
        echo "'dd' is not installed!" >&2
        return 1
    }

    local pv=$(which pv); [ "$pv" ] || {
        echo "'pv' is not installed!" >&2
        "$dd" "$@"
        return $?
    }

    local arg arg2 infile
    local -a args
    for arg in "$@"
    do
        arg2=${arg#if=}
        if [ "$arg2" != "$arg" ]
        then
            infile=$arg2
        else
            args[${#args[@]}]=$arg
        fi
    done

    "$pv" -tpreb "$infile" | "$dd" "${args[@]}"
}

ভাল উপায় তবে এটি সুডো বা সময়ের মতো কমান্ড দিয়ে কাজ করে না।
ম্যাক্সিম খোলিয়াভকিন

1
উপরে, / usr / স্থানীয় / বিন / DD সেটিকে রাখুন এই সঙ্গে: #!/bin/bash। নীচে: tmp=":${PATH}:"; tmp=${tmp/:/usr/local/bin:/:}; tmp=${tmp%:}; PATH=${tmp#:}; dd "$@"বা আপনি হার্ডকোড ddঅবস্থান করতে ইচ্ছুক হতে পারে । তারপরে ব্যবহার করুন local dd=/usr/bin/dd। এক্সিকিউটেবল বিট যোগ করতে ভুলবেন না: chmod +x /usr/local/dd
মিডেনোক

2

তাই আজ চলার killসময় আমি একটি লুপে চালানোর চেষ্টা করে কিছুটা হতাশ হয়ে পড়েছিলাম ddএবং এগুলি সমান্তরালে চালানোর জন্য খুব সহজেই এই পদ্ধতিটি নিয়ে এসেছি:

function vdd {
    sudo dd "$@" &
    sudo sh -c "while pkill -10 ^dd$; do sleep 5; done"
}

এখন vddআপনি যে কোনও জায়গাতে সাধারণত ব্যবহার করবেন কেবলমাত্র এটি ব্যবহার করুন dd(এটি সমস্ত যুক্তি সরাসরি মাধ্যমে পাস করে) এবং আপনি প্রতি 5s-তে প্রিন্ট হওয়া একটি অগ্রগতি প্রতিবেদন পাবেন।

একমাত্র খারাপ দিকটি হ'ল ডিডি সম্পূর্ণ হওয়ার সাথে সাথে কমান্ডটি ততক্ষনে ফিরে আসে না; সুতরাং এটি সম্ভব যে এই কমান্ডটি নোটিশ এবং প্রস্থান হওয়ার আগে ডিডি ফেরতের পরে আপনাকে অতিরিক্ত 5s অপেক্ষা করতে পারে।


2

এই এক ডিডি প্রতি 2 সেকেন্ডের পরিসংখ্যান সরবরাহ করতে বাধ্য করে যা দেখার জন্য ডিফল্ট:

watch killall -USR1 dd

প্রতি 2 সেকেন্ড থেকে প্রতি 5 সেকেন্ডে পরিবর্তন করতে, এইভাবে নন -5 বিকল্প যুক্ত করুন:

watch -n 5 killall -USR1 dd

2

ঠিক সে ক্ষেত্রে যদি সেন্টস জমি থেকে কেউ এই থ্রেডটি খুঁজে পায় ...

'স্থিতি = অগ্রগতি' বিকল্পটি CentOS 7.5 এবং 7.6 এর সাথে কাজ করে

@ ডেভিড ডেভিডসনের উপরের উত্তরটি বোঝায় যে বৈশিষ্ট্যটি নতুনভাবে কোরেটিলস 8.24 এ যুক্ত করা হয়েছে।

জিএনইউ কোর্টিলের ৮.২৪ সংস্করণে ডিডির জন্য একটি প্যাচ রয়েছে যা প্রগতিটি মুদ্রণের জন্য একটি পরামিতি প্রবর্তন করে।

এটি হতে পারে তবে সেন্টসস একই সংস্করণ স্কিমটি অনুসরণ করছে না।

CentOS 7.6.1810 এর সাথে আসে কোরিটিলসের সংস্করণটি হ'ল:

coreutils-8.22-23.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts

এবং ডিডির যে সংস্করণটি ইনস্টল করা হয়েছে তা হ'ল:

[root@hostname /]# dd --version
dd (coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, and Stuart Kemp.

এটি সংস্করণ 8.22 দেখায় ।

তবে, আমি CentOS 7.5 এবং CentOS 7.6 (উভয়ই Coreutils এর 8.22 সংস্করণ সহ) এর সাথে dd সহ 'স্থিতি = অগ্রগতি' পরীক্ষা করেছি এবং এটি সঠিকভাবে কাজ করে।

আমি জানি না কেন রেডহ্যাট কোরিটিলসের এত পুরানো সংস্করণ ব্যবহার করতে পছন্দ করে তবে কার্যকারিতা 8.22 এর সাথে বিদ্যমান।


1

উপরে উল্লিখিত হিসাবে, কমপক্ষে জিএনইউ কোর্টিলস বা ব্যস্তবক্স থেকে 'ডিডি' দিয়ে, এটি স্টাডারের অগ্রগতি তথ্য মুদ্রণের মাধ্যমে একটি ইউএসআর 1 সিগন্যালের প্রতিক্রিয়া জানাবে।

আমি ডিডির জন্য একটি সামান্য মোড়ক স্ক্রিপ্ট লিখেছিলাম যা একটি ভাল শতাংশ-সম্পূর্ণ সূচক দেখায়, এবং কোনওভাবেই ডিডির প্রক্রিয়া বা কাজ করার পদ্ধতিতে হস্তক্ষেপ না করার চেষ্টা করে। আপনি এটি গিথুবে খুঁজে পেতে পারেন:

http://github.com/delt01/dd_printpercent

দুর্ভাগ্যক্রমে, এই SIGUSR1 ট্রিকটি কেবলমাত্র GNU dd (কোর্টিলস প্যাকেজ থেকে) বা ব্যস্তবক্সের 'dd' মোডের সাথে সেই নির্দিষ্ট বৈশিষ্ট্যটি সংকলনের সময় সক্ষম করে works এটি ফ্রিবিএসডি এবং ওএস এক্স সহ বেশিরভাগ বিএসডি সিস্টেমের সাথে অন্তর্ভুক্ত স্টক 'ডিডি' নিয়ে কাজ করে না ... :(


লিঙ্কটি মারা গেছে।
ishmael

1

আপনি ব্যবহার করে যে কোনও কোর্টিলস প্রোগ্রামের অগ্রগতি দেখতে পারেন progress - Coreutils Progress Viewer

এটি নিরীক্ষণ করতে পারে:

সিপি এমভি ডিডি টার বিড়াল আরএসসিএনসি গ্রেপ এফআরপি কাট সাজ্ট এমডি 5সাম শা 1 সুম শ 224সাম শ 256 সুম শ 384সুম শ512সাম অ্যাডিবি জিজিপ গানজিপ বিজিপ 2 বুঞ্জিপ 2 এক্সজেড আনক্সজ এলজিমা আনলজমা 7 জাজ্যাট বিজেট্যাট স্প্লিট জিপ্যাট স্প্লিট

ম্যানপেজটি দেখতে পাবেন

কমান্ডটি চলার সময় আপনি এটি পৃথক টার্মিনাল উইন্ডোতে ব্যবহার করতে পারেন বা ডিডি কমান্ডের সাহায্যে এটি চালু করতে পারেন:

dd if=/dev/sda of=file.img & progress -mp $!

এখানে &প্রথম কমান্ডটি কাঁটাচামচ করে এবং কমান্ডটি শেষ না হওয়া পর্যন্ত অপেক্ষা করার পরিবর্তে অবিলম্বে অবিরত হয়।

অগ্রগতি কমান্ডটি প্রবর্তন করা হয়েছে: -mসুতরাং এটি পর্যবেক্ষণ প্রক্রিয়া শেষ না হওয়া পর্যন্ত অপেক্ষা করে, -pসুতরাং এটি প্রদত্ত পিডকে পর্যবেক্ষণ করে এবং $!সর্বশেষ কমান্ড পিড।

আপনি যদি sudo এর সাথে ডিডি ইস্যু করেন তবে আপনার খুব বেশি অগ্রগতিও করতে হবে:

sudo dd if=/dev/sda of=file.img &
sudo progress -m
# with no -p, this will wait for all coreutil commands to finish
# but $! will give the sudo command's pid
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.