কীভাবে সম্পূর্ণ লিনাক্স রুট ফাইল সিস্টেমকে নতুন হার্ড ড্রাইভে এসএসএস ও টারের সাহায্যে অনুলিপি করবেন


18

আমার একটি সম্পূর্ণ লিনাক্স রুট ফাইল সিস্টেমটি একটি ব্যর্থ হার্ড ড্রাইভ বন্ধ করে অন্য কম্পিউটারে একটি উন্মুক্ত, উপলব্ধ পার্টিশন সহ স্থানান্তর করতে হবে। আমি পুরোপুরি নিশ্চিত হয়েছি যে এতে জড়িত রয়েছে tarএবং sshতবে এটি কীভাবে করা যায় আমি ঠিক বুঝতে পারি না।

আমি সম্ভবত নতুন / টার্গেটের হোস্টের লাইভ সিডি ব্যবহার করে কিছু চালানোর জন্য এটি চিত্র করছি :

ssh user@failingharddrivehost "some tar command | piped into something else"


অন্য প্রসঙ্গ. প্রোগ্রামিং প্রশ্ন নয়। তবে চেষ্টা করুনssh user@failingsys "tar cfz - /" > oldsys.tar.gz

আপনি খেয়াল রাখতে চান যে আপনি / ডি / ডি / (যেমন / দেব / এলোমেলো, / দেব / এসডিএক্স, ...) না পড়ে। ডিট / প্রোক /
হেনেস

উত্তর:


19

Rsync ব্যবহার করুন। নতুন হোস্ট থেকে, আপনি ব্যবহার করতে পারেন

rsync -avP --numeric-ids --exclude='/dev' --exclude='/proc' --exclude='/sys' root@failedharddrivehost:/ /path/to/destination/

আমি টারের মতো কিছু যুক্ত করার চেষ্টা করব না কারণ ভাঙা ফাইল থাকলে সম্ভবত এটি কাজ করে না।


উপরে আরটিজেনক্লো এবং @ হেনেস দ্বারা বর্ণিত হিসাবে, আরএসসিএনসি ব্যবহার করে শেষ হয়েছিল। মাইগ্রেশন ভাল গেছে। কেবল গ্রাব ঠিক করা দরকার, তবে এটি খুব খারাপ হওয়া উচিত নয়।
সিএইচকে

8
আমি এসএসিএস, এক্সএটার্স এবং হার্ডলিঙ্কগুলি সংরক্ষণের জন্য আরএসসিএনকে ফ্ল্যাট হিসাবে -এএএএচএক্স যুক্ত করতাম যার ফলে মূল এফএসের আরও সঠিক অনুলিপি তৈরি হত।
আলেকজান্ডার রেমেছ

5
আমি রুট ফাইল সিস্টেমে আইটেমগুলি উপেক্ষা করার জন্য -x যুক্ত করব, তবে আপনি বিভিন্ন পাথের জন্য - আর্গুমেন্টগুলি এড়িয়ে যেতে পারেন।
অ্যালেক্স

4

যদি উভয় কম্পিউটার একই (নিরাপদ) ল্যানে থাকে তবে আমি ব্যবহার করে একটি ভিন্ন পদ্ধতির প্রস্তাব দিই netcat। এটি সাধারণত ডেটা এনক্রিপ্ট না করায় এটি আরও দ্রুত হয়।

root@good_host$ cd good_partition; netcat -l -p 1234 | tar xvpmf -
root@bad_host$ tar -cv -f- --exclude=/proc --exclude=/sys / | netcat good_host.ip 1234

যা ভাল মেশিনে একটি শ্রবণ পোর্ট 1234 খুলবে netcat -l -p 1234এবং আগত ডেটাগুলি tarনিষ্কাশন করতে পাইপ দেয় (এমটাইম এবং অনুমতি সংরক্ষণ করে)। খারাপ হোস্ট এই বন্দরে ডেটা প্রেরণ করে, এছাড়াও ব্যবহার করে tarএবং netcat। আমি কিছু --excludeপ্যারামিটারগুলি অন্তর্ভুক্ত করেছি /procএবং /sysভার্চুয়াল ফাইল সিস্টেম হিসাবে এবং তাই নতুন হোস্টে অকেজো। (বিশেষত আপনার র‌্যামের প্রতিনিধিত্বকারী ফাইলটি /proc/kcore) একটি অপ্রয়োজনীয় পরিমাণে ডেটা যুক্ত করবে)।

যাইহোক, আপনার (এছাড়াও) ddব্যর্থ ড্রাইভের পার্টিশনগুলির ডাম্প তৈরি করার বিষয়টি বিবেচনা করা উচিত :

user@good_host$ cd good_partition; netcat -l -p 1234 > dump_of_bad_partition_1.dd
root@bad_host$ dd if=/dev/sda1 | netcat good_host.ip 1234

যেখানে আপনাকে /dev/sda1সঠিক ডিভাইসে গ্রহণ করতে হয়েছিল। ব্যর্থ ড্রাইভের অন্যান্য পার্টিশনগুলির সাথে এটিও করুন।

সেই ডাম্পের সাথে আপনি নিশ্চিত, আপনি কোনও গুরুত্বপূর্ণ মেটাডেটা (এসিএলগুলির মতো) মিস করেন নি যা tarক্যাপচার করবে না।


3

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

/ দেব / এসডিএ 1 হিসাবে / তারপরে করুন: এমকেডির / ক্লিয়ারট মাউন্ট / ডেভ / এসডিএ 1 / ক্লিয়ারট

এর পরে আপনার কাছে: / dev / sda1 হিসাবে / / dev / sda1 হিসাবে / CLEANROOT রয়েছে

এটি দুটি ফাইলের সাথে একই ফাইল সিস্টেমের দৃশ্যমান, তবে / CLEANROOT অ্যাডিটিভ মাউন্টগুলি পায় নি। তারপরে আপনি অনুলিপি বা ব্যতীত অনুলিপি ব্যতীত কোনও ব্যয় ছাড়াই টর বা RSSync / CLEANROOT করতে পারেন।

আপনার কিছু পেয়ে গেলে অবশ্যই আপনাকে অন্য ডেটা পার্টিশনগুলি অনুলিপি করতে হবে।

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


1

আপনার কি ব্যর্থ হোস্টে শারীরিক অ্যাক্সেস রয়েছে?

যদি তা করেন তবে লাইভ সিডি থেকে বুট করুন। তারপরে ব্যবহার করুন:

  • ডাম্প (তার অনুমতি সহ পুরো ফাইল সিস্টেমগুলি ডাম্প / পুনরুদ্ধার করে)।
  • টার সাথে / দেব বাদে। আপনি std_out করার outputting এবং বংশীধ্বনিতুল্য যে যদিও netcat সঙ্গে এই একত্রিত করতে পারেন
    হয় বাদ শব্দবিন্যাস: tar --exclude='/dev'
  • বা একই বাদে আরএসআইএনসি। যেমন
    rsync -zvr --exclude /dev/ / destination_computer_name_or_ip
  • বা এইভাবে ডিডি ব্যবহার করুন :
    nc -l 4242 | gunzip | cat > my_full_disk_backup_of_PC_named_foo
    dd if=/dev/sda of=- bs=1M | gzip | nc -p 4242 name_of_the_destination

আপনি যদি কোনও লাইভ সিডি থেকে বুট করতে না পারেন তবে উপরের সমাধানগুলির বেশিরভাগ সমাধান একই থাকবে তবে:

  1. কিছু ফাইল ব্যবহৃত / লক হতে পারে।
  2. কেবল / দেব / নয় / / প্রোকে / বাদ দেওয়ার বিষয়টি নিশ্চিত করুন।
    যেমনtar --exclude='/dev' --exclude='/proc'

হ্যাঁ আমার উভয় হোস্টে শারীরিক (এবং মূল) অ্যাক্সেস রয়েছে। আরএসআইএনসি দিয়ে চেষ্টা করতে যাচ্ছি। নেটক্যাট অজানা কারণে ব্যর্থ বাক্সের জন্য ক্র্যাশ করেছে। লক্ষ্য ফাইল সিস্টেম মাউন্ট করা চাই না। এটি এতে ব্যর্থ হয়: #mount /dev/sda1 /mnt/fedora mount: unknown filesystem type 'LVM2_member'
সিএইচকে

1

এখানে কিভাবে ব্যবহার করে ফাইলগুলি কপি করা একটি বিবরণ tarএবং sshমূলত, আপনি স্থানীয় -> দূরবর্তী বা দূরবর্তী -> স্থানীয় অনুলিপি করতে চান কিনা তার উপর নির্ভর করে আপনি নিম্নলিখিতগুলির মধ্যে একটি চালনা করবেন:

tar cf - files... | ssh remotehost -c 'cd /destination && tar xvf -'

ssh remotehost -c 'cd /destination && tar cf - files' | tar xvf -

0

আপনার rsync ব্যবহার বিবেচনা করা উচিত

follwoing কমান্ড 2 টি জিনিস ধরে নিয়েছে:

  1. আপনি ব্যর্থ হার্ড ড্রাইভ সহ সিস্টেমে আছেন
  2. নতুন পার্টিশনে ssh সক্ষম সহ একটি ন্যূনতম লিনাক্স ইনস্টলেশন রয়েছে।

rsync / new_partition:/wherever/you/want/

দ্রষ্টব্য: অনুগামী / গুরুত্বপূর্ণ, অন্যথায় আপনার ফাইলগুলি উপরে একটি ডিরেক্টরি স্তরে শেষ হবে


ওপি সম্ভবত -aপ্যারামিটারটি (এবং সম্ভবত এটি -A) ব্যবহার করতে চায় , কারণ এটি সময়, মালিকানা, সিমলিংকগুলি (এবং সম্ভবত এসিএল) ইত্যাদি সংরক্ষণ করে এবং -e sshপ্যারামিটার হিসাবে ডেটা অন্য কম্পিউটারে স্থানান্তর করা উচিত। সুতরাংrsync -aAv -e ssh root@failingharddrivehost:/ /good_computer/newpartition_mountpoint
এমপি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.