সম্পূর্ণ পার্টিশন বা একটি হার্ড ডিস্কে হার্ড ড্রাইভ ক্লোন করুন


35

আমি একটি বৃহত বহিরাগত ডিস্কে একটি সম্পূর্ণ পার্টিশন বা একটি সম্পূর্ণ হার্ড ড্রাইভ ক্লোন করতে চাই তবে একটি স্পার্স ফাইল তৈরি করতে চাই। আমি প্রায়শই ddক্লোনিংয়ের জন্য ব্যবহার করি তবে এটি বিরল ফাইলগুলি সমর্থন করে না। কার্যকারণ হিসাবে আমি এরকম কিছু ব্যবহার করেছি:

cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw

তবে এটি আমার স্বাদের জন্য কিছুটা জটিল এবং যদি গর্ভবতী হয় তবে আমাকে প্রক্রিয়াটি পুনরায় শুরু করতে দেয় না। মজার বিষয় এই যে ( ntfsclone) এর জন্য একটি এনটিএফএস সরঞ্জাম আছে তবে লিনাক্সের নেটিভ ফাইল সিস্টেমগুলির জন্য এই জাতীয় কোনও সরঞ্জাম উপস্থিত নেই (এক্সটি ২-৪)।

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


7
সৃজনশীল ব্যবহারের জন্য +1 cp, আমার কাছে এমনটি কখনও ঘটেনি যে আপনি কোনও ডিস্ক চিত্রকে ছড়িয়ে-ছিটিয়ে ফেলতে পারেন। আমার যদি জায়গা বাঁচানোর দরকার হয় তবে আমি সর্বদা তাদের সংকুচিত করেছিলাম। এখন কেন এটি একটি প্রশ্নের উত্তর নয়?
কালেব

উত্তর:


21

আপনি চান dd_rescue

dd_rescue -a -b 8M /dev/sda1 /mount/external/backup/sda1.raw

1
গ্রেট! ম্যানুয়ালটিতে বলা হয়েছে "যদি অনুলিপি প্রক্রিয়া ব্যবহারকারীর দ্বারা বাধাগ্রস্ত হয় তবে পরে কোনও অবস্থাতেই চালিয়ে যাওয়া সম্ভব।" এবং "-a spArse ফাইল রাইটিং (ডিফল্ট = না)"। ঠিক আমি কী চাই! ধন্যবাদ!
মার্টিন শেচারার

3
জন্যে dd_rescueঅনলাইন আমি বুঝতে পারলাম সেখানে একটি ভিন্ন টুল বলা হয় যে ddrescue(আন্ডারস্কোর ছাড়া) যা থেকে স্বাধীনভাবে উন্নত ছিল dd_rescueকিন্তু মূলত একই কাজ বলে মনে হয়। আমি কেবল এখানে একটি সাধারণ এফওয়াইআই হিসাবে উল্লেখ করেছি।
মার্টিন Scharrer

হ্যাঁ, dd_rescueএবং ddrescueএকই জিনিস নয়। তাত্ত্বিকভাবে তারা একই কাজ করে তবে সাধারণত আমি পুরানো / মূলের সাথে আরও ভাল ভাগ্য অর্জন করেছি dd_rescue
স্টিভেন প্রিচার্ড

1
যদি কেউ ভাবছেন, আপনি অনুলিপিটি যে কোনও সময় সিটিআরএল-সি দিয়ে বন্ধ করতে পারেন। এটি আপনাকে আপনার বর্তমান অবস্থান প্রদর্শন করবে এবং আপনি সেই মানটি পুনরায় আরম্ভ -sকরতে এবং মূল কমান্ডে অবস্থানটি যোগ করে ব্যবহার করতে পারেন । (সুতরাং এটির মতো দেখতে হবে dd_rescue -a -b 8M -s 42000k /dev/sda1 /mount/external/backup/sda1.raw))
স্টিভেন প্রিচার্ড

1
@ স্টিভেন প্রিচার্ড: অবস্থানটি মনে রাখার দরকার নেই। একটি তৃতীয় ফাইলের নাম উল্লেখ করুন, যা লগফিল হবে এবং পুনরায় চালু করার সময় এটি পড়বে এবং এটি যেখানে ছেড়ে গিয়েছিল তা বেছে নেবে।
তনিথ রোজেনবাউম

20

শুধু সম্পূর্ণতা জন্য ddrescue জন্য কল । --sparseবা -Sপতাকা পারবেন গন্তব্য জনবিরল লিখিত হবে:

$ ddrescue -S -b8M /dev/sda1 /mount/external/backup/sda1.raw

বা দীর্ঘ বিকল্প সহ:

$ ddrescue --sparse --block-size 8M /dev/sda1 /mount/external/backup/sda1.raw

বা আপনি যদি এমআইবি পছন্দ করেন :

$ ddrescue -S -b8Mi /dev/sda1 /mount/external/backup/sda1.raw

উদ্ধারকাজটি বাধাগ্রস্থ হতে এবং পুনরায় শুরু করতে, আপনি একটি লগফিল ব্যবহার করতে পারেন:

$ ddrescue -S -b8Mi /dev/sda1 /mount/external/backup/sda1.raw ~/sda1.rescue.log

নোট করুন যে GNU ddrescueএবং dd_rescueবিভিন্ন প্রোগ্রাম। তবে জিএনইউ ddrescueআরও বিস্তৃত বলে মনে হচ্ছে। উদাহরণস্বরূপ এটি ইতিমধ্যে জিআরএমএল এর সাথে প্যাকেজযুক্ত


পুনরুদ্ধার করার সময় কি এই চিত্রটির কোনও বিশেষ চিকিত্সা করা দরকার, আপনি কি কোনও ড্রেসস্কু পুনরুদ্ধার করতে ব্যবহৃত কমান্ডটি সরবরাহ করতে পারেন?
ব্যবহারকারী 12439

তত্ত্ব সংরক্ষণাগার মাধ্যমে আপনি উদ্ধার ব্যবহার করছেন তাই আপনি সাধারণত শুধু DD লিখতে প্রতিস্থাপন ডিস্কে ব্যবহার করতে পারেন, অধিক নির্ভরযোগ্য হতে অনুমিত হয়: dd if=sda1.raw of=/dev/sdb1। তবে পুনরুদ্ধারের জন্য ডিড্রেসকিউ ব্যবহার করার জন্য, আপনি উদ্ধার করার জন্য যে উত্স / গন্তব্যটিকে নতুন উত্স / গন্তব্যস্থলে ব্যবহার করেছেন সেটি পরিবর্তন করুন, বিশেষত একটি নতুন লগ ফাইল দিয়ে। যদি সম্ভব হয় (প্রায়শই না হয়), আপনি অবশ্যই খারাপ উত্স ডিস্ক থেকে সরাসরি প্রতিস্থাপন ডিস্কে ডেটা অনুলিপি করতে ddrescue ব্যবহার করতে পারেন ।
zaTricky

3

জিএনইউ ডিডিতে বিচ্ছিন্ন ফাইল সমর্থন সরবরাহ করার জন্য ২০০ 2007 সালে একটি প্যাচ দেওয়া হয়েছিল, তবে এটি এটিকে কোর্টিলগুলিতে পরিণত করেনি বলে মনে হচ্ছে (কমপক্ষে ৮.৪ হিসাবে নয়)। আমি সন্দেহ করি ডিডি তখন থেকে খুব বেশি পরিবর্তন হয়েছে, প্যাচটি প্রচুর কাজ ছাড়াই বর্তমান সংস্করণের বিপরীতে প্রয়োগ হতে পারে।

আমি cpআপনার প্রশ্নের সৃজনশীল ব্যবহার দেখে সত্যিই মুগ্ধ হয়েছি এবং এটি পুনরায় শুরু করতে (এটি উত্সটিতে ~ 80M থেকে পুনরায় শুরু করার জন্য) এটির ব্যবহারের ট্র্যাকটিতে পেয়েছে:

cp --sparse=always \
  <(dd if=/dev/sda1 bs=8M skip=10) /dev/stdout \
  | dd bs=8M seek=10 of=/mount/external/backup/sda1.raw

সম্পাদনা করুন: স্ক্র্যাচ। দ্বিতীয়টি ddঅবশ্যই আউটপুট ফাইলে ভুল অবস্থানটি অনুসন্ধান করবে কারণ এটি ইনপুটটির মতো দৈর্ঘ্য নয়।


1
ভিনসলে এর উত্তর হিসাবে, সঠিক পুনরায় শুরু করার জন্য ডিডি এর অগ্রগতি লগ করা ভাল হবে। যদি আপনি এই পন্থাটি প্রথম রান এবং পুনরায় শুরু উভয়ের জন্য ব্যবহার করতে চান এবং উভয় সমান্তরাল ডিডিকে স্বতন্ত্রভাবে লগ করেন তবে আপনি বুঝতে পারবেন আউটপুটটি কতটা সন্ধান করতে হবে। আমার যদি সময় থাকে তবে আমি এটি চেষ্টা করার চেষ্টা করব।
এলি হেডি

2
প্যাচের লিঙ্কটির জন্য ধন্যবাদ। আমি নিজে থেকেই এটির মতো প্রোগ্রামিংয়ের কথা ভাবতে শুরু করি :-) স্পার্স ফাইলগুলি পপ করা যায় না যাতে আপনার কোডটি কাজ করবে না।
মার্টিন Scharrer

হ্যাঁ, আমি নিজেই এটি আবিষ্কার করেছি। ওহ ভাল, পাগল নতুন ব্যবহারগুলি খুঁজে পেয়ে মজা পেয়েছিল cp- ধন্যবাদ!
এলি হেডি

1
২০১২-এ ডিডি কমিট করুন: git.savannah.gnu.org/cgit/coreutils.git/commit/… "ডিডি : কনভ = স্পার্স অপশনের জন্য সমর্থন যোগ করুন" ("(ইওরাইট): এনইউএল ব্লকের একটি লেখাকে সন্ধানে রূপান্তর করুন) যদি অনুরোধ করা হয়। ")
osgx

1

শুধু আমার 2 সেন্ট যোগ করুন। কাঁচা ডিস্ক থেকে একটি স্পার ফাইল তৈরি করার আর একটি উপায় হ'ল qemu-img এর মতো কিছু ব্যবহার করে:

qemu-img convert -f raw /dev/sda /tmp/sda.raw

আপনি এটি একক পার্টিশনেও ব্যবহার করতে পারেন। এছাড়াও, আপনার কাছে কাঁচা ডিস্ক / পার্টিশনকে অন্য যে কোনও বিন্যাসে qemu-img সমর্থন করে (কিউসিওডাব্লু 2, ভিএইচডি [এক্স], ভিএমডিকে, ইত্যাদি) রূপান্তর করতে পারে


1

আর একটি বিকল্প হল rsync । উদাহরণ স্বরূপ:

rsync -SP --copy-devices /dev/sda1 /mount/external/backup/sda1.raw

ব্যাখ্যা:

  • -S/ --sparseলেখার ক্ষেত্রে স্পার ব্লকগুলি এড়িয়ে যেতে
  • -P/ --partial --progressঅগ্রগতি প্রদর্শন করতে এবং আংশিক স্থানান্তরিত ফাইলগুলি রাখতে
  • --copy-devices ডিভাইস বিষয়বস্তু অনুলিপি করতে

আপনি --appendএকটি বাধা অনুলিপি পুনরায় শুরু করতে যোগ করতে পারেন (বা --append-verifyনতুন এবং পুরানো উভয় ডেটা ম্যাচের উপরে চেকসামটি নিশ্চিত করতে)।

সম্পাদনা : আমি ঠিক বুঝতে পেরেছি কপি-ডিভাইস.ডিফ বিবেচনাধীন এবং এটি অনেক সিস্টেমে উপস্থিত নাও থাকতে পারে (যদিও এটি ফেডোরা , উবুন্টু , দেবিয়ান এবং অন্যান্যরা অন্তর্ভুক্ত করেছেন)


0

দ্রষ্টব্য: মন্তব্যগুলিতে বর্ণিত কারণে এটি কাজ করে না, আমি এটি এখানে রেফারেন্সের জন্য রেখে দিচ্ছি।

কিল-ইউএসআর 1 ব্যবহার করে ডিডির পরিসংখ্যানগুলি পর্যবেক্ষণ করুন:

$ cp --sparse=always <(dd if=/dev/urandom bs=8M) \
    /mount/external/backup/sda1.raw&
$ watch kill -USR1 `pidof -s /bin/dd`

এড়িয়ে যান / সন্ধান করে পুনরায় শুরু করুন:

$ i_bytes= # get from the last dd statistic
$ o_bytes=`du -b /mount/external/backup/sda1.raw | cut -f 1`   
$ cp --sparse=always <(dd if=/dev/urandom bs=8M skip=$i_bytes \
    seek=$o_bytes) /mount/external/backup/sda1.raw&
$ watch kill -USR1 `pidof -s /bin/dd`

$ I_bytes ব্যতীত এটি পুনরায় শুরু করা আরও কঠিন। মেশিন ক্রাশ হয়ে গেলে বা যাই হোক না কেন ডিডি পরিসংখ্যান কোনও ফাইলে লগইন করা সবচেয়ে সহজ।


দ্বিতীয়টি কেবল cpবিদ্যমান ফাইলটি ওভাররাইট করবে, তাই না? আমি এর skipঅন্যান্য বিকল্পগুলি জানি dd। ইস্যুটি cpঅংশটি।
মার্টিন শেচারার 21:14

হুঁ, হ্যাঁ, আপনি ঠিক বলেছেন।
ভিনসলে


0

কেন সহজভাবে নয়:

cp --sparse=always /dev/sda1 /mount/external/backup/sda1.raw
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.