উত্তর:
আর একটি বিষয় আমার মনে আসে যেখানে cat
বনাম cp
একটি উল্লেখযোগ্য পার্থক্য করে:
সংজ্ঞা অনুসারে, বিড়াল বিচ্ছিন্ন ফাইলগুলি প্রসারিত করবে, "রিয়েল" শূন্য বাইট দিয়ে শূন্যস্থান পূরণ করবে, এবং কমপক্ষে সিপিকে গর্তগুলি সংরক্ষণ করার জন্য বলা যেতে পারে।
স্পার্স ফাইলগুলি এমন ফাইলগুলি যেখানে শূন্য বাইটের ক্রম স্থান সংরক্ষণের জন্য মেটাডেটা দ্বারা প্রতিস্থাপন করা হয়েছিল। আপনি ডিডি দিয়ে একটি তৈরি করে পরীক্ষা করতে পারেন এবং এটি আপনার পছন্দসই সরঞ্জামগুলির সাথে সদৃশ করতে পারেন।
একটি বিরল ফাইল তৈরি করুন (ঝামেলা এড়ানোর জন্য আগে / tmp এ পরিবর্তন করা - চূড়ান্ত নোট দেখুন):
15> cd /tmp
16> dd if=/dev/null of=sparsetest bs=512b seek=5
0+0 records in
0+0 records out
0 bytes (0 B) copied, 5.9256e-05 s, 0.0 kB/s
আকার এটি - এটি কোনও স্থান গ্রহণ করা উচিত নয়।
17> du -sh sparsetest
0 sparsetest
এটি সিপি এবং চেক আকারের সাথে অনুলিপি করুন
18> cp sparsetest sparsecp
19> du -sh sparsecp
0 sparsecp
এখন এটি বিড়াল এবং চেক আকারের সাথে অনুলিপি করুন
20> cat sparsetest > sparsecat
21> du -sh sparsecat
1.3M sparsecat
আপনার পছন্দসই সরঞ্জামগুলি তাদের আচরণের উপর নজর রাখতে চেষ্টা করুন
পরিষ্কার করতে ভুলবেন না
সাবধানতার চূড়ান্ত দ্রষ্টব্য: আপনি যদি তার ব্যাকআপ পরিকল্পনার অংশ, বা সিস্টেমের সুস্থতার জন্য সমালোচনা করে থাকেন তবে এই জাতীয় পরীক্ষাগুলি আপনার স্থানীয় সিসাদমিনের সাথে আপনার খ্যাতি বাড়ানোর সহজাত সম্ভাবনা রয়েছে। ব্যাকআপের জন্য তার পছন্দ অনুসারে সরঞ্জামটির উপর নির্ভর করে, তাকে সম্ভবত 0-বাইট ফাইলটি ব্যাকআপ করা সম্ভব বলে মনে করা হয়েছে তার চেয়ে বেশি টেপ মিডিয়া প্রয়োজন, যা জেরো টেরাবাইটে প্রসারিত হয়।
অন্যান্য ফাইলগুলি যা বিড়াল বা সিপির সাথে অনুলিপি করা যায় না সেগুলির মধ্যে ডিভাইস-বিশেষ ফাইল ইত্যাদি অন্তর্ভুক্ত থাকে It এটি আপনার অনুলিপি সরঞ্জাম প্রয়োগের উপর নির্ভর করে যদি এটি ডিভাইস নোডকে সদৃশ করতে সক্ষম হয়, বা যদি এটি পরিবর্তে এর সামগ্রীগুলি অনুলিপি করে তোলে।
cp
বিচ্ছিন্ন ফাইলগুলিতে এর আচরণ নিয়ন্ত্রণের জন্য একটি বিকল্প রয়েছে; মত, সঙ্গে --sparse=never
, কমান্ড লাইনে উল্লিখিত, cp
যত ধীর cat
।
মতে কিথ এর মন্তব্য , cp
কিছু অনুমতি অপরিবর্তিত, এবং cat
নতুন ফাইল তৈরি করে umask
নির্দেশ করে। সুতরাং $2
এর অনুমতি সংরক্ষিত হয় যে $4/vmlinuz
চমত্কার পরিষ্কার, যখন যদি কিছু অদ্ভুত অনুমতি সেট করা হয় $3
, $4/System.map
যে রাখা হবে।
cat
এর তাত্পর্যতা কারণ হিসাবে চিহ্নিত করা হয়?
cat
দ্রুত?
এই দুটি ক্ষেত্রে উভয়ের সমতুল্য কার্যকারিতা রয়েছে তবে সিপি খাঁটি ফাইল অপারেশন। "এই ফাইলটি নিয়ে সেখানে একটি অনুলিপি তৈরি করুন" make
বিড়াল, অন্যদিকে, কনসোলে কোনও ফাইলের বিষয়বস্তু ফেলে দেওয়ার উদ্দেশ্যে। "এই ফাইলটি নিন এবং এটি স্ক্রিনে প্রদর্শন করুন" এবং তারপরে নিনজা স্ক্রিনটিতে আক্রমণ করে এবং অন্য কোথাও আউটপুট পুনর্নির্দেশ করবে।
সিপি সাধারণত আরও দক্ষ হবে, যেহেতু কেবল কোনও পুনর্নির্দেশই যাচ্ছে না, কেবল স্থান অবস্থান বি থেকে বাইটের সরাসরি কপি করা B.
বিড়াল হবে read bytes -> output to console -> intercept output -> redirect to new file
।
cat
আসলেই হবে না output to console -> intercept output -> redirect to new file
, বিড়ালের জন্য আউটপুট ফাইল স্টাডআউট বা একটি সাধারণ ফাইল হতে পারে, এটি কেবলমাত্র আউটপুট হিসাবে আউটপুট হিসাবে দীর্ঘ হিসাবে ইনপুট হিসাবে একই হবে না।
cat
কনসোলের সাথে কোনও সম্পর্ক নেই। উভয়ই cat
এবং cp
ইনপুট ফাইল থেকে পড়ুন এবং আউটপুট ফাইলে লিখুন। এর সাথে cat
আউটপুট ফাইলটি শেল দ্বারা খোলা হয় এবং এর সাথে সাথে cp
আউটপুট ফাইলটি খোলা হয় cp
; এটি পারফরম্যান্সে কোনও পার্থক্য করে না। cp
দ্রুত হতে পারে তবে সম্পূর্ণ ভিন্ন কারণে: cp
উত্স এবং টার্গেট ডিভাইসের উপর নির্ভর করে পারফরম্যান্সের জন্য কিছু কিছু বাস্তবায়ন সঠিক অংশের আকার অনুমান করার চেষ্টা করে; একটি বাস্তবায়ন cat
বিরক্ত হবে না।
আইএমএইচও, এটি সত্যিই পছন্দের বিষয়।
প্রযুক্তিগতভাবে কোনও আসল পার্থক্য নেই যদি না আপনি ফাইলের মালিকানা / গোষ্ঠী সংরক্ষণের জন্য -p সুইচ সহ সিপি কমান্ডটি ব্যবহার করেন। অন্যথায়, এটি কার্যকরভাবে একই জিনিস। মার্কের উত্তর আরও স্পষ্টভাবে ভার্জোজ যদিও সঠিক এবং সঠিক।
cp
ছাড়া কিছু অনুমতি -p
সংরক্ষণ করে না । উদাহরণস্বরূপ, যদি উত্স ফাইলটি এক্সিকিউটেবল হয়, লক্ষ্য ফাইলটি কার্যকর করতে সক্ষম করে, তবে তা করবে না। cp
cat
cp
মূল ফাইলের মতো একটি ফাইলcat
তৈরি করে , যখন একই বিষয়বস্তু সহ একটি নতুন ফাইল তৈরি করে।