cp --reflink=auto
ডিফল্ট আচরণ হয় না কেন ? এটি সক্ষম করতে কোনও ক্ষতি করতে পারে?
এটি কি সংকলনের সময়ে সক্ষম করা সম্ভব, তাই এটি কেবলমাত্র ইন্টারেক্টিভ শেলগুলিতে নয়, সমস্ত সিস্টেম জুড়ে ব্যবহৃত হয়?
cp --reflink=auto
ডিফল্ট আচরণ হয় না কেন ? এটি সক্ষম করতে কোনও ক্ষতি করতে পারে?
এটি কি সংকলনের সময়ে সক্ষম করা সম্ভব, তাই এটি কেবলমাত্র ইন্টারেক্টিভ শেলগুলিতে নয়, সমস্ত সিস্টেম জুড়ে ব্যবহৃত হয়?
উত্তর:
ডেটা দুর্নীতির বিরুদ্ধে রক্ষা করার জন্য দৃ rob়তার কারণে কেউ একটি অনুলিপি গ্রহণ করতে পারে বলে এটি ডিফল্ট নয়। এছাড়াও পারফরম্যান্সের কারণে আপনি চাইলে লেখাগুলি কোনও ডাব্লু ফাইলটিতে কাজ করা এবং কোনও যান্ত্রিক ডিস্কের আলাদা অংশে লেখকদের দ্বারা বিলম্বিত হওয়ার পরিবর্তে কপির সময়ে সংঘটিত সংবেদনশীল প্রক্রিয়াটির পরিবর্তে ঘটতে চান। নোট করুন যে কোরিউটিলস থেকে v8.24 এমভি ডিফল্ট অনুসারে রিফ্লিংক হবে, কারণ এতে উপরের সীমাবদ্ধতা নেই।
কেন এটি ডিফল্ট নয়, হয়তো যাতে এটি অন্যান্য অনুলিপি ইউটিলিটি (হিসাবে একই আচরণ করবে কি জান না rsync
, cpio
, pax
, tar
...) যা কোন সমর্থন আছে তাদের জন্য এটা (অথবা ফাইল একটি ইন্টারফেস জুড়ে অনুলিপি করা যে অনুমতি দেয় না যে (যেমন এনএফএস, সাম্বা, ফিউজ ফাইল সিস্টেম স্তরগুলি ...)।
কয়েক বছর আগেও আমি একই পরিস্থিতিতে ছিলাম এবং GNU সিপি কোডটি দ্রুত দেখছিলাম, এখনও একইরকম, আলাদা ডিফল্ট আচরণ পেতে আপনাকে কোডটি প্যাচ করতে হবে:
--- coreutils-8.21/src/cp.c~ 2013-06-22 21:50:26.265639114 +0100
+++ coreutils-8.21/src/cp.c 2013-06-22 21:51:06.880513924 +0100
@@ -775,7 +775,7 @@ cp_option_init (struct cp_options *x)
x->interactive = I_UNSPECIFIED;
x->move_mode = false;
x->one_file_system = false;
- x->reflink_mode = REFLINK_NEVER;
+ x->reflink_mode = REFLINK_AUTO;
x->preserve_ownership = false;
x->preserve_links = false;
একটি বড় সমস্যা হ'ল আপনি যখন লিখবেন তখন অনুলিপিটি করার জন্য স্থান ছাড়িয়ে যাওয়ার সম্ভাবনা।
একটি সাধারণ অনুলিপিতে, তারপরে অনুলিপিটি শেষ হওয়ার সাথে সাথে আপনাকে ফাইলের বিদ্যমান অংশগুলিতে একটি ব্যর্থতা ব্যর্থ হওয়ার বিষয়ে কখনই চিন্তা করতে হবে না: স্থানটি পুরোপুরি বরাদ্দ হয়ে গেছে এবং আপনি ফাইলটি মোছা না হওয়া পর্যন্ত চলে যাবেন না। তবে একটি রিফ্লিংক অনুলিপি সহ সর্বদা একটি ঝুঁকি থাকে যে সপ্তাহের কয়েক মাস বা কয়েক মাস রাস্তায় ফাইলের একটি বিদ্যমান অংশে লেখা ব্যর্থ হয়ে যায় কারণ অনুলিপি করার মতো পর্যাপ্ত জায়গা ছিল না।
আপনার সিস্টেমে আপনার পিঠের পিছনে রিফ্লিংক অনুলিপিগুলি করছিল তা আবিষ্কার করে যখন এর মতো কোনও ক্রিয়াকলাপ ব্যর্থ হয় তবে খুব খারাপ অভ্যাস হবে।
alias cp='cp --reflink=auto --sparse=always'
কোড প্যাচিংয়ের চেয়ে ভাল ধারণা তৈরি করে
/bin/cp
এটির নতুন নামকরণ এবং এটি একই শেল স্ক্রিপ্টের সাথে প্রতিস্থাপন করতে পারে
দৃust়তার কারণে ডেটা "ক্ষতি" রোধের জন্য কেউ অনুলিপি গ্রহণ করতে পারে।
আমরা জানি না যে কারণ, তবে ঘটে যাওয়া খারাপ জিনিসগুলি কেবল মিডিয়া ধ্বংসের মধ্যে সীমাবদ্ধ। ফরোয়ার্ড ত্রুটি সংশোধন (সমতা) না হলে বেশিরভাগ সমস্ত ব্লক ডিভাইসগুলির কিছু ফর্ম দুর্নীতি শনাক্তকরণ (সিআরসি) থাকবে।
পারফরম্যান্সের কারণে নয়।
গুঁড়ি ঘটে যখন শুধুমাত্র একটি অংশ মুছে? ব্লক লিখিত হয়। আধুনিক! ডিস্ক সহ! ডিভাইসটি হার্ডওয়্যার ব্লকের আকার 4k এর একাধিক। 4 কে অংশ পরিবর্তন করার ফলে ড্রাইভটি পুরো 4 কে পড়তে এবং আবার এটিকে লিখতে বাধ্য করে, তবে তারপরে কার্নেল একই কাজ করবে তাই ব্লক ডিভাইস, এসএসডি বা অন্যথায় পৌঁছানোর কোনও আংশিক রাইটিং থাকবে না otherwise । কার্নেলকে একই কারণে CoW সঞ্চালন করা দরকার, যদি না আমাদের ক্যাশেড অনুলিপি না থাকে তবে আমরা ডিভাইসের অন্যান্য অংশে উপস্থিত ডেটা তৈরি করতে পারি না, কোনও ফাইলের গল্পের শেষের জন্য সংরক্ষণ করতে পারি তবে বিন্দুটি হ'ল তর্ক করা। তবে কোনও ফাইলের একটি অনুলিপি ক্যাচ করা এবং একটি ফাইল অনুলিপি করা বিভিন্ন ক্রিয়াকলাপ ভিন্ন, পূর্ববর্তীটি অনেক কম দামের।
লেখার ঠিকানাটি অবিচ্ছিন্ন, তবে এটি নিশ্চিত করে তুলুন যে "ফাইলের ব্লকগুলি বর্তমানে কোথায় রয়েছে" তার চেয়ে "ডিভাইসের কিছু অব্যবহৃত অংশ" আবিষ্কার করা সস্তা।
সত্য যে কোনও CoW পদ্ধতি হ'ল একটি ব্লক ডিভাইস আপডেট করার তুলনায় সস্তা বা সমান। এখন আমরা যদি ব্লক ডিভাইসগুলির সাথে কথা বলছিলাম না, তবে এটি অন্য গল্প হবে ... কোথাও টেপে লিখিত।