একটি ফাইল সিস্টেম ঠিক যেমনভাবে অনুলিপি করা যায়?


10

আমি প্রোগ্রামিং করছি এমন একটি ডিভাইসের জন্য আমার কাছে একটি ফাইল সিস্টেম রয়েছে যা আমি এর একটি অনুলিপি তৈরি করতে চাই। আদর্শভাবে আমি এই অনুলিপিটি ফোল্ডারটি অনুলিপি করতে চাই যাতে এটি অনুলিপি করা হয়েছিল। আমি এটি ব্যবহার করার চেষ্টা করেছি cp -r cp -aএবং rsync -azvPচেষ্টা করেছি। যদিও প্রত্যেকে আলাদা আলাদা আকারের (ফোল্ডার du -s) ব্যবহার করে এবং পরিণামে আমার ডিভাইসটি মূল ফোল্ডারটি বন্ধ করে দিলেও, এটি আমার অনুলিপিটি থেকে চলে না।

  • আমি যে কমান্ডগুলি ব্যবহার করেছি সেগুলির জন্য অ্যাকাউন্টিং করা হচ্ছে না তা কী রক্ষা পাচ্ছে?
  • কোনও ফাইল সিস্টেম / ফোল্ডার অনুলিপি করার সময় কি সবকিছুকে অভিন্ন রাখা সম্ভব? যদি তা হয় তবে আমি কীভাবে এটি করতে যাব?

পিএস আমি স্ট্যাকওভারফ্লোতে অনুরূপ প্রশ্ন পোস্ট করেছি তবে দ্রুত উপলব্ধি হয়েছি যে আমি এটি ভুল এক্সচেঞ্জের জন্য জিজ্ঞাসা করেছি


সম্পাদনা করুন: এটি সহায়ক নাও হতে পারে তবে আমি অনুলিপি করা ডিরেক্টরিটি কোন পদ্ধতি ব্যবহার করি তা না করেই নিম্নলিখিত আউটপুটটির সাথে কার্নেল প্যানিকের জন্য সদা মেশিনকে প্রশ্নবিদ্ধ করে তোলে।

ভিএফএস: ফ্লপি চেষ্টা করে এনএফএসের মাধ্যমে রুট এফএস মাউন্ট করতে অক্ষম। ভিএফএস: "ডিএনএফএস" বা অজানা-ব্লক রুট ডিভাইসটি খুলতে পারে না (2,0) দয়া করে একটি সঠিক "রুট =" বুট বিকল্প যুক্ত করুন; এখানে উপলব্ধ পার্টিশনগুলি রয়েছে: 1f00
64 এমটিডব্লক0 (ড্রাইভার?) 1f02 64 এমটিডব্লক 2 (ড্রাইভার?) 1f04 2432 এমটিডব্লক 4 (ড্রাইভার?) 1f05 128 এমটিডব্লক 5 (ড্রাইভার?) 1f06 4352 এমটিডব্লক 6 (ড্রাইভার?) 1f07 204928 এমটিডব্লক 7 (ড্রাইভার?) 1f08304 mtd block8 (ড্রাইভার?) 0800
8388608 এসডিএ ড্রাইভার: এসডি কার্নেল প্যানিক - সিঙ্ক হচ্ছে না: ভিএফএস: অজানা-ব্লকে রুট fs মাউন্ট করতে অক্ষম (2,0)


5
duআউটপুটে পার্থক্য কোনও সূচক নয় যে সামগ্রীগুলি একই নয় the
ইগনাসিও ওয়াজকেজ-আব্রামস

আমার ডিভাইস অনুলিপি করা ডিরেক্টরিটি ব্যবহার করে বুট করবে না। আমি এটিকে একটি সূচক হিসাবে নিচ্ছি এবং ভাবছি ঠিক কী ঘটছে যে অনুলিপি ফাইল সিস্টেমের সাথে একই আচরণ করা হচ্ছে না
টপগানকোডার

আপনি ঠিক কী করতে চাইছেন তা আপনাকে উল্লেখ করতে হবে। rsync -aবা cp -aডিরেক্টরিগুলির সঠিক কপি করুন, তবে আপনি একটি বুটযোগ্য ডিস্ক অনুলিপি করার চেষ্টা করছেন, এটি সম্পন্ন করার জন্য আপনাকে আরও কয়েকটি জিনিস করতে হবে।
ফোর্সফেস্ক

1
কি ধরণের ডিভাইস? কোন ধরনের ফাইল সিস্টেম? স্টোরেজ মিডিয়া কি ধরণের?
মিচাস

1
আমার কাছে মনে হচ্ছে আপনি যেমনটি dd if=/some/location of=/some/other/location bs=4Mপড়েন এবং লেখেন তেমন কিছু ব্যবহার করতে চান ।

উত্তর:


12

আমি সাধারণত নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করি:

  • rsync -aHAX(ভার্বোসিটির জন্য ভি যোগ করুন) নিশ্চিত করে যে আপনি অনুলিপি করার সময় টার্গেট ফোল্ডারে কোনও লিঙ্ক কাঠামো এবং এক্স-অ্যাটর্স সংরক্ষণ করেছেন। ভুলবেন না aমানে সংরক্ষণাগার এবং ইতিমধ্যে সময়, মালিকানা এবং অনুমতি সংরক্ষণ করে।
  • সহজ tar cvf(সময় সাশ্রয় করার জন্য সংকুচিত করবেন না, কেবল তাদের ট্যারি করুন) হ'ল আমি যা ব্যবহার করি তা যদি প্রথমটি যে কারণেই আমার যা প্রয়োজন তা পূরণ না করে এবং আমার কাছে সময় নেই তবে আমি সর্বদা প্রথমটি চেষ্টা করি।

সবকিছু যা যা ঠিক তত হয়েছে তা যাচাই করতে, আপনি চাইলে diff -r <folder1> <folder2>পরে চালাতে পারেন।


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

1
আহ, পড়ুন-লেখার অ্যাক্সেস সহ এনএফএসের ক্লায়েন্টরা কখনও কখনও জিনিসগুলিকে মশালায় উপভোগ করতে পারেন!
বায়ইন্ডির

3
এটি -S ব্যতীত স্পার্স ফাইলগুলির অনুলিপি করবে না। এটি du -sপার্থক্য অংশ হতে পারে । আমি rsync -axXSAHসব কিছু অনুলিপি করতাম । -X কেবল ফাইল সিস্টেমের মধ্যে অনুলিপি করবে, এবং অন্য ফাইল সিস্টেম থেকে মাউন্ট করা ফাইলগুলি নয়।
ভিক্টর রোটম্যান

--Numeric - এইডস সম্পর্কে কি?
0x2207

@ 0x2207 এটি কেবল তখনই কার্যকর যখন কোনও ব্যবহারকারীর বিভিন্ন সিস্টেমে বিভিন্ন সংখ্যার আইডি থাকে (যেমন ব্যবহারকারী হবাইন্ডির উভয় সিস্টেমে থাকে এবং উত্স অনুসারে ইউআইডি 1000 এবং গন্তব্যস্থলে 1536 থাকে)। আমাকে কখনই সেই বিকল্পটি ব্যবহার করতে হয়নি, যেহেতু আমাকে ইউআইডি এবং জিআইডি নয়, আসল মালিককে সংরক্ষণ করা দরকার। যদি ব্যবহারকারী কোনও উত্স বা গন্তব্য উপস্থিত না থাকে তবে সংখ্যা আইডি একটি ফ্যালব্যাক হিসাবে ব্যবহৃত হয়।
বায়ইন্ডির

4

মন্তব্যে আপনার জবাবটি পড়ে মনে হচ্ছে আপনি সম্ভবত মূল ফোল্ডারটি অনুলিপি করার চেষ্টা করছেন ("আমার ডিভাইস অনুলিপি করা ডিরেক্টরিটি ব্যবহার করে বুট করবে না")। সেক্ষেত্রে আপনার বেশ কয়েকটি কাজ করা উচিত।

$ cd /
$ mkdir backups

$ tar -cvpf /backups/fullbackup.tar --directory=/ --exclude=proc --exclude=sys \
     --exclude=dev/pts --exclude=backups .

একবার আপনি নতুন সিস্টেমে রুট ফোল্ডারটি অনুলিপি করার পরে বুট শুরু হওয়ার আগে আপনাকে গ্রাব আপডেট করতে হবে।

$ grub-install --recheck /dev/sdX (Where X is the partition number)
$ update-grub

+1 আমি মনে করি যে ক্লুটি ওপি-তে ব্যর্থ বুট বার্তায় রয়েছে এবং এটি এটিকে সম্বোধন করে।
এমএসডব্লিউ

এটি এই কাজের সাথে খুব অনুরূপ কিছু দেখা যাচ্ছে। আমি আমার মেশিনে একটি ফাইল সিস্টেম (এফএস) নিয়ে কাজ করছিলাম যা আমার অনুলিপি করা দরকার। এটি আমার কাছে tar cতখন পর্যন্ত ছিল tar x। যদিও মাইক্রোসফটটি আমার মেশিনে স্থানীয় ছিল এফএস ব্যবহার করে এটি চালিত করার পরে আমার মেশিনটি বন্ধ ছিল তা নিশ্চিত করা ছিল, তবে যে ডিভাইসটি আমি বুট করছি তার কাছে রিমোট (আমি এনএফএসের মাধ্যমে ডিভাইসটি চালু
করছিলাম

grub-install: error: embedding is not possible, but this is required for cross-disk install.
ভাইটালি জাদানেভিচ

2

আপনি এফএসআরচিভার চেষ্টা করতে পারেন । এটি একই ধরণের পার্টিশেমের উত্তরসূরি, যা এখন অবিস্মরণীয়। আমি অতীতে পার্টিমেজ এবং এফএসআরচিভার উভয়ই ব্যবহার করেছি এবং তারা উভয়ই ভাল কাজ করেছে। যতদূর আমি জানি, তারা দুজনেই একটি ফাইল সিস্টেমের অনুলিপি তৈরি করে যা যতটা সম্ভব মূলের সাথে অভিন্নের কাছাকাছি। আমি মনে করি এফএসআরচিভার পার্টিম্যাজ করার চেয়ে কিছুটা বেশি শক্তিশালী। উদাহরণস্বরূপ, এটি ext4 এর সাথে কাজ করে, যখন পার্টিমেজ করে না। দেখুন FSArchiver / partimage তুলনা টেবিল


2

duফোল্ডারগুলির তুলনা করতে ব্যবহার করা স্বভাবতই সমস্যাজনক। আপনি যদি সত্যই 2 টি ডিরেক্টরি তাদের মাপের ভিত্তিতে নির্ভুলভাবে তুলনা করতে চান তবে duএই জাতীয় ব্যবহার করুন :

$ du -sh --apparent-size <dir>

এই স্যুইচটি ডিরেক্টরিগুলির একিউচুয়াল আকারের প্রতিবেদন করবে drive ভৌত ড্রাইভ মিডিয়ামে সঞ্চয় করার সময় যে পরিমাণ ডিস্ক জায়গার এটি গ্রহণ করে। ডিস্কগুলি ব্লকগুলিতে সংগঠিত করা হয় এবং ফাইলগুলি এই ব্লকগুলিতে লেখা হয়। যদি কোনও ফাইলের কেবল ব্লক +1 স্থানের প্রয়োজন হয় তবে এটি 2 টি ব্লক মূল্যের স্থান গ্রহণ করবে এবং এটি duসাধারণত রিপোর্ট করে। মনে রাখবেন টুলটির নাম ডিস্ক ব্যবহার!

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

$ dd if=/dev/sda1 of=/srv/boot.img

তারপরে আপনি boot.imgযেখানেই চান পার্টিশনটি পুনরুদ্ধার করতে এটি ব্যবহার করতে পারেন।

$ dd if=/srv/boot.img of=/dev/sdb1

ডু ডিস্কের আকারেরও প্রতিবেদন করবে (সুতরাং স্পার্স ফাইল এবং হার্ড লিঙ্কগুলি কম জায়গা নেয়)। উদাহরণস্বরূপ, du -sh /var21G দেয় কিন্তু du -sh --apparent-size /varআমার সিস্টেমে 209G দেয়।
ভিক্টর রোটম্যান

0

এটি "অভিন্ন" বলতে কী বোঝায় তার উপর এটি কিছুটা নির্ভর করে।

  • শুধু করছেন rsyncজরিমানা অধিকাংশ সময় হবে। কখনও কখনও আপনি tarকোনও ফাইলের মধ্যে সমস্ত কিছু প্যাক করতে এবং অন্য জায়গায় এটিকে বের করতে চান want
  • আপনি যদি সম্পূর্ণ ফাইল সিস্টেমের ক্লোন চান তবে আপনি ddনিজেই পুরো ফাইল সিস্টেমটি অনুলিপি করতে পারেন ।

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

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