কোনও ফাইল একটি হার্ড লিঙ্ক বা প্রতীকী লিঙ্ক কিনা তা নির্ধারণ করা হচ্ছে?


51

আমি একটি শেল স্ক্রিপ্ট তৈরি করছি যা কোনও ফাইলের একটি ফাইল নাম / পাথ নিয়ে যাবে এবং ফাইলটি প্রতীকী লিঙ্ক বা হার্ড লিঙ্ক কিনা তা নির্ধারণ করবে।

একমাত্র জিনিস, আমি জানি না যে তারা কীভাবে একটি سخت লিঙ্ক আছে তা কীভাবে দেখতে হবে। পরীক্ষার ফাইল হিসাবে ব্যবহার করার জন্য আমি 2 টি ফাইল, একটি হার্ড লিঙ্ক এবং একটিতে প্রতীকী লিঙ্ক তৈরি করেছি। তবে আমি কীভাবে নির্ধারণ করব যে কোনও ফাইল কোনও শেল স্ক্রিপ্টের মধ্যে একটি হার্ড লিঙ্ক বা প্রতীকী?

এছাড়াও, আমি কীভাবে প্রতীকী লিঙ্কটির গন্তব্য বিভাজনটি খুঁজে পাব? সুতরাং আসুন আমি বলি যে আমার কাছে একটি ফাইল রয়েছে যা একটি পৃথক বিভাজনের সাথে লিঙ্ক করে, আমি কীভাবে সেই মূল ফাইলটির পথ খুঁজে পাব?


16
হার্ড লিঙ্ক বলতে কী বোঝ? সমস্ত ফাইল হার্ড লিঙ্ক।
টেরডন

1
@ ইটারডন ln /foo/bar/ /foo/bar2একটি সিমিলিংক তৈরি করার সময় একটি হার্ডলিঙ্ক তৈরি করে ln -s /foo/bar /foo/bar2, তার অর্থ কী?
ডিসপ্লেনেম

14
@ ডিসপ্লেনাম হ্যাঁ, তবে সমস্ত ফাইলই তাদের ইনোডের হার্ড লিঙ্ক। লিনাক্স ফাইল সিস্টেমগুলি এভাবেই কাজ করে। আপনার উদাহরণে bar2এবং barদুটোই শক্ত লিঙ্ক, কেবল একই ইনোডের দিকে নির্দেশ করছে।
টেরডন

10
@DisplayName হ্যাঁ, তারা অন্যান্য কঠিন লিঙ্ক inodes । এখানে কোনও দ্বন্দ্ব নেই। একটি ফাইল একটি ইনোডের লিঙ্ক। এটি একটি ফাইলের সংজ্ঞা। আপনার ক্ষেত্রে, আপনার এই লিঙ্কগুলি বিভিন্ন জায়গায় রয়েছে তবে এটি অন্তর্নিহিত ডেটা কাঠামোকে পরিবর্তন করে না। আমার বক্তব্যটি উভয়ই barএবং bar2সমানভাবে গুরুত্বপূর্ণ। একটি অন্যের লিঙ্ক নয়, তারা উভয় লিঙ্ক কিন্তু একই ইনোডের দিকে নির্দেশ করে point
টেরডন

3
@ স্কট নো, আমি বলছি যে নিয়মিত ফাইলগুলি হার্ডলিঙ্ক এবং এর দ্বারা নির্মিত হার্ডলিঙ্কগুলি lnনিয়মিত ফাইলগুলির চেয়ে আলাদা নয়।
টেরডন

উত্তর:


42

জিমের উত্তর ব্যাখ্যা করে যে কীভাবে একটি সিমিলিংকের পরীক্ষা করা যায়: testএর -Lপরীক্ষা ব্যবহার করে ।

তবে একটি "হার্ড লিঙ্ক" এর জন্য পরীক্ষা করা ভাল, আপনি যা চান তা দৃ strictly়ভাবে বলছে না। ইউনিক্স কীভাবে ফাইল পরিচালনা করে তার জন্য হার্ড লিঙ্কগুলি কাজ করে: প্রতিটি ফাইল একক ইনোড দ্বারা উপস্থাপন করা হয়। তারপরে একটি একক ইনোডে শূন্য বা আরও বেশি নাম বা ডিরেক্টরিতে প্রবেশ বা প্রযুক্তিগতভাবে, হার্ড লিঙ্কগুলি (যা আপনি "ফাইল" বলছেন) থাকে।

ধন্যবাদ, statকমান্ডটি যেখানে পাওয়া যায় তা আপনাকে জানাতে পারে একটি ইনোডের কত নাম রয়েছে।

সুতরাং আপনি এর মতো কিছু খুঁজছেন (এখানে জিএনইউ বা ব্যস্তবক্সের বাস্তবায়ন অনুমান করে stat):

if [ "$(stat -c %h -- "$file")" -gt 1 ]; then
    echo "File has more than one name."
fi

-c '%h'বিটটি কেবল statইনোডে হার্ডলিঙ্কগুলির সংখ্যা আউটপুট করতে বলে , অর্থাৎ ফাইলটির নামের সংখ্যা of -gt 1তারপরে এটি 1 এর চেয়ে বেশি কিনা তা পরীক্ষা করে দেখুন।

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


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

@ কে-রকার হ্যাঁ। তারপরে পার্টিশনের কোথাও এটির দ্বিতীয় নাম রয়েছে।
ডারোবার্ট

1
ওএস এক্স বা * বিএসডি-তে, এটি stat -f %l /path/to/file। আপনি gstat -c %h /path/to/fileযদি জিএনইউ কোর্টিলগুলি তাদের ডিফল্ট নাম ছাড়া (ওএস এক্সে হোমব্রু দিয়ে) ইনস্টল করে থাকেন তবে আপনিও ব্যবহার করতে পারেন।
জিডিপি 2

29

একটি উদাহরণ:

$ touch f1
$ ln f1 f2
$ ln f1 f3
$ ln -s f1 s1
$ ln -s f2 s2
$ ln -s ./././f3 s3
$ ln -s s3 s4
$ ln s4 s5
$ ls -li
total 0
10802124 -rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 f1
10802124 -rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 f2
10802124 -rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 f3
10802345 lrwxrwxrwx 1 stephane stephane 2 Nov 12 19:56 s1 -> f1
10802346 lrwxrwxrwx 1 stephane stephane 2 Nov 12 19:56 s2 -> f2
10802347 lrwxrwxrwx 1 stephane stephane 8 Nov 12 19:56 s3 -> ./././f3
10802384 lrwxrwxrwx 2 stephane stephane 2 Nov 12 19:56 s4 -> s3
10802384 lrwxrwxrwx 2 stephane stephane 2 Nov 12 19:56 s5 -> s3

f1, f2এবং f3ডিরেক্টরির এন্ট্রি একই ফাইল (একই inode: 10802124, আপনি সংখ্যা বিজ্ঞপ্তি পাবেন হয় সংযোগগুলি 3)। তারা একই নিয়মিত ফাইলের হার্ড লিঙ্ক ।

s4এবং s5একই ফাইল (10802384)। এগুলি টাইপ সিমলিংক , নিয়মিত নয় । তারা এখানে একটি পথ দেখায় s3। কারণ s4এবং s5একই ডিরেক্টরিতে এন্ট্রি s3হ'ল, উভয়ের জন্য একই ফাইলের (আপড 10802347 সহ একটি) আপেক্ষিক পথটি নির্দেশ করে।

আপনি যদি ls -Llএটি করেন তবে তা প্রতীক সমাধানের পরে ফাইলের তথ্য জানতে চাইবে:

$ ls -lLi
total 0
10802124 -rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 f1
10802124 -rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 f2
10802124 -rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 f3
10802124 -rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 s1
10802124 -rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 s2
10802124 -rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 s3
10802124 -rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 s4
10802124 -rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 s5

আপনি সেগুলি একই ফাইলের (10802124) সমাধান করেছেন resolve

কোনও ফাইলের সাথে একটি সিমলিংক রয়েছে কিনা তা আপনি পরীক্ষা করতে পারেন [ -L file ]। একইভাবে, আপনি পরীক্ষা করতে পারেন যে কোনও ফাইলের সাথে যদি নিয়মিত ফাইল থাকে [ -f file ]তবে তবে সেই ক্ষেত্রে, চেকটি সিমলিংকগুলি সমাধান করার পরে করা হয়।

হার্ডলিঙ্কগুলি কোনও প্রকারের ফাইল নয়, তারা কোনও ফাইলের (কোনও প্রকারের) জন্য আলাদা আলাদা নাম।


19

কমান্ডটির অপারেটরগুলি -hএবং ব্যবহার করে :-Ltest

-h file 
true if file is a symbolic link

-L file 
true if file is a symbolic link

http://www.mkssoftware.com/docs/man1/test.1.asp

এই এসও থ্রেড অনুসারে , তাদের একই আচরণ থাকলেও -Lপছন্দ হয়।


ঠিক আছে, তবে হার্ড লিঙ্কগুলির কি হবে? আমি পদক্ষেপটি পরীক্ষা করেছি, তবে হার্ড লিঙ্কগুলির কিছুই নেই। যদি -L মিথ্যা প্রত্যাবর্তন করে তবে এর অর্থ কি এটি একটি কঠিন লিঙ্ক? বা শুধু একটি নিয়মিত ফাইল?
কে-রকার

1
হার্ড লিঙ্কগুলি একই ভাগ করে inode। এছাড়াও, সফ্ট লিঙ্কগুলি lএর ls -lআউটপুটের শুরুতে একটি দেখায় ... আমি মনে করি আপনি সম্ভবত এই নিয়মগুলি একটি স্ক্রিপ্টে একসাথে রাখতে সক্ষম হবেন, এবং [[ -L file ]]আরও পরীক্ষা দিতে হবে যে প্রদত্ত ফাইলটি নরম বা শক্ত কিনা ।
jimm-cl

ঠিক আছে, এছাড়াও, আমি প্রতীকী লিঙ্কের গন্তব্য বিভাজনটি কীভাবে খুঁজে পাব?
কে-রকার

3

এখানে বেশ কয়েকটি সঠিক উত্তর রয়েছে তবে আমি মনে করি না যে কেউ প্রকৃত ভুল ধারণাটি সত্যিই মোকাবেলা করেছে। মূল প্রশ্নটি মূলত "যখন আমি একটি প্রতীকী লিঙ্ক তৈরি করি তখন এটির পরে এটি সনাক্ত করা সহজ But তবে কোনও হার্ড লিঙ্কটি কীভাবে চিহ্নিত করব তা আমি বুঝতে পারি না।" এবং হ্যাঁ, উত্তরগুলি মূলত "আপনি পারবেন না" এ সিদ্ধ হয়ে যায় এবং কেন বা কম-বেশি ব্যাখ্যা করে তবে কেউ তা স্বীকার করে বলে মনে হয় না, এটি সত্যই বিভ্রান্তিকর এবং অদ্ভুত।

আপনি যদি এই সমস্ত কিছু পড়ছেন এবং কী হচ্ছে তা বুঝতে পেরেছেন, তবে আপনি ভাল; আপনার আমার কিছুটা পড়ার দরকার নেই। আপনি যদি এখনও বিভ্রান্ত হন তবে চালিয়ে যান।

সত্যিই সংক্ষিপ্ত উত্তরটি হ'ল একটি হার্ড লিঙ্কটি আসলে কোনও লিঙ্ক নয়, প্রতীকী লিঙ্কটি যেভাবে নয়। এটি ডিরেক্টরি কাঠামোর একটি নতুন এন্ট্রি যা মূল ডিরেক্টরি এন্ট্রিটি করেছিল এমন একই গোছাটিকে নির্দেশ করে এবং একবার এটি তৈরি করার পরে এটি প্রথমটির মতো ঠিক 'বাস্তব' এবং বৈধ। আপনার ড্রাইভের প্রতিটি 'সাধারণ' ফাইলের কমপক্ষে একটি হার্ড লিঙ্ক রয়েছে; যে ছাড়া, আপনি এটি নেই দেখতে হবে কোনডিরেক্টরি, এবং এটি উল্লেখ করতে বা এটি ব্যবহার করতে অক্ষম হবে। সুতরাং আপনার কাছে যদি ফ্রেড. টেক্সট ফাইল থাকে এবং আপনি এর সাথে হার্ড উইলমা.টেক্সট এবং বার্নি টেক্সট লিঙ্ক করেন তবে তিনটি নাম (এবং ডিরেক্টরি এন্ট্রি) একই ফাইলটি উল্লেখ করে এবং সেগুলিও সমানভাবে বৈধ। ওএসের পক্ষে বলার কোনও উপায় নেই যে আপনি যখন আপনার পাঠ্য সম্পাদকটিতে "সংরক্ষণ করুন" টিপুন এবং অন্যগুলি "ln" কমান্ড দিয়ে তৈরি করা হয়েছিল তখন এন্ট্রিগুলির একটি তৈরি করা হয়েছিল।

অপারেটিং সিস্টেম নেই কতটি ভিন্ন এন্ট্রি একই ফাইল প্রতি নির্দেশ করা হয় ট্র্যাক রাখতে, যদিও আছে। আপনি যদি Wilma.txt মুছে ফেলেন, অবাক হওয়ার কিছু নেই যে আপনি নিজের ড্রাইভে কোনও স্থান খালি করবেন না। তবে আপনি যদি ফ্রেড.এসটিএসটি ('মূল' ফাইল) মুছে ফেলেন, আপনি এখনও আপনার ড্রাইভে কোনও স্থান খালি করতে পারবেন না, কারণ ড্রাইডের ডেটা যা ফ্রেড. টেক্সট নামে পরিচিত ছিল তা এখনও বার্নি টেক্সট। আপনি যখন সমস্ত ডিরেক্টরি এন্ট্রি মুছবেন কেবল তখনই ওএস ডিটা বরাদ্দ করবে যে ডেটা নিজেই দখল করে।

যদি বার্নি.টি.এস.টি.সি.টি একটি প্রতীকী লিঙ্ক হত , তবে ফ্রেড.এক্সটিএসটি মুছে ফেলা হলে স্থানটি বরাদ্দ হবে, এবং বার্নি.এক্সটিএসটি এখন একটি ভাঙা লিঙ্ক হবে। এছাড়াও, আপনি যদি একটি ফাইল সরিয়ে বা পুনরায় নামকরণ করেন যা প্রতীকী লিঙ্কটি এতে নির্দেশ করে, আপনি লিঙ্কটি ভেঙে দেবেন। তবে আপনি যে ডিরেক্টরি / ফাইলটি সেই ফাইল / ডেটার দিকে নির্দেশ করেন সেগুলি ভঙ্গ না করে আপনি হার্ড-লিঙ্ক করা ফাইলের সমস্ত নাম পরিবর্তন বা পুনরায় নামকরণ করতে পারেন, কারণ সেগুলি সমস্ত ডিরেক্টরি এন্ট্রি যা ড্রাইভের একই ব্লকের তথ্য উল্লেখ করে (ব্যবহার করে ইনডোড # ডেটা)।

[এটি দু'বছর পরে, এবং শেষ মুহূর্তটি আমাকে এক মিনিটের জন্য বিভ্রান্ত করেছিল , তাই আমি মনে করি আমি স্পষ্ট করব। আপনি যদি "mv ./Wilma.txt ../elsewhere/Betty.txt" টাইপ করেন তবে মনে হয় আপনি ফাইলটি সরিয়ে নিয়েছেন তবে বাস্তবে আপনি তা নন। আপনি যা করছেন তা হ'ল আপনার বর্তমান ডিরেক্টরি ডিরেক্টরি ডিরেক্টরি থেকে একটি লাইন আইটেম সরিয়ে ফেলা, "উইলমা.টেক্সট" নামটি যে ইনড ব্যবহার করে সন্ধান করা যেতে পারে সেই ডেটার সাথে যুক্ত #, "এবং ডিরেক্টরি ডিরেক্টরি ডিরেক্টরিতে একটি নতুন লাইন আইটেম যুক্ত করুন .. / অন্য কোথাও যে" বেটি. টেক্সট "নামটি ইনোডের মাধ্যমে পাওয়া যেতে পারে এমন ডেটার সাথে সম্পর্কিত #" ######## " এই কারণেই আপনি 2 গিগাবাইট ফাইল যত দ্রুত 2 কিলোবাইট ফাইল হিসাবে চালিয়ে যেতে পারেন, যতক্ষণ আপনি এগুলি একই ড্রাইভে অন্য স্থানে নিয়ে যাচ্ছেন as]

কারণ ওএস কতটি ভিন্ন ডিরেক্টরির এন্ট্রি ডাটা একই খণ্ড প্রতি নির্দেশ করা হয় ট্র্যাক রাখতে হয়েছে, আপনি করতে পারেন যদি একটি নির্দিষ্ট ফাইল হার্ড লিঙ্ক করা হয়েছে বলছি, যদিও আপনি নির্দিষ্ট জন্য বলতে পারে না যদি ডিরেক্টরির এন্ট্রি আপনি 'দেখছি' আসল 'এক বা না। একটি উপায় হ'ল "ls" কমান্ড, বিশেষত "ls -l" (এটি ড্যাশ পরে একটি ছোট ক্ষেত্রে এল)

পূর্বের উদাহরণ ধার করা ...

 -rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 f1

প্রথম অক্ষরটি ড্যাশ, সুতরাং এটি কোনও ডিরেক্টরি বা বিদেশী কিছু নয়, এটি একটি 'নিয়মিত' সাধারণ ফাইল। তবে যদি এটি সত্যই সাধারণ হয়, তবে rwx-ish অংশের পরে সেই সংখ্যাটি "1" হত, যেমনটি হিসাবে, "এখানে একটি ডিরেক্টরি এন্ট্রি রয়েছে যা এই ব্লকের ডেটাতে নির্দেশ করে।" তবে এটি হার্ড লিঙ্কগুলির প্রদর্শনের অংশ, সুতরাং পরিবর্তে এটি "3" বলে।

নোট করুন যে এটি সম্ভবত অদ্ভুত এবং রহস্যময় আচরণের দিকে পরিচালিত করতে পারে (যদি আপনি কঠোর লিঙ্কগুলির চারপাশে আপনার মাথাটি আবৃত না করেন, তবে তা)। আপনি যদি আপনার টেক্সট এডিটরটিতে ফ্রেড.এসটি টেক্সট খুলেন এবং কিছু পরিবর্তন করেন, আপনি কি উইলমা. টেক্সট এবং বার্নি টেক্সটে একই পরিবর্তন দেখতে পাবেন? হতে পারে. সম্ভবত। যদি আপনার পাঠ্য সম্পাদক সম্পাদনাটি মূল ফাইলটি খোলার মাধ্যমে পরিবর্তনগুলি সংরক্ষণ করে এবং এতে পরিবর্তনগুলি লিখে রাখে, তবে হ্যাঁ, তিনটি নামই একই (নতুন পরিবর্তিত) পাঠ্যে নির্দেশ করবে। তবে যদি আপনার পাঠ্য সম্পাদক একটি নতুন ফাইল তৈরি করে (ফ্রেড-নতুন-টেম্প। টেক্সট), এতে আপনার পরিবর্তিত সংস্করণটি লিখে ফ্রেড.এফটিএসটি মুছে ফেলেন, তারপরে ফ্রেড-টেক্সট-টেক্সটটির নামকরণ ফ্রেড টেক্সট, উইলমা এবং বার্নি নামকরণ করবে এখনও নতুন সংস্করণ নয়, মূল সংস্করণটির দিকে ইঙ্গিত করুন। আপনি যদি হার্ড লিঙ্কগুলি বুঝতে না পারেন তবে এটি আপনাকে সামান্য উন্মাদিত করতে পারে। :) [ঠিক আছে, আমি ব্যক্তিগতভাবে কারও সম্পর্কে জানি নাপাঠ্য সম্পাদকগণ যা নতুন ফাইল / নাম বদলে জিনিসটি করতে পারে তবে আমি প্রচুর অন্যান্য প্রোগ্রামগুলি জানি যা ঠিক তা করে, তাই সতর্ক থাকুন]]

একটি চূড়ান্ত নোট: 'fsck' (ফাইল সিস্টেম চেক) যে জিনিসগুলির জন্য যাচাই করে সেগুলির মধ্যে একটি হ'ল যদি আপনার ড্রাইভে এমন কোনও ডেটা ব্লক থাকে যে কোনওভাবে কোনও ডিরেক্টরি এন্ট্রি দ্বারা রেফারেন্স করা না হয়। কখনও কখনও কিছু ভুল হয়ে যায় এবং একমাত্র ডিরেক্টরি এন্ট্রি যা একটি ইনোডকে নির্দেশ করে তা মুছে ফেলা হয় তবে ড্রাইভের স্থানটি "উপলভ্য" হিসাবে চিহ্নিত হয় না। সুতরাং fsck এর কাজগুলির মধ্যে একটি হ'ল নির্ধারিত ফাইলগুলি নেই কিনা তা নিশ্চিত করার জন্য সমস্ত ডিরেক্টরি এন্ট্রি সহ সমস্ত বরাদ্দ স্থানের সাথে মেলে। যদি এটি কিছু খুঁজে পায় তবে এটি নতুন ডিরেক্টরি এন্ট্রি তৈরি করে এবং এটিকে "হারিয়ে যাওয়া + পাওয়া" এ দেয়।


শুধু ভাবছি, সেগুলি কী "অন্যান্য প্রোগ্রামগুলি ঠিক এটি করে"?
phk

@ পিএফকে জানেন না যে তিনি বিশেষত কী সম্পর্কে চিন্তাভাবনা করছেন, তবে ক্রিয়াগুলি করার জন্য এটি একটি সাধারণ পর্যাপ্ত পদ্ধতি যা দীর্ঘ সময় নিতে পারে এবং যদি ব্যর্থ হয় তবে আপনাকে একটি অনিশ্চিত অবস্থায় ফেলে দেবে। উদাহরণস্বরূপ, আপনি যদি কোনও রিমোট সার্ভার থেকে ডাউনলোড করার চেষ্টা করেন এবং আপনি জানেন যে সার্ভারের সময়সীমা শেষ হওয়ার সম্ভাবনা রয়েছে, তবে একটি পদ্ধতির মাধ্যমে টেম্পল ফাইলটিতে সম্পূর্ণ সামগ্রীগুলি ডাউনলোড করা হবে। ডাউনলোডের সাথে যদি কিছু ভুল হয়ে যায় তবে আপনার কাছে এখনও মূল ফাইলটি রয়েছে।
cwallenpoole

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

2

আপনি ব্যবহার করতে পারেন readlink FILE; echo $?। এটি যখন হার্ডলিঙ্ক হয় তখন 1 এবং এটি যখন একটি সিমলিংক হয় তখন 0 প্রদান করে।

ম্যান পৃষ্ঠা থেকে: "যখন রিডলিঙ্ক হিসাবে আহ্বান করা হয় তখন কেবল প্রতীকী লিঙ্কের লক্ষ্যটিই মুদ্রিত হয় given

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