Hdd থেকে hdd এর সম্পূর্ণ ডিডি অনুলিপি


34

মূল প্রশ্ন:

আমার যদি নিম্নলিখিত বৈশিষ্ট্যগুলি সহ 2 টি অভিন্ন হার্ড ড্রাইভ থাকে :

  • সটা 6.0 জিবি / এস
  • 5400 আরপিএম
  • 3TB

ফুল ডিডি অনুলিপিটি সম্পূর্ণ হতে কতক্ষণ সময় নিতে হবে?

এখনও অবধি এটি 5 ঘন্টা চলছে এবং এখনও চলছে ...

আমি লিনাক্স উবুন্টু 12.04 64 বিট ব্যবহার করছি এবং আমি যে কমান্ডটি ব্যবহার করছি তা হ'ল:

dd if=/dev/sdb of=/dev/sdc

আপডেট: 1

আমি এখন অগ্রগতিটি দেখতে পাচ্ছি, এবং 430 জিবি অনুলিপি করতে 6+ ঘন্টা হয়েছে। এইচডিডি 3 টিবি ...

এটি করার কোনও দ্রুত উপায় নেই?


আপডেট: 2

এটি আগের তুলনায় অনেক ভাল বলে মনে হচ্ছে (পরামর্শের জন্য গ্রোক্সিক্সডাকে ধন্যবাদ):

sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K

ইটিএ 3TB এর জন্য প্রায় 9 ঘন্টা, যেখানে এটি 6 ঘন্টা পরে 430GB পৌঁছানোর আগে, তাই আমি অনুমান করছি যে পূর্ববর্তী কমান্ডটি ব্যবহার করে এটি প্রায় 36 ঘন্টা লেগেছিল।


প্রক্রিয়াটির পরিসংখ্যানগুলি ধরার চেষ্টা করুন: চলমান 'ডিডি' প্রসেসে ইউএসআর 1 সংকেত পাঠানো এটি I / O পরিসংখ্যানগুলিকে স্ট্যান্ডার্ড ত্রুটিতে মুদ্রণ করে এবং পরে অনুলিপি শুরু করে। $ ডিডি যদি = / দেব / শূন্যের = / দেব / নাল এবং পিড = $! $ কিল-ইউএসআর 1 $ পিড বিভিন্ন ডিডি বাস্তবায়নের জন্য পৃথক হওয়ায় প্রকৃত সংকেতের জন্য আপনার ম্যান পৃষ্ঠাটি পরীক্ষা করুন।
গ্রাওক্সদা

@ গ্রক্সিক্সদা, কীভাবে করব তা আমার কোনও ধারণা নেই।
oshirowanen

1
জিএনইউ ডিডি ব্যবহার করে SIGUSR1, এবং বিএসডি ডিডি ব্যবহার করেSIGINFO
গ্রুমিক্সদা

এছাড়াও "একই সাটা তারের সাথে সংযুক্ত" দিয়ে আপনার অর্থ কী? আপনি কিছু ধরণের বন্দর গুণক ব্যবহার করছেন? (আপনি যদি 150MB / s এর ট্রান্সফার রেট অর্জন করেন তবে আপনাকে 5-6 ঘন্টা লাগতে হবে, তবে আমি মনে করি এর অর্ধেকটি আরও বাস্তববাদী))
গ্রাংক্সদা

1
আপনি কোনও পৃথক (বৃহত্তর) ব্লকসাইজ ( bs=যুক্তি দিয়ে dd) নির্দিষ্ট করে প্রক্রিয়াটি দ্রুত করতে সক্ষম হতে পারেন । প্রতিটি এইচডিডিকে তার নিজস্ব সাটা বন্দরে সংযুক্ত করার বিষয়েও বিবেচনা করুন।
গ্রাওক্সদা

উত্তর:


58

ddপুরানো দিনগুলিতে দরকারী ছিল যখন লোকেরা টেপ ব্যবহার করত (যখন ব্লকের আকারগুলি মজাদার থাকে) এবং যখন সহজ সরঞ্জামগুলি catবাইনারি-নিরাপদ নাও হতে পারে।

আজকাল, dd if=/dev/sdb of=/dev/sdcএটি একটি জটিল, ত্রুটি-প্রবণ, লেখার ধীর গতিcat /dev/sdb >/dev/sdcddকিছু অপেক্ষাকৃত বিরল কাজের জন্য এখনও কার্যকর হলেও এটি আপনাকে বিশ্বাস করতে দেবে এমন টিউটোরিয়ালগুলির সংখ্যার তুলনায় অনেক কম কার্যকর। কোন ম্যাজিক নেই dd, যাদু সব ভিতরে আছে /dev/sdb

আপনার নতুন কমান্ড sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128Kআবার অকারণে ধীর এবং জটিল। ডেটাগুলি একবারে 128 ddকেবি পাঠ করা হয় (যা 512 বি এর ডিফল্টের চেয়ে ভাল তবে বৃহত্তর মানগুলির মতোও ভাল নয়)। এটি লেখার আগে দুটি পাইপ দিয়ে যায়।

সহজ এবং দ্রুত catকমান্ড ব্যবহার করুন । (কিছু সালে benchmarks লিনাক্স অধীনে আগে বছর দুয়েক তৈরী catযতো তাড়াতাড়ি ছিল cpবিভিন্ন ডিস্ক মধ্যে একটি কপি জন্য, এবং cpতুলনায় দ্রুততর ছিল ddকোনো ব্লক আকার সঙ্গে; ddযখন একই ডিস্কে কপি সঙ্গে একটি বৃহৎ ব্লক আকার সামান্য দ্রুত ছিল।)

cat /dev/sdb >/dev/sdc

আপনি যদি এই কমান্ডটি চালাতে চান তবে আপনাকে sudoপুনঃনির্দেশটি রুট হিসাবে তৈরি করতে হবে:

sudo sh -c 'cat /dev/sdb >/dev/sdc'

আপনি যদি একটি অগ্রগতি প্রতিবেদন চান, যেহেতু আপনি লিনাক্স ব্যবহার করছেন, আপনি সহজেই catপ্রক্রিয়াটির পিআইডি (1234 বলুন) এবং তার ইনপুট (বা আউটপুট) ফাইল বর্ণনাকারীর অবস্থানটি দেখে একটি পেতে পারেন ।

# cat /proc/1234/fdinfo/0
pos:    64155648 
flags:  0100000

আপনি যদি অগ্রগতি প্রতিবেদন চান এবং আপনার ইউনিক্স বৈকল্পিক কোনও ফাইল বর্ণনাকারী পজিশনে পৌঁছানোর কোনও সহজ উপায় সরবরাহ না করে, আপনি এর pvপরিবর্তে ইনস্টল এবং ব্যবহার করতে পারেন cat


বড় ব্লকগুলির সাথে আশ্চর্যের বিষয়টি হ'ল যে বাধাটি হ'ল ডিস্ক, তাই এর catচেয়ে দ্রুত কী তৈরি হয় dd? এটি কি catক্যাশে ব্যবহার করে?
ইমানুয়েল

1
@ গিলস, উত্তরের জন্য ধন্যবাদ। আমার ক্লোন করতে আরও পাঁচটি 3 টিবি ড্রাইভ রয়েছে এবং বিড়ালের বিকল্পটি চেষ্টা করে দেখতে হবে। যতদূর আমি বলতে পারি যে, নতুন ডিডি কমান্ডটি সম্পূর্ণ হতে আরও 3 ঘন্টা সময় নিতে চলেছে, মোট 11 ঘন্টা। দ্বিতীয় 3 টিবি এইচডিডির জন্য যদি বিড়ালটির পদ্ধতির 11 ঘন্টাের চেয়ে দ্রুত হয়, তবে আমি সেই পদ্ধতিটি বাকী ড্রাইভগুলির জন্য ব্যবহার করব।
oshirowanen

2
@ গিলস, সুতরাং অগ্রগতি রিপোর্ট পেতে, আমি কি sudo sh -c 'pv /dev/sdb >/dev/sdc'পরিবর্তে ব্যবহার করব sudo sh -c 'cat /dev/sdb >/dev/sdc'?
oshirowanen

1
@oshirowanen হ্যাঁ, pvআপনি যেখানে ব্যবহার করবেন সেখানে ব্যবহার করুন cat
গিলস 10'50

1
@ উনহামার না! আপনি একে যেমন প্রতিটি যন্ত্রের এক কপি হবে cat /dev/sdc1 >/dev/sdb1 && cat /dev/sdd1 >/dev/sde1। দুটি অংশের প্রতিযোগিতা বোঝা যায় না। আপনি যদি বিটিআরএফএস ভলিউমের কাঠামো পরিবর্তন করতে চান, দুটি সাবভলিউমকে এক করে পরিবর্তন করতে, আপনার কাঠামোগত পরিবর্তন করার জন্য বিটিআরএফএস সরঞ্জাম ব্যবহার করতে হবে, বা যেমন আপনি পছন্দসই কাঠামোর সাহায্যে একটি নতুন ফাইল সিস্টেম তৈরি করতে এবং ফাইলগুলি অনুলিপি করতে চান ।
গিলস 'অশুভ হওয়া বন্ধ করুন'

7

ddডিফল্টরূপে খুব ছোট ব্লকসাইজ (512 বাইট) ব্যবহার করে। এর ফলে প্রচুর ওভারহেড হয় ( প্রতি 512 বাইটের জন্য একটি read()এবং write()সিস্কেল)।

আপনি যখন বৃহত্তর ব্লকসাইজ ব্যবহার করেন এটি অনেক দ্রুত যায়। অনুকূল গতি শুরু হয় bs=64kবা তাই। বেশিরভাগ লোকেরা আরও বৃহত্তর ব্যবহার করে bs=1Mতাই এটি মানব পাঠযোগ্য হয়ে ওঠে (যখন ddএটি অনুলিপি করে বলা হয় 1234 blocks, আপনি 1234 MiBকোনও গণিত না করেই জানেন )। এমনকি আরও বড় ব্লকসাইজ ব্যবহারের ফলে গতির উন্নতি হওয়ার সম্ভাবনা নেই, কেবলমাত্র উচ্চতর মেমরির ব্যবহার।

সুতরাং আদেশটি হওয়া উচিত:

dd bs=1M if=/dev/sdb of=/dev/sdc

যদি আপনি ইতিমধ্যেই একটি ধীর যদি ddদৌড়, যদি আপনি এতে বাধা এবং একটি দ্রুত সঙ্গে পুনরায় শুরু করতে পারেন ddউদাহরণস্বরূপ। এর জন্য কপিটি ইতিমধ্যে কতটা এগিয়ে গেছে তা জানা গুরুত্বপূর্ণ to ddসাধারণত আপনি যখন এটি বাতিল করেন তখন অগ্রগতি মুদ্রণ করে, বা আপনি USR1যখন এটির অগ্রগতি মুদ্রণ করতে চালিত হয় তখন আপনি এটি সিগন্যালটি পাঠাতে পারেন ।

kill -USR1 $(pidof dd)

উদাহরণস্বরূপ যদি এটির চেয়ে বেশি অনুলিপি করা হয় তবে 1234MiBআপনি 1234MiBব্যবহার করে পজিশনে আবার শুরু করতে পারেন :

dd bs=1M seek=1234 skip=1234 if=/dev/sdb of=/dev/sdc

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


5

চলমান ডিডি প্রক্রিয়া সম্পর্কে পরিসংখ্যান পাওয়া

স্ট্যান্ডার্ড ত্রুটিতে আউটপুট পরিসংখ্যান killতৈরি করতে আপনি উপযুক্ত সিগন্যালের সাহায্যে কমান্ডটি ব্যবহার করতে পারেন dd
জিএনইউ ডিডি ম্যান পৃষ্ঠা থেকে:

Sending a USR1 signal to a running 'dd' process makes it print I/O statistics to standard error and then resume copying.
      $ dd if=/dev/zero of=/dev/null& pid=$!
      $ kill -USR1 $pid
      18335302+0 records in 18335302+0 records out 9387674624 bytes (9.4 GB)  copied,  34.6279 seconds, 271 MB/s

নিশ্চিত হয়ে নিন যে আপনি নিজের ম্যান পৃষ্ঠাটি প্রথমে সঠিক সিগন্যালের জন্য পরীক্ষা করেছেন কারণ এটি বিভিন্ন ডিডি বাস্তবায়নের ক্ষেত্রে পৃথক হতে পারে: (বিএসডি ডিডি SignINFO ব্যবহার করে)।

প্রক্রিয়াটির গতি বাড়ছে

  1. প্রতিটি এইচডিডি এটির নিজস্ব Sata পোর্টের সাথে সংযুক্ত করুন যাতে ডেটা এক ডিভাইস থেকে পড়া যায় এবং একই সাথে অন্যটিতে লেখা যেতে পারে।
  2. bs=যুক্তি ব্যবহার করে উপযুক্ত ব্লকসাইজ ব্যবহার করুন । সুপারুউসারটিতে এই থ্রেডটি দেখুন এবং নিজের জন্য কিছু মান চেষ্টা করুন।
  3. ddপড়ার জন্য এবং লেখার জন্য পৃথক অনুরোধগুলি ব্যবহার করুন এবং সেগুলিতে সংযুক্ত করতে একটি পাইপ ব্যবহার করুন ( dd if=/dev/sda bs=1M | dd of=/dev/sdb bs=1M)।
    আপনি যদি এটি করেন এবং একটি ব্লকসাইজ নির্দিষ্ট করে থাকেন তবে নিশ্চিত হন যে আপনি প্রতিটি অনুরোধে একই ব্লকসাইজটি ব্যবহার করেছেন।
  4. আপনি directযুক্তি মত অন্যান্য অপ্টিমাইজেশান চেষ্টা করতে পারেন ।
  5. নিশ্চিত করুন যে আপনার হার্ড ডিস্কগুলি মাউন্ট করা হয়নি বা এর ফলস্বরূপ অনুলিপি হতে পারে।

0

আপনি 'জিপিটার' চেষ্টা করেছেন? আপনি আক্ষরিক অর্থে একটি ড্রাইভ থেকে অন্য ড্রাইভে একটি পার্টিশন অনুলিপি করতে পারেন এবং প্রয়োজন অনুযায়ী এটি আকার পরিবর্তন করতে পারেন। আপনি স্থানান্তর হার এবং বাকি সময় পান। এটি লিনাক্স পার্টিশনের জন্য 'e2image' ব্যবহার করে।


0

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

ফ্রিটি প্রায় 80MB / সেকেন্ড হারে স্থানান্তরিত করবে, যখন অর্থ প্রদানের সংস্করণগুলি আরও দ্রুত যেতে পারে। এনটিএফএস এবং এফএটি ফাইল সিস্টেমগুলির জন্য, অর্থ প্রদানের সংস্করণগুলি কেবলমাত্র এইচডি'র অধিষ্ঠিত বিটগুলি ক্লোন করতে কনফিগার করা যেতে পারে, যা প্রতিটি ক্লোনটির গতি নাটকীয়ভাবে বৃদ্ধি করে।


(1) আপনি কি এই পণ্যটির সাথে যুক্ত? (2) আমরা এটি কোথায় পেতে পারি?
স্কট 21

1
অথবা আপনি কেবল "বিড়াল / দেব / এসডিএক্স> / দেব / এসডি" বিনামূল্যে ব্যবহার করতে পারেন ...
হিরমান এইচএইচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.