ব্যবহারের সময় কোনও ফাইল সরানো - এটি কীভাবে কাজ করে?


31

আমি লক্ষ্য করেছি যে নন-উইন্ডোজ ওএসে .... যেমন লিনাক্স / ম্যাক আমি এই জাতীয় জিনিসগুলি করতে পারি: - লক্ষ্য করে বন্ধুর কাছে একটি জিপ প্রেরণ করুন - ফাইলটি স্থানান্তরিত হওয়ার পরে মুছুন

এবং স্থানান্তর ব্যর্থ হয় না।

বা, আমি যেমন অপারেশনগুলি করতে পারি .. - একটি সিনেমা শুরু করুন - ফাইলটি মুছুন - মুভিটি এখনও সম্পূর্ণরূপে বাজায় (ডিস্ক থেকে পড়ুন, কেবল স্মৃতিতে বাফার হয়নি)

যদিও ফাইলগুলি "মুছে ফেলা হচ্ছে", যেমনটি আমি উল্লেখ করেছি, সেগুলি আসলে ফাইল সিস্টেমে অন্য কোনও জায়গায় স্থানান্তরিত করা হচ্ছে ... যেমন ট্র্যাশ ডিরেক্টরি বা অন্য কোনও জিনিস। সুতরাং এটি আমার কাছে মনে হয় যেমন ওএসগুলি একটি পয়েন্টার @ ফাইলটি ব্যবহার করে যা আপডেট হয় যখন এটি সরাসরি ফাইল অ্যাক্সেস না করে পরিবর্তিত হয়।

এই আশ্চর্যের সামর্থ্যটি আসলে কীভাবে বাস্তবায়িত হয় সে সম্পর্কে কেউ কি কিছু আলোকপাত করতে পারেন? এটি সম্পর্কে আরও জানতে কী গুগল করবেন তা আমি নিশ্চিত নই।

ধন্যবাদ.


1
তত্ত্বগতভাবে আমি মনে করি এটি ঘটতে পারে এমন 2 টি উপায় রয়েছে। দুটিই বাস্তবতা reality ফাইলটির স্মৃতি রয়েছে। অথবা ফাইল সিস্টেমে ফাইলগুলির রেফারেন্স রয়েছে এবং কেবলমাত্র রেফারেন্স মুছবে। দুটিই বাস্তবতা reality তথ্যসূত্রগুলি হ'ল কীভাবে মুছে ফেলা প্রোগ্রামগুলি জিনিসগুলি মুছে ফেলতে পারে। সমস্ত প্রোগ্রাম যখন এটি বন্ধ করে দিচ্ছে তখন ফাইলটি আসলে মুছে ফেলা হয় এই ধারণাটি বাজে কথা বলে মনে হয়। আপনি লিঙ্কযুক্ত তালিকাগুলি (একটি প্রোগ্রামিং ডেটা কাঠামো, ধারণাটি আরও গভীরতার সাথে বোঝার জন্য) সন্ধান করতে পারেন। অথবা আপনি নির্দিষ্ট ফাইল সিস্টেমগুলি সন্ধান করতে পারেন।
বারলপ

উত্তর:


29

ডিরেক্টরি এন্ট্রি একটি ইনোডের পয়েন্টার মাত্র। ইনোডটিতে ফাইল (নাম বাদে) সম্পর্কিত মেটা তথ্য রয়েছে এবং ফাইলটির ডেটা (যদি থাকে তবে) নির্দেশক রয়েছে। আপনি যখন কোনও ফাইল অনুলিপি করতে শুরু করেন আপনি ইনোডটিতে একটি হ্যান্ডেল পাবেন।

অপারেটিং সিস্টেমটি ইনোডের জন্য উল্লেখের একটি সংখ্যা বজায় রাখে। যতক্ষণ না ইনোডের উল্লেখ রয়েছে ততক্ষণ ইনোড এবং ফাইলের ডেটা রাখা হবে। একবার ইনোডের সমস্ত উল্লেখ মুছে ফেলা গেলে, ইনোডটি হয় এবং ফাইলটির জন্য প্রয়োজনীয় স্থানটি প্রকাশ করা হয়।

আপনার অনুলিপি করার জন্য ফাইলটি উন্মুক্ত রয়েছে যতক্ষণ না আপনার প্রক্রিয়াটি ফাইলটি বন্ধ করে দেয় be ফাইল স্থানান্তর সমাপ্ত হওয়ার পরে এটি হওয়া উচিত এবং অনুলিপি প্রক্রিয়া ব্যর্থ হলে তা ঘটবে। যদি ফাইল ট্রান্সফার কিছুটা অংশ ব্যর্থ হয়ে যায় এবং আপনি ফাইলটির সমস্ত হার্ড লিঙ্ক মুছে ফেলে থাকেন তবে আপনি সফলভাবে স্থানান্তরটি পুনরায় আরম্ভ করতে অক্ষম হবেন।

সম্পাদনা: অন্যরা যেমন উল্লেখ করেছে যে একই ডিভাইসে ফাইল স্থানান্তরিত হয় ডেটা না সরানো are পরিবর্তে গন্তব্য ডিরেক্টরিতে একটি নতুন ডিরেক্টরি এন্ট্রি তৈরি করা হবে, এবং মূল ডিরেক্টরি এন্ট্রি সরানো হবে।

একই ফাইলের জন্য একাধিক ডিরেক্টরি এন্ট্রি থাকা সম্ভব। এগুলিকে হার্ড লিঙ্ক বলা হয়। আসল এন্ট্রি অপসারণ না করে এগুলি ফাইলের জন্য একটি নতুন ডিরেক্টরি এন্ট্রি করে তৈরি করা হয়। ফাইল সিস্টেমের ইনোডটিতে ফাইলটি নির্দেশ করে ডিরেক্টরিতে প্রবেশের সংখ্যা রেকর্ড করার জন্য একটি রেফারেন্স গণনা রয়েছে।

সম্পাদনা 2: প্রক্রিয়াটি ক্র্যাশ হয়ে গেলে বা মারা গেলে ফাইলটি পরিষ্কারভাবে মুছে ফেলা হবে কারণ মেমরির অ্যাক্সেসের গণনাটি শূন্যে কমে যাবে। প্রোগ্রামটি সাধারণত শেষ হয়ে গেলে এটি হয়।

বিদ্যুৎ ব্যর্থতা বা অন্যান্য অপরিকল্পিতভাবে সিস্টেম শাটডাউনয়ের ক্ষেত্রে, ডিস্কটি fsckসম্পূর্ণরূপে মাউন্ট হওয়ার আগে একটি (ফাইল সিস্টেম চেক) প্রয়োজন । অন ​​ডিস্কের ইনোড এবং ডিরেক্টরি কাঠামোর অবস্থার উপর নির্ভর করে স্থানটি পুনরুদ্ধার করা হবে, ফাইলটি ডিরেক্টরিতে থাকবে, বা ডিরেক্টরিতে একটি নতুন এন্ট্রি করা হবে lost+found। ফলাফলগুলি ডিস্কে ফ্ল্যাশ করা হয়েছে বা ফাইল সিস্টেম জার্নালে লিখিত হয়েছে তার উপর নির্ভর করবে।


5
যথাযথভাবে। আমি নিজের চেয়ে ভাল আর রাখতে পারিনি। ঘটনাচক্রে, একটি সাধারণ কৌশল, আপনার যদি কোনও প্রোগ্রামের মধ্যে কিছু স্ক্র্যাচ ফাইল স্টোরেজ প্রয়োজন হয় তবে তা একটি ফাইল তৈরি /tmpকরতে unlink(2)হবে এবং তা অবিলম্বে । এই মুহুর্তে, ডিরেক্টরিতে কোনও ফাইল নেই (প্রস্থান বা ক্রাশের সময় পরিষ্কার করার মতো কিছুই নেই) তবে আপনার প্রক্রিয়াটিতে এখনও ফাইলে অ্যাক্সেস রয়েছে এবং অন্য কোনও প্রক্রিয়াটি দুর্ঘটনাক্রমে বা ইচ্ছাকৃতভাবে এটির সাথে গোলযোগ করতে পারে না। এটি সুদের সম্পত্তি চিত্রিত করে।
নরম্যান গ্রে

এর অর্থ কি এই যে কোনও প্রোগ্রাম ব্যবহার করার সময় যদি কোনও ওপেন ফাইল সরানো হয় এবং বিদ্যুতের ব্যর্থতা দেখা দেয়, তবে আটকে থাকা ডেটা স্থান দখল করে ড্রাইভে থাকবে? যদি ফাইলটি ব্যবহার করে প্রক্রিয়াটি ক্র্যাশ হয় বা মারা যায় তবে কী হবে?
জেসন সি

1
@ জেসনসি আপনার প্রশ্নের উত্তর দেওয়ার জন্য আমি প্রতিক্রিয়া আপডেট করেছি।
বিলথোর

6

ম্যাট জেনকিন্সের ব্যাখ্যা অনুসারে, ওএস (ফাইল সিস্টেম) অ্যাপ্লিকেশন দ্বারা খোলা রাখা ফাইলগুলিকে ট্র্যাক করে। যতক্ষণ কোনও প্রক্রিয়া কোনও ফাইল খোলা রাখে ততক্ষণ তার ডেটা ডিস্কে থেকে যায় (যদিও এটি মুছে ফেলা হয়েছে এবং এটি আর দৃশ্যমান বা অন্যান্য প্রোগ্রামে অ্যাক্সেসযোগ্য নয়)।

নোট করুন যে এর একটি পরিণতি হ'ল কোনও ফাইল দ্বারা দখল করা স্থানটি কেবলমাত্র এটির ব্যবহারের শেষ প্রক্রিয়াটি বন্ধ হয়ে গেলেই পুনরুদ্ধার করা যায়। এটি লিনাক্স / ইউনিক্স ফাইল সিস্টেম অপারেশনগুলির জন্য একটি FAQ: "'df' কমান্ড বলছে পার্টিশনটি পূর্ণ, যখন 'du' মুক্ত স্থানের রিপোর্ট করে" (উদাহরণস্বরূপ দেখুন http://batleth.sapienti-sat.org/projects/FAQs/ext3- FAQ.html )। আপনার যদি স্থান ফাঁকা করার দরকার হয় তবে এটি বড় ফাইল মুছে ফেলার জন্য যথেষ্ট নয় (যেমন লগফাইলস), আপনাকে অবশ্যই নিশ্চিত করতে হবে যে কোনও প্রক্রিয়া তাদের খোলা রাখে না (সাধারণত লগফাইলে সমস্যা)।


ওএস এক্স / এইচএফএস + এর ক্ষেত্রে সত্য নয়: আপনি ফাইলগুলি যেমন ট্র্যাশে স্থানান্তর করতে পারেন তবে পার্টিশন জুড়ে বা এগুলি মুছতে পারবেন না (যেমন ট্র্যাশ খালি করে)।
ড্যানিয়েল অঙ্গুলিনির্দেশ

2

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

এছাড়াও, ফাইলটি সরানোর সাথে - যদি এটি একই ফাইলসিস্টেমের মধ্যে থাকে - তবে ফাইলটি আসলে এরূপ সরে না, এটি কেবলমাত্র পয়েন্টারটিকে ফাইলের ডিরেক্টরিতে পরিবর্তন করে।


"ফাইলটি রেফারেন্সের একটি তালিকা বজায় রাখে"?
ড্যানিয়েল অঙ্গুলিনির্দেশ

ফাইল না হয়ে "ওএস বা এক্সপ্লোরার" হওয়া উচিত।
মোয়াব

2
এটি আসলে ফাইল-সিস্টেম হবে।
জে রবার্ট

ওএস ফাইলের রেফারেন্সগুলি ফাইলের জন্য ফাইল সিস্টেম ব্যবহার করে (ফাইলের শিরোনামের কাঠামোর মধ্যে nlinks) - সেখানে - আমরা সবাই খুশি;)
মাজেনকো

1
"রেফারেন্স" উভয় প্রক্রিয়া ফাইলের ওপেন হ্যান্ডেল এবং ফাইলের হার্ড লিঙ্ক (প্রথম ফাইলের নাম সহ) সহ with ডেটা ব্লকগুলি নিখরচায় চিহ্নিত করা হয়নি এবং রেফারেন্স গণনা শূন্য না হওয়া পর্যন্ত পুনরায় ব্যবহারের জন্য উপলব্ধ।
এমপিজেড 0

0

ইউনিক্স ফাইল সিস্টেমে কোনও ফাইলে এর এক বা একাধিক হার্ড লিঙ্ক থাকতে পারে। ফাইলটি যতক্ষণ না অন্তত একটি থাকে ততক্ষণ বেঁচে থাকে। যখন সর্বশেষটি সরিয়ে ফেলা হয় তখন ফাইলটির স্থান মুক্ত হয়। উপরের লিঙ্কটি আপনাকে আরও পড়ার প্রাথমিক সূচনা দেবে - বিশেষত "লিঙ্ক কাউন্টার" বিভাগটি দেখুন।


1
সত্য, তবে এখানে যা ঘটছে তা তা নয়। বিন্দু যে পরও গত hardlink মুছে ফেলা হবে , সমস্ত pocesses পর্যন্ত ফাইল এখনও থাকার বিষয়টি মতেই তাদের কাছে তাদের হ্যান্ডলগুলি বন্ধ করেছেন।
সলেসকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.